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

Migrate post editor editorMode to use preferences store and remove localAutosaveInterval preference #39180

Merged
merged 11 commits into from
Mar 11, 2022

Conversation

talldan
Copy link
Contributor

@talldan talldan commented Mar 3, 2022

Description

Addresses some of #31965

This migrates the post editor's editorMode preferences to use the new preferences store. This preference is. used for determining whether the visual or code editor is shown.

localAutosaveInterval has also been changed via some code review feedback. It's now now no longer an editor preference, instead this value is set or updated via editor settings alone. The setting is now stable, it's been around for a few years, so seems like a good time to make this happen.

Testing Instructions

Code editor

  1. Delete your WP localstorage data
  2. Using trunk open the post editor and dismiss the welcome guide
  3. Switch from the Visual Editor to the Code editor
  4. Checkout this branch and rebuild
  5. Reload the site editor
  6. The welcome guide should not show and the code editor should still be shown (preference changes were migrated correctly)
  7. Switch back to Visual editor
  8. Reload
  9. The visual editor should be shown (preference changes are still persisted)

Autosave Interval

No need to switch branches for this test, just build this branch.

  1. Open the post editor to a new post.
  2. Add some initial content and save it as a draft.
  3. Open the browser dev tools and inspect the Session Storage. This is where the local autosave is saved. To do this in Chrome go to the Application tab, click Session Storage from the right panel, and choose the URL that corresponds to your test site.
  4. Make some changes to the post title and then wait.
  5. You should see an entry for your post (in the format wp-autosave-postid) appear or be updated.

Another option is to add a console log to this line - packages/editor/src/components/local-autosave-monitor/index.js to log out the value of localAutosaveInterval. It should be 15 by default.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • 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 (please manually search all *.native.js files for terms that need renaming or removal).
  • I've updated related schemas if appropriate.

@github-actions
Copy link

github-actions bot commented Mar 3, 2022

Size Change: -105 B (0%)

Total Size: 1.16 MB

Filename Size Change
build/block-editor/index.min.js 144 kB +66 B (0%)
build/block-library/blocks/image/style-rtl.css 529 B +11 B (+2%)
build/block-library/blocks/image/style.css 535 B +12 B (+2%)
build/block-library/index.min.js 168 kB +179 B (0%)
build/block-library/style-rtl.css 11.4 kB +3 B (0%)
build/block-library/style.css 11.4 kB +2 B (0%)
build/components/index.min.js 217 kB -15 B (0%)
build/core-data/index.min.js 14 kB +80 B (+1%)
build/data/index.min.js 8.04 kB +3 B (0%)
build/edit-navigation/index.min.js 16.1 kB -50 B (0%)
build/edit-navigation/style-rtl.css 4.04 kB -1 B (0%)
build/edit-navigation/style.css 4.05 kB -1 B (0%)
build/edit-post/index.min.js 29.8 kB -57 B (0%)
build/edit-post/style-rtl.css 7.07 kB -174 B (-2%)
build/edit-post/style.css 7.07 kB -171 B (-2%)
build/edit-site/index.min.js 41.9 kB -32 B (0%)
build/edit-site/style-rtl.css 7.44 kB +3 B (0%)
build/edit-site/style.css 7.42 kB +3 B (0%)
build/edit-widgets/style-rtl.css 4.39 kB -1 B (0%)
build/edit-widgets/style.css 4.39 kB -1 B (0%)
build/editor/index.min.js 38.4 kB +4 B (0%)
build/url/index.min.js 1.99 kB +50 B (+3%)
build/widgets/index.min.js 7.21 kB -18 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/admin-manifest/index.min.js 1.24 kB
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.49 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/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 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/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-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-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/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.56 kB
build/block-library/blocks/cover/style.css 1.56 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 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 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 159 B
build/block-library/blocks/group/editor.css 159 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 114 B
build/block-library/blocks/heading/style.css 114 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/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 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 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 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 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.89 kB
build/block-library/blocks/navigation/style.css 1.88 kB
build/block-library/blocks/navigation/view.min.js 2.85 kB
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 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 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 389 B
build/block-library/blocks/pullquote/style.css 388 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 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 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 99 B
build/block-library/blocks/separator/editor.css 99 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 172 B
build/block-library/blocks/separator/theme.css 172 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 744 B
build/block-library/blocks/site-logo/editor.css 744 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 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 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 235 B
build/block-library/blocks/template-part/editor.css 235 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 934 B
build/block-library/common.css 932 B
build/block-library/editor-rtl.css 9.92 kB
build/block-library/editor.css 9.92 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 665 B
build/block-library/theme.css 670 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 46.4 kB
build/components/style-rtl.css 15.6 kB
build/components/style.css 15.6 kB
build/compose/index.min.js 11.2 kB
build/customize-widgets/index.min.js 11.2 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/date/index.min.js 31.9 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.53 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-widgets/index.min.js 16.5 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 4.29 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.12 kB
build/nux/style-rtl.css 751 B
build/nux/style.css 749 B
build/plugins/index.min.js 1.98 kB
build/preferences/index.min.js 1.2 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 611 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.1 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/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
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

@talldan
Copy link
Contributor Author

talldan commented Mar 4, 2022

I've stumbled on some compatibility issues with the mobile codebase in this PR, so I've pinged some mobile devs for a review.

Comment on lines +24 to +30
dispatch( preferencesStore ).setDefaults( 'core/edit-post', {
editorMode: 'visual',
fixedToolbar: false,
fullscreenMode: true,
hiddenBlockTypes: [],
welcomeGuide: true,
} );
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I see there's some defaults here - https://github.com/WordPress/gutenberg/blob/trunk/packages/react-native-bridge/common/gutenberg-web-single-block/local-storage-overrides.json.

There are some preferences that don't have matching settings in the web codebase ('pinnedPluginItems', 'isGeneralSidebarDismissed' and 'showInserterHelpPanel'), so I'm not sure if those are mobile only features, or things that were removed in the web codebase.

The web codebase also stopped using 'nux' a long time ago. Is it still in use on mobile?

@fluiddot
Copy link
Contributor

fluiddot commented Mar 4, 2022

👋 In relation to the mobile unit tests that are failing, I've just created this PR to address the issue. Once it's merged and this branch is updated, we should see the Unit Tests / Mobile PR check 🟢 , sorry for the inconvenience 🙇 .

@talldan talldan force-pushed the migrate/post-editor-save-interval-and-mode-data branch from 82baf26 to 6bf209e Compare March 8, 2022 03:15
@talldan
Copy link
Contributor Author

talldan commented Mar 8, 2022

👋 In relation to the mobile unit tests that are failing, I've just created #39224 to address the issue. Once it's merged and this branch is updated, we should see the Unit Tests / Mobile PR check 🟢 , sorry for the inconvenience 🙇 .

Thanks @fluiddot, that's incredibly helpful!

@talldan talldan self-assigned this Mar 8, 2022
@talldan talldan added [Package] Edit Post /packages/edit-post [Type] Enhancement A suggestion for improvement. labels Mar 8, 2022
@talldan talldan force-pushed the migrate/post-editor-save-interval-and-mode-data branch from a4aee9a to 5c94254 Compare March 8, 2022 08:47
@talldan talldan marked this pull request as ready for review March 8, 2022 08:56
@talldan
Copy link
Contributor Author

talldan commented Mar 8, 2022

This should be ready for review now.

@noisysocks
Copy link
Member

Huh, why is localAutosaveInterval a preference? I thought it was an editor setting.

Copy link
Member

@noisysocks noisysocks left a comment

Choose a reason for hiding this comment

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

This is looking good—nice work!


It's surprising to me that localAutosaveInterval is a preference stored in localStorage instead of an editor setting passed to wp.editPost.initialize (and then subsequently wp.editor.EditorProvider).

Turns out it already is an editor setting. LocalAutosaveMonitor will read from __experimentalLocalAutosaveInterval.

localAutosaveInterval: select( editorStore ).getEditorSettings()
.__experimentalLocalAutosaveInterval,

It's just that this editor setting comes from a preference.

__experimentalLocalAutosaveInterval: getPreference(
'localAutosaveInterval'
),

From a git blame, it looks like this was implemented at the last moment in 64fac7e as a way to speed up E2E tests.

But we don't need to use a preference to have E2E tests change the timeout. We can simply dispatch updateEditorSettings in @wordpress/editor. This is already done for the autosave interval.

window.wp.data
.dispatch( 'core/editor' )
.updateEditorSettings( { autosaveInterval: 100000000000 } );

The default timeout of 15 can be added to to EDITOR_SETTINGS_DEFAULTS.

export const EDITOR_SETTINGS_DEFAULTS = {

Note that it's a @wordpress/editor setting not a @wordpress/block-editor setting, as LocalAutosaveMonitor exists in @wordpress/editor.

So, I think let's remove the localAutosaveInterval preference altogether. We may as well also remove __experimental from __experimentalLocalAutosaveInterval while we're at it as it's clearly not going anywhere.

(For extra credit, it would be cool to make it so that an interval of -1 (or 0, or null, whatever!) disables the functionality so that we don't have to use 100000000000.)

@@ -87,12 +89,13 @@ function Editor( {
focusMode: isFeatureActive( 'focusMode' ),
hasReducedUI: isFeatureActive( 'reducedUI' ),
hasThemeStyles: isFeatureActive( 'themeStyles' ),
preferredStyleVariations: getPreference(
preferredStyleVariations: getEditorPreference(
'preferredStyleVariations'
),
hiddenBlockTypes: getHiddenBlockTypes(),
blockTypes: getBlockTypes(),
__experimentalLocalAutosaveInterval: getPreference(
Copy link
Member

Choose a reason for hiding this comment

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

Why aren't we using getEditorPreference here?

Copy link
Member

Choose a reason for hiding this comment

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

I guess our medium term plan is to deprecate getPreference in @wordpress/edit-post, so, maybe the actual question is: why are we using getEditorPreference above? 😀

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm migrating preferredStyleVariations in a separate branch. For now they're still stored in the edit-post preferences. They're a bit more complicated, so definitely need to be done in an individual PR. 😅

When that (and panels) are done I'll be able to drop getEditorPreference and it'll become a lot cleaner. 👍

Copy link
Member

Choose a reason for hiding this comment

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

Ah right of course 👍

return getPreference( state, 'editorMode', 'visual' );
}
export const getEditorMode = createRegistrySelector( ( select ) => () =>
select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ?? 'visual'
Copy link
Member

Choose a reason for hiding this comment

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

Isn't the ?? unnecessary because we're using setDefaults?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, it is. I added it back so that the unit tests are more logical. I suppose the unit tests could call setDefaults though. 🤔

Copy link
Member

Choose a reason for hiding this comment

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

Nah all good that makes sense 👍

@talldan
Copy link
Contributor Author

talldan commented Mar 10, 2022

So, I think let's remove the localAutosaveInterval preference altogether. We may as well also remove __experimental from __experimentalLocalAutosaveInterval while we're at it as it's clearly not going anywhere.

Sounds good. I did a search on wp directory (https://www.wpdirectory.net/search/01FXRVZ03CDA0A926P95E7WV61), and it looks like there's one plugin that makes use of the local autosave interval, and it's using the editor settings to interact with it.

@talldan talldan changed the title Migrate post editor localAutosaveInterval and editorMode to use preferences store Migrate post editor editorMode to use preferences store and remove localAutosaveInterval preference Mar 10, 2022
@talldan
Copy link
Contributor Author

talldan commented Mar 10, 2022

I've made those changes.

(For extra credit, it would be cool to make it so that an interval of -1 (or 0, or null, whatever!) disables the functionality so that we don't have to use 100000000000.)

I haven't done this bit, it isn't completely straightforward and I don't want to mess around with the AutosaveMonitor.

Currently the component has a way to disable the interval, but that means to save immediately rather than don't save at all. Adding an additional layer on top of this would make the component pretty confusing (and it's already a little difficult to follow).

It could do with a refactor.

Copy link
Member

@noisysocks noisysocks left a comment

Choose a reason for hiding this comment

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

Confirmed that local autosaving still works by typing in some content and watching my Session Storage tab in DevTools. Think we're good here! Nice work 👍

I pushed up some changes to the editor settings doc comment which I saw had autosaveInterval in there but not locsalAutosaveInterval.

Feel free to make that lib/compat change or not. Up to you.

@@ -24,6 +24,8 @@ function gutenberg_extend_post_editor_settings( $settings ) {
$settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas();
}

$settings['__experimentalLocalAutosaveInterval'] = 15;
Copy link
Member

Choose a reason for hiding this comment

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

It might be good while we're here (sorry lol) to split this hook up into different lib/compat files so that we know which settings supposed to be copied over into Core come release time.

// lib/compat/wordpress-5.9/block-editor-settings.php
add_filter( 'block_editor_settings_all', function( $settings ) {
	$settings['__unstableEnableFullSiteEditingBlocks'] = current_theme_supports( 'block-templates' );
	if ( wp_is_block_theme() ) {
 		$settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas();
 	}
	return $settings;
} );

// lib/compat/wordpress-6.0/block-editor-settings.php
add_filter( 'block_editor_settings_all', function( $settings ) {
	$settings['__experimentalLocalAutosaveInterval'] = 15;
	return $settings;
} );

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 point, I forgot to do that. I've made those changes in 9ce49a3 and 0c643cc

@talldan
Copy link
Contributor Author

talldan commented Mar 11, 2022

Thanks for another review and for fixing that doc block!

@talldan
Copy link
Contributor Author

talldan commented Mar 11, 2022

It looks like the image block e2e tests are failing because of a bug in WordPress core related to the media endpoint.

I'll follow up on that, but it's unrelated to this change, so I'm merging.

edit: trac ticket here - https://core.trac.wordpress.org/ticket/55367

@talldan talldan merged commit 7d88070 into trunk Mar 11, 2022
@talldan talldan deleted the migrate/post-editor-save-interval-and-mode-data branch March 11, 2022 04:01
@github-actions github-actions bot added this to the Gutenberg 12.9 milestone Mar 11, 2022
@noisysocks
Copy link
Member

🎉 nice work

@michalczaplinski
Copy link
Contributor

Hi folks 👋

I notice that this is PR breaks the comments-query-loop core block. It is not available in the inserter anymore:

2022-03-12_18-42-15.mp4

In fact, I think that all the blocks from __experimentalRegisterExperimentalCoreBlocks are not present anymore.

It's not obvious to me if this is a regression or if there are some changes required on the contributor's part to make the experimental core blocks work given this PR? Could you advise here and I can file an issue if this is indeed a regression, thanks! 🙂

@michalczaplinski
Copy link
Contributor

For additional context: This issue only appears when editing a post - when using the site editor, the comments-query-loop does appear in the inserter

@talldan
Copy link
Contributor Author

talldan commented Mar 14, 2022

@michalczaplinski Thanks for letting me know. That's not something that I'd expect to break, I'll look into it.

@talldan
Copy link
Contributor Author

talldan commented Mar 14, 2022

Turned out it was a pretty simple issue, a new PHP files this PR introduced wasn't being loaded.

The fix is here - #39415.

adamziel added a commit to adamziel/wordpress-develop that referenced this pull request Apr 6, 2022
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Apr 7, 2022
Backports changes from the Gutenberg plugin. Original PR in Gutenberg: WordPress/gutenberg#39180.

Props zieleadam, talldanwp.
See #55505.



git-svn-id: https://develop.svn.wordpress.org/trunk@53090 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Apr 7, 2022
Backports changes from the Gutenberg plugin. Original PR in Gutenberg: WordPress/gutenberg#39180.

Props zieleadam, talldanwp.
See #55505.


Built from https://develop.svn.wordpress.org/trunk@53090


git-svn-id: http://core.svn.wordpress.org/trunk@52679 1a063a9b-81f0-0310-95a4-ce76da25c4cd
github-actions bot pushed a commit to platformsh/wordpress-performance that referenced this pull request Apr 7, 2022
Backports changes from the Gutenberg plugin. Original PR in Gutenberg: WordPress/gutenberg#39180.

Props zieleadam, talldanwp.
See #55505.


Built from https://develop.svn.wordpress.org/trunk@53090


git-svn-id: https://core.svn.wordpress.org/trunk@52679 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Edit Post /packages/edit-post [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants