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

[RNMobile] Add Reusable blocks to the inserter menu #28495

Merged
merged 101 commits into from
May 14, 2021

Conversation

fluiddot
Copy link
Contributor

@fluiddot fluiddot commented Jan 26, 2021

gutenberg-mobile PR: wordpress-mobile/gutenberg-mobile#3054

Description

Add support to insert existing Reusable blocks from the editor in the mobile version. For this purpose the inserter menu now shows two tabs in case this kind of blocks have been previously created in the site.

The Reusable tab will show a list of all created Reusable blocks of the site.

This PR also includes fixes for the following issues:

⚠️ Caveats

  • Until we add support for unbounded queries, the app only fetches the last 100 reusable blocks from the site so the inserter menu will show up to 100 items.
  • The search form takes into account the reusable blocks but I'd like to note that the feature is still WIP so it could change in the future.
    EDIT: The search form is only available in development mode for now.

How has this been tested?

I tested this feature in the three different scenarios:

WordPress.com site

Create a WordPress.com site or use an already created one.

  1. Create a post in the web version
  2. Add some blocks and create a Reusable block
  3. Open the app with metro running (Gutenberg-mobile)
  4. Add the WordPress.com site
  5. Create/edit a post/page
  6. Tap on the ➕ button to display the inserter menu
  7. Observe that 2 tabs are shown, one (first one to be presented) with the blocks and another one with reusable blocks
  8. Observe that there're no reusable blocks in the blocks tab
  9. Navigate to the reusable tab
  10. Observe that previously created reusable blocks are shown
  11. Tap on a reusable block
  12. Observe that the block has been inserted into the post and that is in the proper position
Self-hosted site with Jetpack

Create a self-hosted site with Jetpack (I used https://jurassic.ninja/create/) or use an already created one.

  1. Create a post in the web version
  2. Add some blocks and create a Reusable block
  3. Open the app with metro running (Gutenberg-mobile)
  4. Add the self-hosted site
  5. Create/edit a post/page
  6. Tap on the ➕ button to display the inserter menu
  7. Observe that 2 tabs are shown, one (first one to be presented) with the blocks and another one with reusable blocks
  8. Observe that there're no reusable blocks in the blocks tab
  9. Navigate to the reusable tab
  10. Observe that previously created reusable blocks are shown
  11. Tap on a reusable block
  12. Observe that the block has been inserted into the post and that is in the proper position
Self-hosted site without Jetpack

Create a self-hosted site without Jetpack (I created a local one using this instructions) or use your own.

  1. Create a post in the web version
  2. Add some blocks and create a Reusable block
  3. Open the app with metro running (Gutenberg-mobile)
  4. Add the self-hosted site
  5. Create/edit a post/page
  6. Tap on the ➕ button to display the inserter menu
  7. Observe that 2 tabs are shown, one (first one to be presented) with the blocks and another one with reusable blocks
  8. Observe that there're no reusable blocks in the blocks tab
  9. Navigate to the reusable tab
  10. Observe that previously created reusable blocks are shown
  11. Tap on a reusable block
  12. Observe that the block has been inserted into the post and that is in the proper position

Additional tests to prevent regressions

It's required to have some reusable blocks already created for the following additional tests.

Clipboard
  1. Copy a block
  2. Observe that the copied block is the first item when opening the inserter menu
  3. Navigate to the reusable tab
  4. Observe that it doesn't show the copied block
Insert block
  1. Tap on the ➕ button to display the inserter menu
  2. Tap on a block from the blocks tab
  3. Observe that the block has been inserted into the post and that is in the proper position
Inserter menu from Group block
  1. Add a Group block
  2. Tap on the appender button (➕ button within the block)
  3. Observe that the reusable tab is shown
  4. Tap on a block
  5. Tap on the appender button again (➕ button within the block)
  6. Navigate to the reusable tab
  7. Tap on a reusable block
  8. Observe that the reusable block is inserted as an inner block
Inserter menu from Social icons block
  1. Add a Social icons block
  2. Tap on the appender button (➕ button within the block)
  3. Observe that only allowed blocks are displayed
  4. Tap on a block
  5. Observe that the block is inserted as an inner block
Preserve the scroll-position
  1. Tap on the ➕ button to display the inserter menu
  2. Scroll down the content
  3. Navigate to the reusable tab
  4. Scroll down the content
  5. Navigate to the blocks tab
  6. Observe that the scroll on blocks tab is at the position as previously
  7. Navigate to the reusable tab
  8. Observe that the scroll on blocks tab is at the position as previously
Landscape mode
  1. Tap on the ➕ button to display the inserter menu
  2. Rotate the device to landscape mode
  3. Observe that the inserter menu and the blocks tab are displayed properly
  4. Navigate to the reusable tab
  5. Observe that the reusable tab is displayed properly
Swipe to close (bottom-sheet)
  1. Tap on the ➕ button to display the inserter menu
  2. Scroll down the content
  3. Scroll up to the top
  4. Observe that the bottom-sheet can be closed by swiping down
  5. Tap on the ➕ button to display the inserter menu
  6. Navigate to the reusable tab
  7. Scroll down the content
  8. Scroll up to the top
  9. Observe that the bottom-sheet can be closed by swiping down
Empty list of reusable blocks
  1. Remove all reusable blocks from the site (if they're trashed shouldn't be displayed)
  2. Tap on the ➕ button to display the inserter menu
  3. Observe that the reusable tab is not displayed

Screenshots

iOS Android
reusable-block-inserter-menu-ios.mp4
reusable-block-insterter-menu-android.mp4

Types of changes

New feature

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.

@fluiddot fluiddot 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 Jan 26, 2021
@fluiddot fluiddot self-assigned this Jan 26, 2021
@github-actions
Copy link

github-actions bot commented Jan 26, 2021

Size Change: +6 B (0%)

Total Size: 1.32 MB

Filename Size Change
build/edit-site/index.js 26.1 kB +5 B (0%)
build/editor/index.js 60.5 kB +1 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.11 kB 0 B
build/annotations/index.js 2.93 kB 0 B
build/api-fetch/index.js 2.42 kB 0 B
build/autop/index.js 2.28 kB 0 B
build/blob/index.js 672 B 0 B
build/block-directory/index.js 6.6 kB 0 B
build/block-directory/style-rtl.css 993 B 0 B
build/block-directory/style.css 995 B 0 B
build/block-editor/index.js 117 kB 0 B
build/block-editor/style-rtl.css 13 kB 0 B
build/block-editor/style.css 13 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 112 B 0 B
build/block-library/blocks/audio/style.css 112 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 601 B 0 B
build/block-library/blocks/button/style.css 600 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 375 B 0 B
build/block-library/blocks/buttons/style.css 375 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 422 B 0 B
build/block-library/blocks/columns/style.css 422 B 0 B
build/block-library/blocks/cover/editor-rtl.css 643 B 0 B
build/block-library/blocks/cover/editor.css 645 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB 0 B
build/block-library/blocks/cover/style.css 1.22 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 401 B 0 B
build/block-library/blocks/embed/style.css 400 B 0 B
build/block-library/blocks/file/editor-rtl.css 301 B 0 B
build/block-library/blocks/file/editor.css 300 B 0 B
build/block-library/blocks/file/frontend.js 772 B 0 B
build/block-library/blocks/file/style-rtl.css 255 B 0 B
build/block-library/blocks/file/style.css 255 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 704 B 0 B
build/block-library/blocks/gallery/editor.css 705 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.06 kB 0 B
build/block-library/blocks/gallery/style.css 1.05 kB 0 B
build/block-library/blocks/group/editor-rtl.css 160 B 0 B
build/block-library/blocks/group/editor.css 160 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/home-link/style-rtl.css 259 B 0 B
build/block-library/blocks/home-link/style.css 259 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 481 B 0 B
build/block-library/blocks/image/style.css 485 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 281 B 0 B
build/block-library/blocks/latest-comments/style.css 282 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/legacy-widget/editor-rtl.css 557 B 0 B
build/block-library/blocks/legacy-widget/editor.css 557 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 176 B 0 B
build/block-library/blocks/media-text/editor.css 176 B 0 B
build/block-library/blocks/media-text/style-rtl.css 492 B 0 B
build/block-library/blocks/media-text/style.css 489 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 617 B 0 B
build/block-library/blocks/navigation-link/editor.css 619 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B 0 B
build/block-library/blocks/navigation-link/style.css 94 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.52 kB 0 B
build/block-library/blocks/navigation/editor.css 1.52 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 1.71 kB 0 B
build/block-library/blocks/navigation/style.css 1.71 kB 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 239 B 0 B
build/block-library/blocks/page-list/editor.css 240 B 0 B
build/block-library/blocks/page-list/style-rtl.css 204 B 0 B
build/block-library/blocks/page-list/style.css 204 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B 0 B
build/block-library/blocks/paragraph/editor.css 157 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 247 B 0 B
build/block-library/blocks/paragraph/style.css 248 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B 0 B
build/block-library/blocks/post-comments-form/style.css 140 B 0 B
build/block-library/blocks/post-comments/style-rtl.css 360 B 0 B
build/block-library/blocks/post-comments/style.css 359 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B 0 B
build/block-library/blocks/post-excerpt/style.css 69 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 119 B 0 B
build/block-library/blocks/post-featured-image/style.css 119 B 0 B
build/block-library/blocks/post-title/style-rtl.css 60 B 0 B
build/block-library/blocks/post-title/style.css 60 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 103 B 0 B
build/block-library/blocks/preformatted/style.css 103 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 318 B 0 B
build/block-library/blocks/pullquote/style.css 318 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 83 B 0 B
build/block-library/blocks/query-loop/editor.css 82 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query-title/editor-rtl.css 86 B 0 B
build/block-library/blocks/query-title/editor.css 86 B 0 B
build/block-library/blocks/query/editor-rtl.css 131 B 0 B
build/block-library/blocks/query/editor.css 132 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 189 B 0 B
build/block-library/blocks/search/editor.css 189 B 0 B
build/block-library/blocks/search/style-rtl.css 359 B 0 B
build/block-library/blocks/search/style.css 362 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 251 B 0 B
build/block-library/blocks/separator/style.css 251 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 512 B 0 B
build/block-library/blocks/shortcode/editor.css 512 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 440 B 0 B
build/block-library/blocks/site-logo/editor.css 441 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 154 B 0 B
build/block-library/blocks/site-logo/style.css 154 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 796 B 0 B
build/block-library/blocks/social-links/editor.css 795 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB 0 B
build/block-library/blocks/social-links/style.css 1.33 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 308 B 0 B
build/block-library/blocks/spacer/editor.css 308 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 485 B 0 B
build/block-library/blocks/table/style.css 485 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 551 B 0 B
build/block-library/blocks/template-part/editor.css 550 B 0 B
build/block-library/blocks/term-description/editor-rtl.css 90 B 0 B
build/block-library/blocks/term-description/editor.css 90 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 569 B 0 B
build/block-library/blocks/video/editor.css 570 B 0 B
build/block-library/blocks/video/style-rtl.css 169 B 0 B
build/block-library/blocks/video/style.css 169 B 0 B
build/block-library/common-rtl.css 1.26 kB 0 B
build/block-library/common.css 1.26 kB 0 B
build/block-library/editor-rtl.css 9.84 kB 0 B
build/block-library/editor.css 9.83 kB 0 B
build/block-library/index.js 143 kB 0 B
build/block-library/reset-rtl.css 506 B 0 B
build/block-library/reset.css 507 B 0 B
build/block-library/style-rtl.css 10.1 kB 0 B
build/block-library/style.css 10.2 kB 0 B
build/block-library/theme-rtl.css 692 B 0 B
build/block-library/theme.css 693 B 0 B
build/block-serialization-default-parser/index.js 1.3 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 47 kB 0 B
build/components/index.js 188 kB 0 B
build/components/style-rtl.css 16.2 kB 0 B
build/components/style.css 16.2 kB 0 B
build/compose/index.js 9.92 kB 0 B
build/core-data/index.js 12.1 kB 0 B
build/customize-widgets/index.js 5.99 kB 0 B
build/customize-widgets/style-rtl.css 698 B 0 B
build/customize-widgets/style.css 699 B 0 B
build/data-controls/index.js 829 B 0 B
build/data/index.js 7.23 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 737 B 0 B
build/dom-ready/index.js 576 B 0 B
build/dom/index.js 4.62 kB 0 B
build/edit-navigation/index.js 13.7 kB 0 B
build/edit-navigation/style-rtl.css 2.83 kB 0 B
build/edit-navigation/style.css 2.83 kB 0 B
build/edit-post/classic-rtl.css 454 B 0 B
build/edit-post/classic.css 454 B 0 B
build/edit-post/index.js 333 kB 0 B
build/edit-post/style-rtl.css 6.79 kB 0 B
build/edit-post/style.css 6.78 kB 0 B
build/edit-site/style-rtl.css 4.79 kB 0 B
build/edit-site/style.css 4.78 kB 0 B
build/edit-widgets/index.js 12.6 kB 0 B
build/edit-widgets/style-rtl.css 3.02 kB 0 B
build/edit-widgets/style.css 3.03 kB 0 B
build/editor/style-rtl.css 3.95 kB 0 B
build/editor/style.css 3.95 kB 0 B
build/element/index.js 3.44 kB 0 B
build/escape-html/index.js 739 B 0 B
build/format-library/index.js 5.66 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 1.76 kB 0 B
build/html-entities/index.js 628 B 0 B
build/i18n/index.js 3.73 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 1.65 kB 0 B
build/keycodes/index.js 1.43 kB 0 B
build/list-reusable-blocks/index.js 2.06 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.js 3.08 kB 0 B
build/navigation/index.js 2.85 kB 0 B
build/notices/index.js 1.07 kB 0 B
build/nux/index.js 2.3 kB 0 B
build/nux/style-rtl.css 718 B 0 B
build/nux/style.css 716 B 0 B
build/plugins/index.js 2 kB 0 B
build/primitives/index.js 1.03 kB 0 B
build/priority-queue/index.js 791 B 0 B
build/react-i18n/index.js 924 B 0 B
build/redux-routine/index.js 2.82 kB 0 B
build/reusable-blocks/index.js 2.56 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/rich-text/index.js 10.7 kB 0 B
build/server-side-render/index.js 1.64 kB 0 B
build/shortcode/index.js 1.68 kB 0 B
build/token-list/index.js 848 B 0 B
build/url/index.js 1.95 kB 0 B
build/viewport/index.js 1.28 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/widgets/index.js 1.68 kB 0 B
build/wordcount/index.js 1.24 kB 0 B

compressed-size-action

</>
);
const getHeader = () =>
header || (
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This component only allowed a text as the header, this new prop header will allow us to add anything we might need to render in the header.

Base automatically changed from master to trunk March 1, 2021 15:45
Copy link
Contributor

@guarani guarani left a comment

Choose a reason for hiding this comment

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

I managed to reproduce it and I'm almost sure that it's produced by the network request caching on Android, actually, it happened on the three different types of sites. The TTL of the cache is 10 minutes so you should see the new reusable blocks after that time.

As this behavior is not ideal, my plan is to merge the PR that fixes it before we enable the reusable block and merge this one.

Sounds good 👍 Thanks for checking!


I came back to this today and tried it out on iOS, using the code from the Gutenberg Mobile PR, but after updating the submodule to point to the latest commit on this branch.

Changing the device orientation leads to layout issues

After opening the block picker and rotating to landscape orientation, the block picker shows both regular and reusable blocks, the content is cut-off, and the background dim on the right-side is missing. This same scenario on WPiOS develop doesn't seem to have this issue.

See screenshots
This branch Current WPiOS develop
Screen Shot 2021-05-10 at 21 30 56 Screen Shot 2021-05-10 at 21 34 52

Bottom sheet animates in from the left

The bottom sheet animates in from the bottom left whereas previously I think it animated in from bottom-center (recorded using Debug > Slow Animations in the simulator):

See screenshots
Screen Shot 2021-05-10 at 21 30 56

Bottom sheet animation between tabs shows a blank area

The animation when switching between tabs looked slightly different to what I expected and it looks like there's an empty "page" between the first and second tab. I expected the content to be just off-screen rather than have a whole bottom sheet page between the regular block tab and the reusable block tab.

See screenshots
Screen Shot 2021-05-10 at 21 30 56

I don't think the animation issues were present on Android when I checked last week, so they might be iOS-specific or due to recent changes. Also, I don't think the landscape issue was present on Android either.

I tested a WP.com and Atomic site, and everything is working well. If these issues I mention aren't blockers (e.g. they're not caused by changes in this PR), I'd be happy to have this merged.

@fluiddot
Copy link
Contributor Author

Thank you very much @guarani for the extensive review ❤️ !

I'm going to check all the issues you commented on and apply the potential fixes:

Changing the device orientation leads to layout issues

After opening the block picker and rotating to landscape orientation, the block picker shows both regular and reusable blocks, the content is cut-off, and the background dim on the right-side is missing. This same scenario on WPiOS develop doesn't seem to have this issue.

I managed to reproduce this issue in older commits from Gutenberg's trunk branch too so I'm not sure if this PR introduced it. However, looks like this only happens when testing in a simulator, I tried on a device and I couldn't reproduce it (check the following video recordings).

Video recordings (commit used: e442998)
iPhone 11 simulator iPhone 11 device
inserter-menu-orientation-iphone11-simulator.mp4
inserter-menu-orientation-iphone11-device.MP4

Bottom sheet animates in from the left

The bottom sheet animates in from the bottom left whereas previously I think it animated in from bottom-center (recorded using Debug > Slow Animations in the simulator):

I couldn't manage to reproduce this issue, in my case enabling Slow Animations in the simulator it's not really slowing down the inserter menu animation (see attached video recording) 🤔 . I'd appreciate it if you could share the steps you followed to reproduce it just in case I'm overlooking anything.

Video recording (iPad Pro 12.9-inch - 4th generation)
inserter-menu-open-animation-iPad.mp4

Bottom sheet animation between tabs shows a blank area

The animation when switching between tabs looked slightly different to what I expected and it looks like there's an empty "page" between the first and second tab. I expected the content to be just off-screen rather than have a whole bottom sheet page between the regular block tab and the reusable block tab.

Good catch! I realized that I was using the window width for positioning the tabs, which is wrong. I've updated the tabs and now I'm using the width of the wrapper so it shouldn't show a blank area, I added the change in this commit.

Video recordings
iPad Pro 12.9-inch - 4th generation iPhone 11
inserter-menu-tabs-animation-ipad.mp4
inserter-menu-tabs-animation-iphone11.mp4

I don't think the animation issues were present on Android when I checked last week, so they might be iOS-specific or due to recent changes. Also, I don't think the landscape issue was present on Android either.

Not sure, it could be caused by both actually although recent changes shouldn't have modified the behavior.

I tested a WP.com and Atomic site, and everything is working well. If these issues I mention aren't blockers (e.g. they're not caused by changes in this PR), I'd be happy to have this merged.

I'd say that they aren't critical blockers but I'd like to have them solved if possible, the third issue was caused by this PR so that one is already fixed. The others look like weren't introduced in this PR, as far as I checked, anyways I'd appreciate it if you could review my feedback just in case I'm overlooking anything.

@fluiddot fluiddot requested review from geriux and guarani May 12, 2021 12:09
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! I tested the different scenarios between iOS and Android. Nice work 👏

Copy link
Contributor

@guarani guarani left a comment

Choose a reason for hiding this comment

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

I managed to reproduce this issue in older commits from Gutenberg's trunk branch too so I'm not sure if this PR introduced it. However, looks like this only happens when testing in a simulator, I tried on a device and I couldn't reproduce it (check the following video recordings).

Thanks for checking, I tried again to reproduce but couldn't, so I think we can ignore this due to either being a simulator issue or an issue in trunk that was fixed.

I couldn't manage to reproduce this issue, in my case enabling Slow Animations in the simulator it's not really slowing down the inserter menu animation (see attached video recording) 🤔 . I'd appreciate it if you could share the steps you followed to reproduce it just in case I'm overlooking anything.

I'm sorry to say I this isn't working for me anymore 😅, I'm not sure what I did to make slow animations work on the bottom sheet.

Good catch! I realized that I was using the window width for positioning the tabs, which is wrong. I've updated the tabs and now I'm using the width of the wrapper so it shouldn't show a blank area, I added the change in this commit.

Thanks! I confirmed now this looks good.

I think this can be merged now, I've done the test scenarios myself and @geriux has code-reviewed I believe.

I take it the [DO NOT MERGE] in the PR title is no longer needed, unless there's something pending, I think this looks ready to merge! Thanks a lot for getting this done ❤️

@fluiddot
Copy link
Contributor Author

fluiddot commented May 13, 2021

I originally set the PR as not ready to merge because of this comment:

⚠️ Until the reusable block is enabled for all users by removing devFlag, we shouldn't merge this PR.

By the time I posted this comment, there was a blocker that I didn't know how much it would take to fix. Now the situation is different because the reusable block will only be available for WP.com sites and hopefully the PR that will enable them will be released soon as it's in review.

Being this said, I'll do a quick check just to assure that the reusable tab is not shown on self-hosted sites and if it works, I'll merge it.

Thank you very much @guarani and @geriux for the awesome review you did on this PR ❤️ !

@guarani
Copy link
Contributor

guarani commented May 13, 2021

Thanks for clarifying, @fluiddot. I'd missed that comment.

@fluiddot
Copy link
Contributor Author

⚠️ I've found a small issue related to the bottom padding of the blocks list and the safe area. I'll push a quick fix once I solved it and let you know, sorry for the inconveniences 🙏 .

@fluiddot
Copy link
Contributor Author

⚠️ I've found a small issue related to the bottom padding of the blocks list and the safe area. I'll push a quick fix once I solved it and let you know, sorry for the inconveniences 🙏 .

Here is the commit where I added the fix. @geriux @guarani let me know if you if you approve the change and if so I'll merge the PR, thanks 🙇 .

@fluiddot fluiddot changed the title [RNMobile] [DO NOT MERGE] Add Reusable blocks to the inserter menu [RNMobile] Add Reusable blocks to the inserter menu May 13, 2021
@guarani
Copy link
Contributor

guarani commented May 13, 2021

⚠️ I've found a small issue related to the bottom padding of the blocks list and the safe area. I'll push a quick fix once I solved it and let you know, sorry for the inconveniences 🙏 .

Here is the commit where I added the fix. @geriux @guarani let me know if you if you approve the change and if so I'll merge the PR, thanks 🙇 .

Looks good to me, I tested on iOS and the bottom sheet spacing appeared OK (although I wasn't sure what to look out for).
I'd say it's good to go :shipit:

@fluiddot
Copy link
Contributor Author

⚠️ I've found a small issue related to the bottom padding of the blocks list and the safe area. I'll push a quick fix once I solved it and let you know, sorry for the inconveniences 🙏 .

Here is the commit where I added the fix. @geriux @guarani let me know if you if you approve the change and if so I'll merge the PR, thanks 🙇 .

Looks good to me, I tested on iOS and the bottom sheet spacing appeared OK (although I wasn't sure what to look out for).
I'd say it's good to go :shipit:

True, I forgot to add details about the issue, here is a screenshot related to this:

As you can see, the content is too close to the bottom area, that's because I wasn't including the safe area, now it looks this way:

@geriux
Copy link
Member

geriux commented May 14, 2021

Here is the commit where I added the fix. @geriux @guarani let me know if you if you approve the change and if so I'll merge the PR, thanks 🙇 .

LGTM!

@fluiddot
Copy link
Contributor Author

@geriux @guarani I also assigned you as reviewers of the GB-mobile PR associated with this one, when you're available I'd appreciate it if you could approve it too, thanks 🙇 !

@fluiddot fluiddot merged commit e148801 into trunk May 14, 2021
@fluiddot fluiddot deleted the rnmobile/add/2575-reusable-blocks-inserter branch May 14, 2021 11:14
@github-actions github-actions bot added this to the Gutenberg 10.7 milestone May 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Block The "Reusable Block" Block 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.

4 participants