Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blocks: Avoid separate host matching constant for embeds #13755

Merged
merged 2 commits into from
Jun 4, 2020

Conversation

aduth
Copy link
Member

@aduth aduth commented Feb 7, 2019

This pull request seeks to refactor how we consider non-previewable hosts to avoid the need to maintain a list of host names which are separate from the settings definitions of the blocks on which they act. The changes here assign previewable as a property of the Facebook and SmugMug embed blocks. This also helps reduce redundancy between the host names and pattern matching of a block, since the former had forced the implementation of hostname normalization which otherwise wouldn't be necessary when relying on the existing patterns matching. It is also consistent with other embed-specific behaviors (e.g. responsive) being assigned in core-embeds.js.

An interesting consequence of the fact that these were maintained separately is that the pattern for SmugMug URLs was inaccurate since it didn't capture subdomains (and likewise did not match the equivalent pattern defined in PHP). Thus, it was not being transformed to the "SmugMug" embed variant. It became obvious there was an issue when testing a SmugMug URL had initially regressed the issue described in #11960. This was then fixed in ea10e03.

Testing instructions:

Verify that embeds preview or don't preview, depending on whether the embed type can support previews:

Previewable example:

Non-previewable examples:

@aduth aduth added [Type] Code Quality Issues or PRs that relate to code quality [Package] Block library /packages/block-library [Block] Embed Affects the Embed Block labels Feb 7, 2019
className,
icon,
label,
} ) {
const { scripts } = preview;

const html = 'photo' === type ? getPhotoHtml( preview ) : preview.html;
const parsedHost = parse( url ).host.split( '.' );
const parsedHostBaseUrl = parsedHost.splice( parsedHost.length - 2, parsedHost.length - 1 ).join( '.' );
Copy link
Member Author

@aduth aduth Feb 7, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My original hope was to remove this logic, as a concern I noted at #12961 in trying to undertake the task described at #13386. I wonder if there's any reason we ought not use the title property of the embed in place (or at least as preferred to) the parsed host name of the URL, e.g. "Embedded content from Facebook" rather than "Embedded content from facebook.com".

(Note: Regardless, I'd consider this a separate task outside the scope of the pull request)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that the title would be good, then the url parsing logic can be removed entirely. If you look at #13691 the title is actually what was preferred.

I do want to make sure that #13691 still gets addressed, is that something I can add to your branch here, or would it be better to wait till this is in master and then rebase #13715 over the top of it?

Still learning the ropes here and don't want to make things difficult for reviewers.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do want to make sure that #13691 still gets addressed, is that something I can add to your branch here, or would it be better to wait till this is in master and then rebase #13715 over the top of it?

I'd prefer to keep each pull request independent, hence why I'd considered any other changes to be made following this one. So, to your point, rebasing when and if necessary would be preferred. Looking at your changes from #13715 and considering I'm not yet making any changes to parsedHostBaseUrl, I suspect you shouldn't encounter any merge conflicts though.

@notnownikki
Copy link
Member

Insomnia induced mini-review: yes, this totally a step in the right direction, should never have been based on domains. Will look deeper into the code on Monday. Thank you for this!

@gziolo gziolo added this to the 5.1 (Gutenberg) milestone Feb 8, 2019
@gziolo gziolo added the Good First Review A PR that's suitable for someone looking to contribute for the first time by reviewing code label Mar 8, 2019
@youknowriad youknowriad removed this from the 5.3 (Gutenberg) milestone Mar 18, 2019
@ZebulanStanphill
Copy link
Member

What is the status of this PR?

@aduth
Copy link
Member Author

aduth commented Dec 4, 2019

@ZebulanStanphill It's been some time since I looked at this, but as far as I can recall, it was simply waiting for a review. By now, it'll need to be rebased though.

Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems like it's still a good approach. Can we just rebase and land.

@youknowriad
Copy link
Contributor

@aduth do you remember if there was anything blocking this PR?

@aduth
Copy link
Member Author

aduth commented Jun 4, 2020

I don't believe so. I know that the embed pattern for SmugMug was updated separately in #21744. I can see about giving this one a refresh.

@aduth aduth force-pushed the remove/embed-host-matching branch from ea10e03 to 93f6044 Compare June 4, 2020 12:25
@github-actions
Copy link

github-actions bot commented Jun 4, 2020

Size Change: +3 B (0%)

Total Size: 1.12 MB

Filename Size Change
build/block-library/index.js 126 kB +17 B (0%)
build/compose/index.js 9.31 kB -14 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.75 kB 0 B
build/block-directory/style-rtl.css 892 B 0 B
build/block-directory/style.css 892 B 0 B
build/block-editor/index.js 106 kB 0 B
build/block-editor/style-rtl.css 11.4 kB 0 B
build/block-editor/style.css 11.4 kB 0 B
build/block-library/editor-rtl.css 7.87 kB 0 B
build/block-library/editor.css 7.88 kB 0 B
build/block-library/style-rtl.css 7.69 kB 0 B
build/block-library/style.css 7.68 kB 0 B
build/block-library/theme-rtl.css 684 B 0 B
build/block-library/theme.css 686 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.2 kB 0 B
build/components/index.js 193 kB 0 B
build/components/style-rtl.css 19.5 kB 0 B
build/components/style.css 19.5 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.46 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 771 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.11 kB 0 B
build/edit-navigation/index.js 8.25 kB 0 B
build/edit-navigation/style-rtl.css 878 B 0 B
build/edit-navigation/style.css 876 B 0 B
build/edit-post/index.js 302 kB 0 B
build/edit-post/style-rtl.css 5.43 kB 0 B
build/edit-post/style.css 5.43 kB 0 B
build/edit-site/index.js 15 kB 0 B
build/edit-site/style-rtl.css 2.96 kB 0 B
build/edit-site/style.css 2.96 kB 0 B
build/edit-widgets/index.js 8.83 kB 0 B
build/edit-widgets/style-rtl.css 2.4 kB 0 B
build/edit-widgets/style.css 2.4 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.7 kB 0 B
build/editor/style-rtl.css 4.26 kB 0 B
build/editor/style.css 4.27 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.72 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.3 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@aduth aduth merged commit b2ec648 into master Jun 4, 2020
@aduth aduth deleted the remove/embed-host-matching branch June 4, 2020 14:46
@github-actions github-actions bot added this to the Gutenberg 8.3 milestone Jun 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Embed Affects the Embed Block Good First Review A PR that's suitable for someone looking to contribute for the first time by reviewing code [Package] Block library /packages/block-library [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants