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

Add isFileURL method and use it on all native media upload checks. #20985

Merged
merged 4 commits into from
Mar 19, 2020

Conversation

SergioEstevao
Copy link
Contributor

@SergioEstevao SergioEstevao commented Mar 18, 2020

Description

This PR updates the mobile native code instances where the method isURL was being used to check if URL were local URLs (i.e: file urls like: file:https:///folder/file.txt)

This PR adds a method to check for file URLs, isFileURL, and updates media uploading code to use this method instead of !isURL(...)

This PR replaces the uses of isURL to check for file URLs, and uses getProtocol(url) === ':file' instead.

How has this been tested?

Unit tests were added to check the new method.

This can be tested using this mobile GB PR:

Screenshots

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@SergioEstevao SergioEstevao added the Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) label Mar 18, 2020
@github-actions
Copy link

github-actions bot commented Mar 18, 2020

Size Change: +518 B (0%)

Total Size: 857 kB

Filename Size Change
build/block-editor/index.js 100 kB +61 B (0%)
build/block-library/index.js 111 kB +2 B (0%)
build/block-serialization-default-parser/index.js 1.65 kB +1 B
build/blocks/index.js 57.5 kB -1 B
build/compose/index.js 6.21 kB +2 B (0%)
build/core-data/index.js 10.6 kB -2 B (0%)
build/data/index.js 8.2 kB +1 B
build/deprecated/index.js 771 B -1 B
build/edit-post/index.js 91.2 kB -57 B (0%)
build/edit-site/index.js 5.56 kB +492 B (8%) 🔍
build/edit-site/style-rtl.css 2.62 kB +95 B (3%)
build/edit-site/style.css 2.62 kB +95 B (3%)
build/edit-widgets/index.js 4.43 kB +4 B (0%)
build/editor/index.js 43.8 kB -150 B (0%)
build/element/index.js 4.44 kB -13 B (0%)
build/format-library/index.js 6.95 kB -4 B (0%)
build/i18n/index.js 3.49 kB +1 B
build/is-shallow-equal/index.js 711 B +1 B
build/keyboard-shortcuts/index.js 2.3 kB -1 B
build/keycodes/index.js 1.69 kB +1 B
build/list-reusable-blocks/index.js 2.99 kB -1 B
build/media-utils/index.js 4.83 kB -3 B (0%)
build/redux-routine/index.js 2.83 kB -3 B (0%)
build/rich-text/index.js 14.3 kB -2 B (0%)
build/url/index.js 4.01 kB -1 B
build/viewport/index.js 1.61 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 998 B 0 B
build/annotations/index.js 3.43 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.02 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/editor-rtl.css 7.23 kB 0 B
build/block-library/editor.css 7.24 kB 0 B
build/block-library/style-rtl.css 7.42 kB 0 B
build/block-library/style.css 7.43 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/index.js 191 kB 0 B
build/components/style-rtl.css 15.7 kB 0 B
build/components/style.css 15.7 kB 0 B
build/data-controls/index.js 1.04 kB 0 B
build/date/index.js 5.37 kB 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-post/style-rtl.css 8.47 kB 0 B
build/edit-post/style.css 8.46 kB 0 B
build/edit-widgets/style-rtl.css 2.58 kB 0 B
build/edit-widgets/style.css 2.58 kB 0 B
build/editor/editor-styles-rtl.css 381 B 0 B
build/editor/editor-styles.css 382 B 0 B
build/editor/style-rtl.css 3.97 kB 0 B
build/editor/style.css 3.96 kB 0 B
build/escape-html/index.js 733 B 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 1.93 kB 0 B
build/html-entities/index.js 621 B 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/notices/index.js 1.58 kB 0 B
build/nux/index.js 3.01 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.54 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 780 B 0 B
build/server-side-render/index.js 2.55 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

* @return {boolean} Whether or not it looks like a file URL.
*/
export function isFileURL( url ) {
return url.startsWith( 'file:' );
Copy link
Member

Choose a reason for hiding this comment

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

I'm still testing, but I wonder if we will have a case where url is undefined. In some places we check the url exists before calling this but in some other places there aren't any checks. What do you think if we do:

Suggested change
return url.startsWith( 'file:' );
return url && url.startsWith( 'file:' );

Just to be safe =D

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch, I updated the code with that suggestion.

Copy link
Member

@geriux geriux left a comment

Choose a reason for hiding this comment

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

LGTM! 🎉

Tested retry options of Media & Text, Image, Video, and Gallery on both iOS and Android, also ran the tests locally and all ✅

packages/url/src/is-file-url.js Outdated Show resolved Hide resolved
@SergioEstevao
Copy link
Contributor Author

@geriux sorry about this but due to the latest changes can you please review this again, and test with the main apps?

Copy link
Member

@aduth aduth left a comment

Choose a reason for hiding this comment

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

I've not been able to test the impact this might have on the mobile application itself, but at least in addressing my previous concern and in understanding the problem to be that the mobile code previously relied upon a value of false from isURL as an indication that a URL is a file: URL, then the specific code revisions appear to be sensible, and furthermore bring some consistency even within the same file where these conditions are considered (replacing mixed conditions of url.startsWith( 'file:' ) and ! isURL( url ).

@geriux
Copy link
Member

geriux commented Mar 19, 2020

I've not been able to test the impact this might have on the mobile application itself, but at least in addressing my previous concern and in understanding the problem to be that the mobile code previously relied upon a value of false from isURL as an indication that a URL is a file: URL, then the specific code revisions appear to be sensible, and furthermore bring some consistency even within the same file where these conditions are considered (replacing mixed conditions of url.startsWith( 'file:' ) and ! isURL( url ).

Thanks for your feedback and review @aduth, that's why it's always good to have more than one reviewer =)

sorry about this but due to the latest changes can you please review this again, and test with the main apps?

Don't worry @SergioEstevao ! I'll start testing now 👍

@geriux
Copy link
Member

geriux commented Mar 19, 2020

Tested it again, the retry options of Media & Text, Image, Video, and Gallery on both iOS and Android and ✅

LGTM!

@SergioEstevao SergioEstevao merged commit bc5f55d into master Mar 19, 2020
@SergioEstevao SergioEstevao deleted the rnmobile/fix_check_for_file_urls2 branch March 19, 2020 10:37
@github-actions github-actions bot added this to the Gutenberg 7.8 milestone Mar 19, 2020
marecar3 pushed a commit that referenced this pull request Mar 19, 2020
…20985)

* Add isFileURL method and use it on all native media upload checks.

* Check if url is defined.

* Add test for undefined and fix lint error for isFileURL

* Replace isFileURL method for getProcotol == 'file' mettod
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants