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] Cover block: Support isDark attribute #40691

Merged
merged 8 commits into from May 3, 2022

Conversation

fluiddot
Copy link
Contributor

@fluiddot fluiddot commented Apr 28, 2022

What?

Add support for the isDark attribute in the native version of the editor. This attribute improves the color contrast between the background and text, by changing the text color to white/black depending on the overlay color and opacity. As a side note, this only applies to text elements that don't have a color set.

Why?

This PR aims to fix wordpress-mobile/WordPress-iOS#18024 and add support for the isDark attribute introduced in #33541.

How?

Extract useCoverIsDark hook to a file

Since this hook holds logic that can be used on both platforms, I decided to extract it to a new file.

I'd like to note that In the web version, when the opacity of the block is lower than or equal to 50%, it calculates the average color of the content (i.e. image or video) and uses it for determining the isDark value. However, the library for that purpose only works on web, so until we provide a workaround for this calculation in native, this case won't be handled.

NOTE: This might introduce discrepancies when displaying a Cover block, especially on the native version when the isDark attribute changes by modifying the opacity.

Web Native
web-cover-block-dark-mode.mp4
native-cover-block-dark-mode.mp4

HandleisDark attribute in native

Similar to how it's handled in the web version, the hook is called and uses the value returned to set dark or light color to the content via the childrenStyles attribute.

Additionally, these changes cover the case spotted in wordpress-mobile/WordPress-iOS#18024 (comment) where the is-light class is set when upgrading the block from an older version. The workaround for this is basically to ensure that, if isDark attribute is true, the is-light class is removed.

Testing Instructions

Check light/dark modes when isDark attribute changes

NOTE: As outlined in #40691 (comment), this functionality is not working when using themes that provide global styles. In order to test the changes, consider using a theme without global styles like Twenty Twenty-One or Alves.

  1. Open a post/page.
  2. Add a Cover block and set an image.
  3. Observe that the text color is black, as the default dark mode value is false.
  4. Open the block settings by tapping on the ⚙️ button.
  5. Scroll down to the "Overlay" section and modify the opacity.
  6. Observe that when opacity is greater than 50%, the text color is white.
  7. Observe that text color doesn't change when opacity is less than or equal to 50%.
  8. Set opacity greater than 50%.
  9. Change the overlay color to a dark one.
  10. Observe that the text color is black.

Check potential regressions in the web version

  1. Open a post/page.
  2. Add a Cover block and set an image.
  3. Observe that the text color is black, as the default dark mode value is false.
  4. Open the block settings.
  5. Scroll down to the "Overlay" section and modify the opacity.
  6. Observe that when opacity is greater than 50%, the text color is white.
  7. Observe that when opacity is less than or equal to 50%, the text color is black if the image is light, and white if the image is dark.
    NOTE: There's a known bug related to setting the black color even for images that are dark. So, expect that for most images the color will be black.
  8. Set opacity greater than 50%.
  9. Change the overlay color to a dark one.
  10. Observe that the text color is black.

Native and web versions should produce the same HTML

  1. Open a post/page in the web version.
  2. Add a Cover block and set an image.
  3. Open the block settings and set the opacity of the block to be greater than 50%.
  4. Save the post/page.
  5. Open the same post in the app.
  6. Observe that the Cover block looks equal to the web version.
  7. Observe that the HTML of the post/page remains unmodified by comparing the HTML of both versions.
  8. Go to the web version of the editor.
  9. Change the opacity of the block to less than 50%.
  10. Repeat steps 4 - 7.

Check starter page templates

  1. Open the app.
  2. Create a new WP.com site.
  3. Choose the "Alves" theme under Business.
  4. Complete the site creation by choosing a domain, etc.
  5. From the "My Site" view choose "Pages".
  6. Choose "Home".
  7. Observe that the heading "Raise Your Helping Hand" is white.
  8. Tap the ellipses at the top right and choose "Preview" in the bottom sheet.
  9. Observe that "Raise Your Helping Hand" is white.
  10. Tap the globe icon to preview in a browser.
  11. Observe that "Raise Your Helping Hand" is white.

Screenshots or screencast

ios-cover-block-dark-mode.mp4

@fluiddot fluiddot added Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) [Block] Cover Affects the Cover Block - used to display content laid over a background image Mobile App - Automation Label used to initiate Mobile App PR Automation labels Apr 28, 2022
@fluiddot fluiddot self-assigned this Apr 28, 2022
@github-actions
Copy link

github-actions bot commented Apr 28, 2022

Size Change: +6 B (0%)

Total Size: 1.23 MB

Filename Size Change
build/block-library/index.min.js 177 kB +6 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.77 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.51 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/index.min.js 151 kB
build/block-editor/style-rtl.css 15 kB
build/block-editor/style.css 15 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 59 B
build/block-library/blocks/avatar/style.css 59 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 103 B
build/block-library/blocks/code/style.css 103 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 95 B
build/block-library/blocks/comments/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.53 kB
build/block-library/blocks/cover/style.css 1.53 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 961 B
build/block-library/blocks/gallery/editor.css 964 B
build/block-library/blocks/gallery/style-rtl.css 1.51 kB
build/block-library/blocks/gallery/style.css 1.51 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 333 B
build/block-library/blocks/group/editor.css 333 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 529 B
build/block-library/blocks/image/style.css 535 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 463 B
build/block-library/blocks/latest-posts/style.css 462 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 708 B
build/block-library/blocks/navigation-link/editor.css 706 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.03 kB
build/block-library/blocks/navigation/editor.css 2.04 kB
build/block-library/blocks/navigation/style-rtl.css 1.93 kB
build/block-library/blocks/navigation/style.css 1.92 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 395 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 260 B
build/block-library/blocks/paragraph/style.css 260 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 69 B
build/block-library/blocks/post-comments-form/editor.css 69 B
build/block-library/blocks/post-comments-form/style-rtl.css 521 B
build/block-library/blocks/post-comments-form/style.css 521 B
build/block-library/blocks/post-comments/editor-rtl.css 77 B
build/block-library/blocks/post-comments/editor.css 77 B
build/block-library/blocks/post-comments/style-rtl.css 527 B
build/block-library/blocks/post-comments/style.css 527 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 370 B
build/block-library/blocks/pullquote/style.css 370 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 369 B
build/block-library/blocks/query/editor.css 369 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 140 B
build/block-library/blocks/separator/editor.css 140 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 759 B
build/block-library/blocks/site-logo/editor.css 759 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 504 B
build/block-library/blocks/table/editor.css 504 B
build/block-library/blocks/table/style-rtl.css 625 B
build/block-library/blocks/table/style.css 625 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 149 B
build/block-library/blocks/template-part/editor.css 149 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 993 B
build/block-library/common.css 990 B
build/block-library/editor-rtl.css 10.2 kB
build/block-library/editor.css 10.3 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 11.5 kB
build/block-library/style.css 11.5 kB
build/block-library/theme-rtl.css 689 B
build/block-library/theme.css 694 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 47 kB
build/components/index.min.js 222 kB
build/components/style-rtl.css 15 kB
build/components/style.css 15 kB
build/compose/index.min.js 11.3 kB
build/core-data/index.min.js 14.5 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.39 kB
build/customize-widgets/style.css 1.39 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.66 kB
build/date/index.min.js 32 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.58 kB
build/edit-navigation/index.min.js 15.8 kB
build/edit-navigation/style-rtl.css 4.05 kB
build/edit-navigation/style.css 4.05 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 30.1 kB
build/edit-post/style-rtl.css 7.02 kB
build/edit-post/style.css 7.02 kB
build/edit-site/index.min.js 47.4 kB
build/edit-site/style-rtl.css 7.95 kB
build/edit-site/style.css 7.93 kB
build/edit-widgets/index.min.js 16.3 kB
build/edit-widgets/style-rtl.css 4.41 kB
build/edit-widgets/style.css 4.4 kB
build/editor/index.min.js 38.4 kB
build/editor/style-rtl.css 3.67 kB
build/editor/style.css 3.67 kB
build/element/index.min.js 4.3 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.83 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.94 kB
build/notices/index.min.js 957 B
build/nux/index.min.js 2.1 kB
build/nux/style-rtl.css 751 B
build/nux/style.css 749 B
build/plugins/index.min.js 1.98 kB
build/preferences-persistence/index.min.js 2.16 kB
build/preferences/index.min.js 1.32 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 628 B
build/react-i18n/index.min.js 704 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.24 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.2 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.99 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.21 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

@fluiddot fluiddot marked this pull request as ready for review April 28, 2022 15:26
@fluiddot fluiddot removed the request for review from ajitbohra April 28, 2022 15:26
@jhnstn
Copy link
Contributor

jhnstn commented Apr 28, 2022

@fluiddot I'm unable to get the mobile test steps to pass. I've tried on iPhone 11/ iOS 14.8 and Pixel 6/ Android 12.
I'm using the "twenty twenty two" theme if that might have some impact.

@fluiddot
Copy link
Contributor Author

@fluiddot I'm unable to get the mobile test steps to pass. I've tried on iPhone 11/ iOS 14.8 and Pixel 6/ Android 12.
I'm using the "twenty twenty two" theme if that might have some impact.

@jhnstn Good catch! Looks like this is expected for dark themes, as it's outlined in this PR's description:

One issue to be aware of is that in a dark theme (for example Quadrat), when the cover block is set to a light background, the default text color for the theme will still be used. Perhaps in a dark theme we should default the block to have a white background and dark text, but that is a much larger change, and this PR doesn't make that problem worse so we can dealt with it in the future.

Could you try using a different theme and check if the issue persists? Thanks 🙇 !

@jhnstn
Copy link
Contributor

jhnstn commented Apr 28, 2022

Could you try using a different theme and check if the issue persists? Thanks 🙇 !

I switched to "Quadrat Black" and the text is still not changing:

RPReplay_Final1651175218.MP4

Also forgot to note previously that with "twenty twenty two", the cover text was changing colors on production web.

@fluiddot
Copy link
Contributor Author

Could you try using a different theme and check if the issue persists? Thanks 🙇 !

I switched to "Quadrat Black" and the text is still not changing:

RPReplay_Final1651175218.MP4
Also forgot to note previously that with "twenty twenty two", the cover text was changing colors on production web.

That's interesting, looks like depending on the theme these changes behave differently 🤔. I'm afraid this is related to how we calculate the final color to be applied in the RichText component:

childrenStyles: isCoverDark
? styles.defaultColor
: styles.defaultColorLightMode,

const parentBlockStyles = get( parentBlock, [
'attributes',
'childrenStyles',
] );

color={
( style && style.color ) ||
( parentBlockStyles && parentBlockStyles.color ) ||
( baseGlobalStyles && baseGlobalStyles?.color?.text ) ||
defaultColor
}

When using Alves or Twenty Twenty-One themes, it uses the color from parentBlockStyles that was set by the Cover block because the style color, which has higher preference, is not defined:

Using Twenty Twenty-One theme - Colors ordered by preference to be used by the RichText component:
tt1-color

However, when using a theme that defines global styles like Quadrat black or Twenty Twenty-Two, the RichText component uses the color from the global styles instead of the one defined by the Cover block:

Using Quadrat black theme - Colors ordered by preference to be used by the RichText component:
quadrat-black-color

NOTE: An easy way to identify themes that define global styles is by checking if the menu item Editor is displayed under the Themes section in the site dashboard on the web version.

Screenshot 2022-04-29 at 11 19 08


As far as I checked, this behavior differs from the web version where the global styles have less preference than the parent styles, in this case, defined by the Cover block:

Screenshot 2022-04-29 at 11 30 50

@jhnstn Not sure if we'd like to address the style preference issue in this PR, as it might be a bit complex, so I'm wondering if we could tackle it in a different PR and create an issue as a follow-up for that, wdyt?

@fluiddot fluiddot requested review from jhnstn and SiobhyB April 29, 2022 12:57
@jhnstn
Copy link
Contributor

jhnstn commented Apr 29, 2022

@jhnstn Not sure if we'd like to address the style preference issue in this PR, as it might be a bit complex, so I'm wondering if we could tackle it in a different PR and create an issue as a follow-up for that, wdyt?

💯 I wouldn't want to attempt those changes here. I'll test again with the a theme that lets me try out these specific changes.

@fluiddot
Copy link
Contributor Author

@jhnstn Not sure if we'd like to address the style preference issue in this PR, as it might be a bit complex, so I'm wondering if we could tackle it in a different PR and create an issue as a follow-up for that, wdyt?

💯 I wouldn't want to attempt those changes here. I'll test again with the a theme that lets me try out these specific changes.

Agreed, I'll create a new issue as a follow-up on this 👍.

Copy link
Contributor

@jhnstn jhnstn left a comment

Choose a reason for hiding this comment

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

@fluiddot I was able to test out the changes on mobile and web. Everything worked as expected. I was unable to test the starter page templates however. I was running into issues creating a new site on mobile with my Automattic account. Overall the changes look good, nice work!

@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

Thanks for the review @jhnstn 🙇 !

I was unable to test the starter page templates however. I was running into issues creating a new site on mobile with my Automattic account. Overall the changes look good, nice work!

It would be great to test the starter page templates as it's the issue that originated these changes (reference). Regarding the issues creating a new site, I'm wondering if they are related to actual bugs, could you share what you encountered? Thanks!

@SiobhyB as I also assigned you as a reviewer, I'm wondering if you could take a quick look at the "Check starter page templates" test case. Thanks for the help 🙇 !

# Conflicts:
#	packages/react-native-editor/CHANGELOG.md
@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

@jhnstn Not sure if we'd like to address the style preference issue in this PR, as it might be a bit complex, so I'm wondering if we could tackle it in a different PR and create an issue as a follow-up for that, wdyt?

💯 I wouldn't want to attempt those changes here. I'll test again with the a theme that lets me try out these specific changes.

Agreed, I'll create a new issue as a follow-up on this 👍.

FYI I've just created this issue as a follow-up.

Copy link
Contributor

@SiobhyB SiobhyB left a comment

Choose a reason for hiding this comment

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

Interestingly, I wasn't able to reproduce the original issue on an iOS simulator. I noticed Tanner mentioned there were times when the issue wasn't reproducible for him at wordpress-mobile/WordPress-iOS#18024 (comment), too. 🤔

I was able to reproduce the original issue on both a physical Android and iOS device, however.

I wanted to double-check that everything worked as expected on my physical devices, given my difficulty reproducing on an emulator, so created installable builds at wordpress-mobile/WordPress-Android#16466 and wordpress-mobile/WordPress-iOS#18495.

Everything seemed good on my Android device, but I'm still seeing the issue with the text appearing black in the preview on my iOS device. I see the issue when previewing pages for existing sites and after creating a brand new site from scratch.

I noticed the WordPress.com toolbar in the top of the second Android screenshot, so not sure if that may be relevant to the issue appearing fixed there.

@fluiddot, let me know if I'm perhaps missing something here or if I can help with any further testing.

iOS

trunk on physical iPhone XR Changes on physical iPhone XR

Android

trunk on physical Pixel 6 Changes on physical Pixel 6

@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

Interestingly, I wasn't able to reproduce the original issue on an iOS simulator. I noticed Tanner mentioned there were times when the issue wasn't reproducible for him at wordpress-mobile/WordPress-iOS#18024 (comment), too. 🤔

That's interesting, in my case, I was able to reproduce it on both simulators and physical devices 🤔.

I was able to reproduce the original issue on both a physical Android and iOS device, however.

👍

I wanted to double-check that everything worked as expected on my physical devices, given my difficulty reproducing on an emulator, so created installable builds at wordpress-mobile/WordPress-Android#16466 and wordpress-mobile/WordPress-iOS#18495.

Great, thanks for generating the installable builds 🙇.

Everything seemed good on my Android device, but I'm still seeing the issue with the text appearing black in the preview on my iOS device. I see the issue when previewing pages for existing sites and after creating a brand new site from scratch.

Oh, when I tested locally using my devices I checked that the fix worked on both platforms 🤔. I noticed that the WP-iOS PR is pointing to the latest commit of wordpress-mobile/gutenberg-mobile#4808, but the JS bundle for iOS wasn't updated. I think that explains why you can reproduce it on iOS and not on Android. I'm going to update the bundle and update both GB-mobile and WP-iOS PRs so the iOS installable build reflects the changes from this PR 💨.

I noticed the WordPress.com toolbar in the top of the second Android screenshot, so not sure if that may be relevant to the issue appearing fixed there.

I'd say that is not related to these changes, or at least it's not expected.

@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

@fluiddot, let me know if I'm perhaps missing something here or if I can help with any further testing.

@SiobhyB As I commented here, I'm going to update the JS bundle in the GB-mobile PR and generate a new iOS installable build. I'll let you know when it's ready to double-check that the issue was caused by the out-to-date bundle and not the changes 🤞 .

@jhnstn
Copy link
Contributor

jhnstn commented May 3, 2022

Regarding the issues creating a new site, I'm wondering if they are related to actual bugs, could you share what you encountered? Thanks!

The issues were unrelated to the app for sure. There might have been an issue with the WP.com API but I'm fairly certain the issue is with my Automattic account and the WP.com store code.

I can spin up the installable builds and try again with my test accounts.

@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

Regarding the issues creating a new site, I'm wondering if they are related to actual bugs, could you share what you encountered? Thanks!

The issues were unrelated to the app for sure. There might have been an issue with the WP.com API but I'm fairly certain the issue is with my Automattic account and the WP.com store code.

Great, thanks for clarifying it 👍.

I can spin up the installable builds and try again with my test accounts.

That would be great, thanks @jhnstn ! I already triggered a new build, I'll post a comment in the PR once they're ready to use.

@SiobhyB SiobhyB self-requested a review May 3, 2022 15:02
Copy link
Contributor

@SiobhyB SiobhyB left a comment

Choose a reason for hiding this comment

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

@fluiddot, aha, you're right, sorry for not spotting the out-of-date bundle! I saw the new build you generated is available now and confirmed the issue is fixed there:

All looks good from my side, thanks for fixing this 🙇‍♀️

@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

Thanks @SiobhyB for checking it 🙇 !

I was about to comment that the installable build is ready but you beat me 😅:

# Conflicts:
#	packages/react-native-editor/CHANGELOG.md
@fluiddot
Copy link
Contributor Author

fluiddot commented May 3, 2022

@jhnstn @SiobhyB I'd also appreciate it if you could also review the GB-mobile PR. Note that the Check Correctness job is failing but, as it's happening on other PRs in the Gutenberg Mobile repository, we can omit it until it's fixed in trunk.

@fluiddot fluiddot merged commit 8af66b4 into trunk May 3, 2022
@fluiddot fluiddot deleted the rnmobile/fix/cover-block-dark-mode branch May 3, 2022 17:11
@github-actions github-actions bot added this to the Gutenberg 13.2 milestone May 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Cover Affects the Cover Block - used to display content laid over a background image Mobile App - Automation Label used to initiate Mobile App PR Automation 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.

Styling broken when previewing Home page of new WP.com site
3 participants