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

[Mobile] Link picker via fetch #23922

Merged

Conversation

mkevins
Copy link
Contributor

@mkevins mkevins commented Jul 14, 2020

Related PRs

gutenberg-mobile: wordpress-mobile/gutenberg-mobile#2484
WordPress-Android: wordpress-mobile/WordPress-Android#12438
WordPress-iOS: wordpress-mobile/WordPress-iOS#14537

Details

This is a PR to produce a test apk for design review of the link picker feature.

To test:
Follow testing steps here: wordpress-mobile/gutenberg-mobile#2484 (comment)

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.

@mkevins mkevins added [Type] Enhancement A suggestion for improvement. [Status] In Progress Tracking issues with work in progress Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) [Feature] Link Editing Link components (LinkControl, URLInput) and integrations (RichText link formatting) labels Jul 14, 2020
@github-actions
Copy link

github-actions bot commented Jul 14, 2020

Size Change: +207 B (0%)

Total Size: 1.2 MB

Filename Size Change
build/annotations/index.js 3.67 kB +2 B (0%)
build/api-fetch/index.js 3.41 kB +1 B
build/block-directory/index.js 8.53 kB +2 B (0%)
build/block-editor/index.js 128 kB -5 B (0%)
build/block-library/index.js 135 kB -1 B
build/block-serialization-default-parser/index.js 1.88 kB -1 B
build/blocks/index.js 47.8 kB -2 B (0%)
build/components/index.js 202 kB +67 B (0%)
build/core-data/index.js 12.2 kB -1 B
build/data/index.js 8.55 kB +1 B
build/deprecated/index.js 771 B -1 B
build/dom/index.js 4.48 kB +2 B (0%)
build/edit-navigation/index.js 10.7 kB +1 B
build/edit-post/index.js 305 kB +2 B (0%)
build/edit-widgets/index.js 16.6 kB -1 B
build/editor/index.js 45.5 kB +148 B (0%)
build/is-shallow-equal/index.js 710 B -1 B
build/keyboard-shortcuts/index.js 2.52 kB -1 B
build/media-utils/index.js 5.32 kB +1 B
build/notices/index.js 1.79 kB -3 B (0%)
build/nux/index.js 3.4 kB -2 B (0%)
build/plugins/index.js 2.56 kB -2 B (0%)
build/redux-routine/index.js 2.85 kB -2 B (0%)
build/rich-text/index.js 13.9 kB +1 B
build/shortcode/index.js 1.7 kB +1 B
build/url/index.js 4.06 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.59 kB 0 B
build/block-library/editor.css 8.59 kB 0 B
build/block-library/style-rtl.css 7.6 kB 0 B
build/block-library/style.css 7.59 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/data-controls/index.js 1.28 kB 0 B
build/date/index.js 31.9 kB 0 B
build/dom-ready/index.js 568 B 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/style-rtl.css 6.23 kB 0 B
build/edit-post/style.css 6.22 kB 0 B
build/edit-site/index.js 19.3 kB 0 B
build/edit-site/style-rtl.css 3.26 kB 0 B
build/edit-site/style.css 3.26 kB 0 B
build/edit-widgets/style-rtl.css 2.75 kB 0 B
build/edit-widgets/style.css 2.75 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.8 kB 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 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.57 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 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/token-list/index.js 1.27 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

@geriux geriux self-requested a review July 22, 2020 10:01
@geriux geriux self-requested a review September 14, 2020 09:16
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.

Looking good! Nice work to all involved in this feature!

Just left a small comment.

I do have one question regarding the behavior on an iPad. Should the bottom sheet reach the top? or have some sort of max height?

Screenshot 2020-09-15 at 15 42 06

cc @iamthomasbishop

Edit: Well actually I just noticed I had the keyboard hidden so when it's visible it doesn't look that big of a space =D

@iamthomasbishop
Copy link

@geriux great catch! I had missed this because I mostly use landscape when on iPad (usually w/ a hardware keyboard) so this is a good reminder to test in portrait more often 😄 ). I agree the height is a bit awkward, but I don't think it's necessarily just a matter of applying a max-height (although that would probably help). I think we should attack this across the board, for tall sheets like in the editor, not necessarily in this specific work (unless y'all think it's an easy-enough fix to include here, of course). In terms of solution, I think we should do something similar to iOS' standard modal sheets, which use following general rules (on tablet):

  • Max-height (probably 100% minus some margins on top/bottom, to account for StatusBar and HomeIndicator, other safe areas, provide breathing room, etc.)
  • Sheet is centered vertically
  • Content container is scrollable

Examples:

Landscape Portrait

@geriux
Copy link
Member

geriux commented Sep 16, 2020

I think we should attack this across the board, for tall sheets like in the editor, not necessarily in this specific work (unless y'all think it's an easy-enough fix to include here, of course)

Hey @iamthomasbishop! Thanks for giving examples of a better UI using modal sheets for iPad! Since that involves a bit more work/investigation and it's not entirely related to this PR let's work on it as a separate task and move forward as it is now.

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! Awesome work everyone! 👏

@lukewalczak
Copy link
Member

I think we should attack this across the board, for tall sheets like in the editor, not necessarily in this specific work (unless y'all think it's an easy-enough fix to include here, of course)

Thanks for the suggestion! I've created an issue to track it.

Copy link
Contributor

@ecgan ecgan left a comment

Choose a reason for hiding this comment

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

👋 Hi! Via #49900 (comment), I found that there is a missing dependency in a useSelect usage in this PR. I'm not a mobile developer, I'm thinking maybe one of you is in a better position to help fix and test this issue.

return {
fetchMoreSuggestions: debounce( fetchMore, REQUEST_DEBOUNCE_DELAY ),
};
}, [] );
Copy link
Contributor

Choose a reason for hiding this comment

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

hasAllSuggestions should be in the useSelect dependency array.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the comment ecgan 👍

It's been a while since I've worked with this code / codebase - but I wonder if simply adding hasAllSuggestions to the array might introduce some kind of regression 🤔 . Since fetchMoreSuggestions is used in the reset useEffect, and is currently expected to be stable, it may need to be added there as well - though I'm not entirely sure off-hand if that can lead to any issues, since the function is debounced (e.g. will this break debouncing in some cases?)

If this is to satisfy a new lint error, and is blocking that work, maybe the simplest solution is adding an ignore - otherwise, this would need further testing in a mobile build to ensure it doesn't introduce regressions, imo.

Copy link
Contributor

Choose a reason for hiding this comment

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

@mkevins , thanks for getting back to me. 🙏

I wonder if simply adding hasAllSuggestions to the array might introduce some kind of regression 🤔 .

Yes, that's the same concern I have too.

maybe the simplest solution is adding an ignore

Yeah, I think we can do that. I have just done that in #49900 (comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Link Editing Link components (LinkControl, URLInput) and integrations (RichText link formatting) Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants