From 4f032239ff6e4a0a07a41c22b7d40fc50fe93b2d Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 3 Mar 2022 15:55:46 +0800 Subject: [PATCH 01/11] Migrate localAutosaveInterval to use preferences store --- packages/data/src/plugins/persistence/index.js | 10 ++++++++++ .../specs/editor/various/autosave.test.js | 4 ++-- .../specs/performance/post-editor.test.js | 4 ++-- packages/edit-post/src/editor.js | 7 +++++-- packages/edit-post/src/index.js | 1 + packages/edit-post/src/store/actions.js | 14 -------------- packages/edit-post/src/store/defaults.js | 1 - packages/edit-post/src/store/reducer.js | 8 -------- packages/edit-post/src/store/selectors.js | 2 +- packages/edit-post/src/store/test/actions.js | 15 --------------- .../components/local-autosave-monitor/README.md | 2 +- 11 files changed, 22 insertions(+), 46 deletions(-) diff --git a/packages/data/src/plugins/persistence/index.js b/packages/data/src/plugins/persistence/index.js index 6dddde57089a1d..b143cbaf18b968 100644 --- a/packages/data/src/plugins/persistence/index.js +++ b/packages/data/src/plugins/persistence/index.js @@ -411,6 +411,16 @@ persistencePlugin.__unstableMigrate = ( pluginOptions ) => { 'core/edit-post', 'hiddenBlockTypes' ); + migrateIndividualPreferenceToPreferencesStore( + persistence, + 'core/edit-post', + 'localAutosaveInterval' + ); + migrateIndividualPreferenceToPreferencesStore( + persistence, + 'core/edit-post', + 'editorMode' + ); migrateFeaturePreferencesToPreferencesStore( persistence, 'core/edit-site' diff --git a/packages/e2e-tests/specs/editor/various/autosave.test.js b/packages/e2e-tests/specs/editor/various/autosave.test.js index 393c996f90e2cb..c271835c650e61 100644 --- a/packages/e2e-tests/specs/editor/various/autosave.test.js +++ b/packages/e2e-tests/specs/editor/various/autosave.test.js @@ -57,8 +57,8 @@ async function getCurrentPostId() { async function setLocalAutosaveInterval( value ) { return page.evaluate( ( _value ) => { window.wp.data - .dispatch( 'core/edit-post' ) - .__experimentalUpdateLocalAutosaveInterval( _value ); + .dispatch( 'core/preferences' ) + .set( 'core/edit-post', 'localAutosaveInterval', _value ); }, value ); } diff --git a/packages/e2e-tests/specs/performance/post-editor.test.js b/packages/e2e-tests/specs/performance/post-editor.test.js index f1691f12cc985b..9aee33115b67ab 100644 --- a/packages/e2e-tests/specs/performance/post-editor.test.js +++ b/packages/e2e-tests/specs/performance/post-editor.test.js @@ -87,8 +87,8 @@ describe( 'Post Editor Performance', () => { // Disable auto-save to avoid impacting the metrics. await page.evaluate( () => { window.wp.data - .dispatch( 'core/edit-post' ) - .__experimentalUpdateLocalAutosaveInterval( 100000000000 ); + .dispatch( 'core/preferences' ) + .set( 'core/edit-post', 'localAutosaveInterval', 100000000000 ); window.wp.data .dispatch( 'core/editor' ) .updateEditorSettings( { autosaveInterval: 100000000000 } ); diff --git a/packages/edit-post/src/editor.js b/packages/edit-post/src/editor.js index f993866f0e4df1..c0393e96bd928c 100644 --- a/packages/edit-post/src/editor.js +++ b/packages/edit-post/src/editor.js @@ -18,6 +18,7 @@ import { StrictMode, useMemo } from '@wordpress/element'; import { SlotFillProvider } from '@wordpress/components'; import { store as coreStore } from '@wordpress/core-data'; import { ShortcutProvider } from '@wordpress/keyboard-shortcuts'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -51,7 +52,7 @@ function Editor( { ( select ) => { const { isFeatureActive, - getPreference, + getPreference: getEditorPreference, __experimentalGetPreviewDeviceType, isEditingTemplate, getEditedPostTemplate, @@ -61,6 +62,7 @@ function Editor( { coreStore ); const { getEditorSettings } = select( editorStore ); + const { get: getPreference } = select( preferencesStore ); const { getBlockTypes } = select( blocksStore ); const isTemplate = [ 'wp_template', 'wp_template_part' ].includes( postType @@ -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( + 'core/edit-post', 'localAutosaveInterval' ), keepCaretInsideBlock: isFeatureActive( 'keepCaretInsideBlock' ), diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js index 62338a2906b843..3ea674650c8e63 100644 --- a/packages/edit-post/src/index.js +++ b/packages/edit-post/src/index.js @@ -110,6 +110,7 @@ export function initializeEditor( fixedToolbar: false, fullscreenMode: true, hiddenBlockTypes: [], + localAutosaveInterval: 15, showBlockBreadcrumbs: true, showIconLabels: false, themeStyles: true, diff --git a/packages/edit-post/src/store/actions.js b/packages/edit-post/src/store/actions.js index 1db042d2ac1ef5..0ffb3129a50414 100644 --- a/packages/edit-post/src/store/actions.js +++ b/packages/edit-post/src/store/actions.js @@ -204,20 +204,6 @@ export function updatePreferredStyleVariations( blockName, blockStyle ) { }; } -/** - * Returns an action object used in signalling that the editor should attempt - * to locally autosave the current post every `interval` seconds. - * - * @param {number} interval The new interval, in seconds. - * @return {Object} Action object. - */ -export function __experimentalUpdateLocalAutosaveInterval( interval ) { - return { - type: 'UPDATE_LOCAL_AUTOSAVE_INTERVAL', - interval, - }; -} - /** * Update the provided block types to be visible. * diff --git a/packages/edit-post/src/store/defaults.js b/packages/edit-post/src/store/defaults.js index 9bd5f366a02f9a..923c950d59c632 100644 --- a/packages/edit-post/src/store/defaults.js +++ b/packages/edit-post/src/store/defaults.js @@ -7,5 +7,4 @@ export const PREFERENCES_DEFAULTS = { }, hiddenBlockTypes: [], preferredStyleVariations: {}, - localAutosaveInterval: 15, }; diff --git a/packages/edit-post/src/store/reducer.js b/packages/edit-post/src/store/reducer.js index 846f6788273ce5..8d8845417c444f 100644 --- a/packages/edit-post/src/store/reducer.js +++ b/packages/edit-post/src/store/reducer.js @@ -102,14 +102,6 @@ export const preferences = flow( [ } return state; }, - localAutosaveInterval( state, action ) { - switch ( action.type ) { - case 'UPDATE_LOCAL_AUTOSAVE_INTERVAL': - return action.interval; - } - - return state; - }, } ); /** diff --git a/packages/edit-post/src/store/selectors.js b/packages/edit-post/src/store/selectors.js index 61f57a7f798dce..79277918c9c855 100644 --- a/packages/edit-post/src/store/selectors.js +++ b/packages/edit-post/src/store/selectors.js @@ -91,7 +91,7 @@ export const getActiveGeneralSidebarName = createRegistrySelector( // The current list of preference keys that have been migrated to the // preferences package. -const MIGRATED_KEYS = [ 'hiddenBlockTypes' ]; +const MIGRATED_KEYS = [ 'hiddenBlockTypes', 'localAutosaveInterval' ]; /** * Returns the preferences (these preferences are persisted locally). diff --git a/packages/edit-post/src/store/test/actions.js b/packages/edit-post/src/store/test/actions.js index c1b630dd3e0440..afe645c763142f 100644 --- a/packages/edit-post/src/store/test/actions.js +++ b/packages/edit-post/src/store/test/actions.js @@ -196,21 +196,6 @@ describe( 'actions', () => { } ); } ); - describe( '__experimentalUpdateLocalAutosaveInterval', () => { - it( 'sets the local autosave interval', () => { - registry - .dispatch( editPostStore ) - .__experimentalUpdateLocalAutosaveInterval( 42 ); - - // TODO - remove once `getPreference` is deprecated. - expect( - registry - .select( editPostStore ) - .getPreference( 'localAutosaveInterval' ) - ).toBe( 42 ); - } ); - } ); - describe( 'toggleEditorPanelEnabled', () => { it( 'toggles panels to be enabled and not enabled', () => { const defaultState = { diff --git a/packages/editor/src/components/local-autosave-monitor/README.md b/packages/editor/src/components/local-autosave-monitor/README.md index 6065086c616c60..0d2c898c82acd0 100644 --- a/packages/editor/src/components/local-autosave-monitor/README.md +++ b/packages/editor/src/components/local-autosave-monitor/README.md @@ -6,7 +6,7 @@ - warn the user upon loading a post that there is a local copy that can be loaded; - defer to remote autosaves, if any is available. -`LocalAutosaveMonitor` observes a saving interval defined specifically for local autosaves, in contrast with remote (server-side) autosaving. See editor setting `__experimentalLocalAutosaveInterval` and setter `__experimentalUpdateLocalAutosaveInterval`. +`LocalAutosaveMonitor` observes a saving interval defined specifically for local autosaves, in contrast with remote (server-side) autosaving. See the preference `localAutosaveInterval`. ## Example From d1d3278057420f2f407095de8c742460eaa9454d Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 3 Mar 2022 16:08:50 +0800 Subject: [PATCH 02/11] Migrate editorMode --- packages/edit-post/src/index.js | 1 + packages/edit-post/src/store/actions.js | 9 ++++----- packages/edit-post/src/store/defaults.js | 1 - packages/edit-post/src/store/reducer.js | 7 ------- packages/edit-post/src/store/selectors.js | 12 ++++++++---- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js index 3ea674650c8e63..8ccfdabf12ab7a 100644 --- a/packages/edit-post/src/index.js +++ b/packages/edit-post/src/index.js @@ -107,6 +107,7 @@ export function initializeEditor( ); dispatch( preferencesStore ).setDefaults( 'core/edit-post', { + editorMode: 'visual', fixedToolbar: false, fullscreenMode: true, hiddenBlockTypes: [], diff --git a/packages/edit-post/src/store/actions.js b/packages/edit-post/src/store/actions.js index 0ffb3129a50414..ad353afff6b200 100644 --- a/packages/edit-post/src/store/actions.js +++ b/packages/edit-post/src/store/actions.js @@ -155,11 +155,10 @@ export const toggleFeature = ( feature ) => ( { registry } ) => * * @param {string} mode The editor mode. */ -export const switchEditorMode = ( mode ) => ( { dispatch, registry } ) => { - dispatch( { - type: 'SWITCH_MODE', - mode, - } ); +export const switchEditorMode = ( mode ) => ( { registry } ) => { + registry + .dispatch( preferencesStore ) + .set( 'core/edit-post', 'editorMode', mode ); // Unselect blocks when we switch to the code editor. if ( mode !== 'visual' ) { diff --git a/packages/edit-post/src/store/defaults.js b/packages/edit-post/src/store/defaults.js index 923c950d59c632..774f7b6caacf22 100644 --- a/packages/edit-post/src/store/defaults.js +++ b/packages/edit-post/src/store/defaults.js @@ -1,5 +1,4 @@ export const PREFERENCES_DEFAULTS = { - editorMode: 'visual', panels: { 'post-status': { opened: true, diff --git a/packages/edit-post/src/store/reducer.js b/packages/edit-post/src/store/reducer.js index 8d8845417c444f..200f9c06c1a623 100644 --- a/packages/edit-post/src/store/reducer.js +++ b/packages/edit-post/src/store/reducer.js @@ -78,13 +78,6 @@ export const preferences = flow( [ return state; }, - editorMode( state, action ) { - if ( action.type === 'SWITCH_MODE' ) { - return action.mode; - } - - return state; - }, preferredStyleVariations( state, action ) { switch ( action.type ) { case 'UPDATE_PREFERRED_STYLE_VARIATIONS': { diff --git a/packages/edit-post/src/store/selectors.js b/packages/edit-post/src/store/selectors.js index 79277918c9c855..023ac817117f7a 100644 --- a/packages/edit-post/src/store/selectors.js +++ b/packages/edit-post/src/store/selectors.js @@ -22,9 +22,9 @@ const EMPTY_ARRAY = []; * * @return {string} Editing mode. */ -export function getEditorMode( state ) { - return getPreference( state, 'editorMode', 'visual' ); -} +export const getEditorMode = createRegistrySelector( ( select ) => () => + select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) +); /** * Returns true if the editor sidebar is opened. @@ -91,7 +91,11 @@ export const getActiveGeneralSidebarName = createRegistrySelector( // The current list of preference keys that have been migrated to the // preferences package. -const MIGRATED_KEYS = [ 'hiddenBlockTypes', 'localAutosaveInterval' ]; +const MIGRATED_KEYS = [ + 'hiddenBlockTypes', + 'localAutosaveInterval', + 'editorMode', +]; /** * Returns the preferences (these preferences are persisted locally). From 6955965d7117b0c767e9ab62ccc0b954f87fc718 Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 3 Mar 2022 16:11:28 +0800 Subject: [PATCH 03/11] Docs be better --- .../src/components/local-autosave-monitor/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/editor/src/components/local-autosave-monitor/README.md b/packages/editor/src/components/local-autosave-monitor/README.md index 0d2c898c82acd0..1cfbfae7a65e29 100644 --- a/packages/editor/src/components/local-autosave-monitor/README.md +++ b/packages/editor/src/components/local-autosave-monitor/README.md @@ -6,7 +6,16 @@ - warn the user upon loading a post that there is a local copy that can be loaded; - defer to remote autosaves, if any is available. -`LocalAutosaveMonitor` observes a saving interval defined specifically for local autosaves, in contrast with remote (server-side) autosaving. See the preference `localAutosaveInterval`. +`LocalAutosaveMonitor` observes a saving interval defined specifically for local autosaves, in contrast with remote (server-side) autosaving. + +The interval used for the local autosave can be modified using the preferences store: +```js +// Set the interval. +wp.data.dispatch( 'core/preferences' ).set( 'core/edit-post', 'localAutosaveInterval', 100 ); + +// Get the interval. +wp.data.select( 'core/preferences' ).get( 'core/edit-post', 'localAutosaveInterval' ); // 100 +``` ## Example From 5214466519ea63b7d10f506789beef343976128b Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 3 Mar 2022 17:27:45 +0800 Subject: [PATCH 04/11] Remove defunct tests --- packages/edit-post/src/store/test/reducer.js | 9 --------- .../edit-post/src/store/test/selectors.js | 19 ------------------- 2 files changed, 28 deletions(-) diff --git a/packages/edit-post/src/store/test/reducer.js b/packages/edit-post/src/store/test/reducer.js index f469e1f088a36f..3df0a461a4ffca 100644 --- a/packages/edit-post/src/store/test/reducer.js +++ b/packages/edit-post/src/store/test/reducer.js @@ -142,15 +142,6 @@ describe( 'state', () => { 'post-status': { opened: false }, } ); } ); - - it( 'should return switched mode', () => { - const state = preferences( deepFreeze( { editorMode: 'visual' } ), { - type: 'SWITCH_MODE', - mode: 'text', - } ); - - expect( state.editorMode ).toBe( 'text' ); - } ); } ); describe( 'activeModal', () => { diff --git a/packages/edit-post/src/store/test/selectors.js b/packages/edit-post/src/store/test/selectors.js index d9828eaa87e5a9..058dc8c9a4dff1 100644 --- a/packages/edit-post/src/store/test/selectors.js +++ b/packages/edit-post/src/store/test/selectors.js @@ -7,7 +7,6 @@ import deepFreeze from 'deep-freeze'; * Internal dependencies */ import { - getEditorMode, getPreference, isEditorPanelOpened, isModalActive, @@ -22,24 +21,6 @@ import { } from '../selectors'; describe( 'selectors', () => { - describe( 'getEditorMode', () => { - it( 'should return the selected editor mode', () => { - const state = { - preferences: { editorMode: 'text' }, - }; - - expect( getEditorMode( state ) ).toEqual( 'text' ); - } ); - - it( 'should fallback to visual if not set', () => { - const state = { - preferences: {}, - }; - - expect( getEditorMode( state ) ).toEqual( 'visual' ); - } ); - } ); - describe( 'getPreference', () => { it( 'should return the preference value if set', () => { const state = { From 536737126d72f653c8dc23a095b10b35276f5e63 Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Fri, 4 Mar 2022 14:32:34 +0800 Subject: [PATCH 05/11] Set defaults for react native too --- packages/edit-post/src/index.native.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/edit-post/src/index.native.js b/packages/edit-post/src/index.native.js index 609df65e3bb6a5..d2d10efbde478b 100644 --- a/packages/edit-post/src/index.native.js +++ b/packages/edit-post/src/index.native.js @@ -3,6 +3,8 @@ */ import '@wordpress/core-data'; import '@wordpress/format-library'; +import { dispatch } from '@wordpress/data'; +import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -19,5 +21,13 @@ import Editor from './editor'; * @param {Object} postId ID of the post to edit (unused right now) */ export function initializeEditor( id, postType, postId ) { + dispatch( preferencesStore ).setDefaults( 'core/edit-post', { + editorMode: 'visual', + fixedToolbar: false, + fullscreenMode: true, + hiddenBlockTypes: [], + welcomeGuide: true, + } ); + return ; } From 5c94254a41631297899bbc0b9107fc3db0da3bce Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Tue, 8 Mar 2022 16:07:39 +0800 Subject: [PATCH 06/11] Enhance unit testing and add back implicit default --- packages/edit-post/src/store/selectors.js | 2 +- packages/edit-post/src/store/test/actions.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/edit-post/src/store/selectors.js b/packages/edit-post/src/store/selectors.js index 023ac817117f7a..7619613869e99c 100644 --- a/packages/edit-post/src/store/selectors.js +++ b/packages/edit-post/src/store/selectors.js @@ -23,7 +23,7 @@ const EMPTY_ARRAY = []; * @return {string} Editing mode. */ export const getEditorMode = createRegistrySelector( ( select ) => () => - select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) + select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ?? 'visual' ); /** diff --git a/packages/edit-post/src/store/test/actions.js b/packages/edit-post/src/store/test/actions.js index afe645c763142f..e8114e830a5a2a 100644 --- a/packages/edit-post/src/store/test/actions.js +++ b/packages/edit-post/src/store/test/actions.js @@ -71,6 +71,11 @@ describe( 'actions', () => { describe( 'switchEditorMode', () => { it( 'to visual', () => { + // Switch to text first, since the default is visual. + registry.dispatch( editPostStore ).switchEditorMode( 'text' ); + expect( registry.select( editPostStore ).getEditorMode() ).toEqual( + 'text' + ); registry.dispatch( editPostStore ).switchEditorMode( 'visual' ); expect( registry.select( editPostStore ).getEditorMode() ).toEqual( 'visual' @@ -78,6 +83,10 @@ describe( 'actions', () => { } ); it( 'to text', () => { + // It defaults to visual. + expect( registry.select( editPostStore ).getEditorMode() ).toEqual( + 'visual' + ); // Add a selected client id and make sure it's there. const clientId = 'clientId_1'; registry.dispatch( blockEditorStore ).selectionChange( clientId ); @@ -89,6 +98,9 @@ describe( 'actions', () => { expect( registry.select( blockEditorStore ).getSelectedBlockClientId() ).toBeNull(); + expect( registry.select( editPostStore ).getEditorMode() ).toEqual( + 'text' + ); } ); } ); From 18ec1592d07d4383d7afcadbc777eaaf310e25e1 Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 10 Mar 2022 11:21:22 +0800 Subject: [PATCH 07/11] Remove the localAutosaveInterval preference --- lib/editor-settings.php | 2 ++ packages/data/src/plugins/persistence/index.js | 5 ----- .../e2e-tests/specs/editor/various/autosave.test.js | 6 +++--- .../e2e-tests/specs/performance/post-editor.test.js | 10 ++++------ packages/edit-post/src/editor.js | 13 ++----------- packages/edit-post/src/index.js | 1 - packages/edit-post/src/store/selectors.js | 6 +----- .../src/components/local-autosave-monitor/README.md | 10 ++++------ 8 files changed, 16 insertions(+), 37 deletions(-) diff --git a/lib/editor-settings.php b/lib/editor-settings.php index d91070c93ade5f..d81b47a8d8f250 100644 --- a/lib/editor-settings.php +++ b/lib/editor-settings.php @@ -24,6 +24,8 @@ function gutenberg_extend_post_editor_settings( $settings ) { $settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas(); } + $settings['__experimentalLocalAutosaveInterval'] = 15; + return $settings; } add_filter( 'block_editor_settings_all', 'gutenberg_extend_post_editor_settings' ); diff --git a/packages/data/src/plugins/persistence/index.js b/packages/data/src/plugins/persistence/index.js index b143cbaf18b968..a5b722bab07fbb 100644 --- a/packages/data/src/plugins/persistence/index.js +++ b/packages/data/src/plugins/persistence/index.js @@ -411,11 +411,6 @@ persistencePlugin.__unstableMigrate = ( pluginOptions ) => { 'core/edit-post', 'hiddenBlockTypes' ); - migrateIndividualPreferenceToPreferencesStore( - persistence, - 'core/edit-post', - 'localAutosaveInterval' - ); migrateIndividualPreferenceToPreferencesStore( persistence, 'core/edit-post', diff --git a/packages/e2e-tests/specs/editor/various/autosave.test.js b/packages/e2e-tests/specs/editor/various/autosave.test.js index c271835c650e61..87045b45b85acc 100644 --- a/packages/e2e-tests/specs/editor/various/autosave.test.js +++ b/packages/e2e-tests/specs/editor/various/autosave.test.js @@ -56,9 +56,9 @@ async function getCurrentPostId() { async function setLocalAutosaveInterval( value ) { return page.evaluate( ( _value ) => { - window.wp.data - .dispatch( 'core/preferences' ) - .set( 'core/edit-post', 'localAutosaveInterval', _value ); + window.wp.data.dispatch( 'core/editor' ).updateEditorSettings( { + __experimentalLocalAutosaveInterval: _value, + } ); }, value ); } diff --git a/packages/e2e-tests/specs/performance/post-editor.test.js b/packages/e2e-tests/specs/performance/post-editor.test.js index 9aee33115b67ab..708d14220f957a 100644 --- a/packages/e2e-tests/specs/performance/post-editor.test.js +++ b/packages/e2e-tests/specs/performance/post-editor.test.js @@ -86,12 +86,10 @@ describe( 'Post Editor Performance', () => { beforeEach( async () => { // Disable auto-save to avoid impacting the metrics. await page.evaluate( () => { - window.wp.data - .dispatch( 'core/preferences' ) - .set( 'core/edit-post', 'localAutosaveInterval', 100000000000 ); - window.wp.data - .dispatch( 'core/editor' ) - .updateEditorSettings( { autosaveInterval: 100000000000 } ); + window.wp.data.dispatch( 'core/editor' ).updateEditorSettings( { + autosaveInterval: 100000000000, + __experimentalLocalAutosaveInterval: 100000000000, + } ); } ); } ); diff --git a/packages/edit-post/src/editor.js b/packages/edit-post/src/editor.js index c0393e96bd928c..71412ab185e1c1 100644 --- a/packages/edit-post/src/editor.js +++ b/packages/edit-post/src/editor.js @@ -18,7 +18,6 @@ import { StrictMode, useMemo } from '@wordpress/element'; import { SlotFillProvider } from '@wordpress/components'; import { store as coreStore } from '@wordpress/core-data'; import { ShortcutProvider } from '@wordpress/keyboard-shortcuts'; -import { store as preferencesStore } from '@wordpress/preferences'; /** * Internal dependencies @@ -44,7 +43,6 @@ function Editor( { preferredStyleVariations, hiddenBlockTypes, blockTypes, - __experimentalLocalAutosaveInterval, keepCaretInsideBlock, isTemplateMode, template, @@ -52,7 +50,7 @@ function Editor( { ( select ) => { const { isFeatureActive, - getPreference: getEditorPreference, + getPreference, __experimentalGetPreviewDeviceType, isEditingTemplate, getEditedPostTemplate, @@ -62,7 +60,6 @@ function Editor( { coreStore ); const { getEditorSettings } = select( editorStore ); - const { get: getPreference } = select( preferencesStore ); const { getBlockTypes } = select( blocksStore ); const isTemplate = [ 'wp_template', 'wp_template_part' ].includes( postType @@ -89,15 +86,11 @@ function Editor( { focusMode: isFeatureActive( 'focusMode' ), hasReducedUI: isFeatureActive( 'reducedUI' ), hasThemeStyles: isFeatureActive( 'themeStyles' ), - preferredStyleVariations: getEditorPreference( + preferredStyleVariations: getPreference( 'preferredStyleVariations' ), hiddenBlockTypes: getHiddenBlockTypes(), blockTypes: getBlockTypes(), - __experimentalLocalAutosaveInterval: getPreference( - 'core/edit-post', - 'localAutosaveInterval' - ), keepCaretInsideBlock: isFeatureActive( 'keepCaretInsideBlock' ), isTemplateMode: isEditingTemplate(), template: @@ -124,7 +117,6 @@ function Editor( { hasFixedToolbar, focusMode, hasReducedUI, - __experimentalLocalAutosaveInterval, // This is marked as experimental to give time for the quick inserter to mature. __experimentalSetIsInserterOpened: setIsInserterOpened, @@ -159,7 +151,6 @@ function Editor( { hiddenBlockTypes, blockTypes, preferredStyleVariations, - __experimentalLocalAutosaveInterval, setIsInserterOpened, updatePreferredStyleVariations, keepCaretInsideBlock, diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js index 8ccfdabf12ab7a..05c3fa1fe4c3b0 100644 --- a/packages/edit-post/src/index.js +++ b/packages/edit-post/src/index.js @@ -111,7 +111,6 @@ export function initializeEditor( fixedToolbar: false, fullscreenMode: true, hiddenBlockTypes: [], - localAutosaveInterval: 15, showBlockBreadcrumbs: true, showIconLabels: false, themeStyles: true, diff --git a/packages/edit-post/src/store/selectors.js b/packages/edit-post/src/store/selectors.js index 7619613869e99c..fc81507328ec7f 100644 --- a/packages/edit-post/src/store/selectors.js +++ b/packages/edit-post/src/store/selectors.js @@ -91,11 +91,7 @@ export const getActiveGeneralSidebarName = createRegistrySelector( // The current list of preference keys that have been migrated to the // preferences package. -const MIGRATED_KEYS = [ - 'hiddenBlockTypes', - 'localAutosaveInterval', - 'editorMode', -]; +const MIGRATED_KEYS = [ 'hiddenBlockTypes', 'editorMode' ]; /** * Returns the preferences (these preferences are persisted locally). diff --git a/packages/editor/src/components/local-autosave-monitor/README.md b/packages/editor/src/components/local-autosave-monitor/README.md index 1cfbfae7a65e29..0e877fea47af8b 100644 --- a/packages/editor/src/components/local-autosave-monitor/README.md +++ b/packages/editor/src/components/local-autosave-monitor/README.md @@ -8,13 +8,11 @@ `LocalAutosaveMonitor` observes a saving interval defined specifically for local autosaves, in contrast with remote (server-side) autosaving. -The interval used for the local autosave can be modified using the preferences store: +The interval used for the local autosave can be modified by updating the editor settings ```js -// Set the interval. -wp.data.dispatch( 'core/preferences' ).set( 'core/edit-post', 'localAutosaveInterval', 100 ); - -// Get the interval. -wp.data.select( 'core/preferences' ).get( 'core/edit-post', 'localAutosaveInterval' ); // 100 +wp.data.dispatch( 'core/editor' ).updateEditorSettings( { + __experimentalLocalAutosaveInterval: 100000000000, +} ); ``` ## Example From b892747fec8f69a166daff62ccf369c354a78e1e Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Thu, 10 Mar 2022 11:23:35 +0800 Subject: [PATCH 08/11] Stabilize the localAutosaveInterval --- lib/editor-settings.php | 2 +- packages/e2e-tests/specs/editor/various/autosave.test.js | 2 +- packages/e2e-tests/specs/performance/post-editor.test.js | 2 +- packages/editor/src/components/local-autosave-monitor/README.md | 2 +- packages/editor/src/components/local-autosave-monitor/index.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/editor-settings.php b/lib/editor-settings.php index d81b47a8d8f250..6156143a759e4a 100644 --- a/lib/editor-settings.php +++ b/lib/editor-settings.php @@ -24,7 +24,7 @@ function gutenberg_extend_post_editor_settings( $settings ) { $settings['defaultTemplatePartAreas'] = get_allowed_block_template_part_areas(); } - $settings['__experimentalLocalAutosaveInterval'] = 15; + $settings['localAutosaveInterval'] = 15; return $settings; } diff --git a/packages/e2e-tests/specs/editor/various/autosave.test.js b/packages/e2e-tests/specs/editor/various/autosave.test.js index 87045b45b85acc..abf4ad8b83e68a 100644 --- a/packages/e2e-tests/specs/editor/various/autosave.test.js +++ b/packages/e2e-tests/specs/editor/various/autosave.test.js @@ -57,7 +57,7 @@ async function getCurrentPostId() { async function setLocalAutosaveInterval( value ) { return page.evaluate( ( _value ) => { window.wp.data.dispatch( 'core/editor' ).updateEditorSettings( { - __experimentalLocalAutosaveInterval: _value, + localAutosaveInterval: _value, } ); }, value ); } diff --git a/packages/e2e-tests/specs/performance/post-editor.test.js b/packages/e2e-tests/specs/performance/post-editor.test.js index 708d14220f957a..54689fff5e5f12 100644 --- a/packages/e2e-tests/specs/performance/post-editor.test.js +++ b/packages/e2e-tests/specs/performance/post-editor.test.js @@ -88,7 +88,7 @@ describe( 'Post Editor Performance', () => { await page.evaluate( () => { window.wp.data.dispatch( 'core/editor' ).updateEditorSettings( { autosaveInterval: 100000000000, - __experimentalLocalAutosaveInterval: 100000000000, + localAutosaveInterval: 100000000000, } ); } ); } ); diff --git a/packages/editor/src/components/local-autosave-monitor/README.md b/packages/editor/src/components/local-autosave-monitor/README.md index 0e877fea47af8b..25ebedc93feac9 100644 --- a/packages/editor/src/components/local-autosave-monitor/README.md +++ b/packages/editor/src/components/local-autosave-monitor/README.md @@ -11,7 +11,7 @@ The interval used for the local autosave can be modified by updating the editor settings ```js wp.data.dispatch( 'core/editor' ).updateEditorSettings( { - __experimentalLocalAutosaveInterval: 100000000000, + localAutosaveInterval: 100000000000, } ); ``` diff --git a/packages/editor/src/components/local-autosave-monitor/index.js b/packages/editor/src/components/local-autosave-monitor/index.js index 14f1f3fb7f8673..e5fc9c6b8078cb 100644 --- a/packages/editor/src/components/local-autosave-monitor/index.js +++ b/packages/editor/src/components/local-autosave-monitor/index.js @@ -178,7 +178,7 @@ function LocalAutosaveMonitor() { const { localAutosaveInterval } = useSelect( ( select ) => ( { localAutosaveInterval: select( editorStore ).getEditorSettings() - .__experimentalLocalAutosaveInterval, + .localAutosaveInterval, } ), [] ); From 6096ad673de2a2d1d6bc2ab7d3d222517213c663 Mon Sep 17 00:00:00 2001 From: Robert Anderson Date: Fri, 11 Mar 2022 11:25:11 +1100 Subject: [PATCH 09/11] Update editor settings JSDoc --- packages/editor/src/store/defaults.js | 31 +++++++++++++-------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/editor/src/store/defaults.js b/packages/editor/src/store/defaults.js index 03824561549f71..a626bd73456930 100644 --- a/packages/editor/src/store/defaults.js +++ b/packages/editor/src/store/defaults.js @@ -9,23 +9,22 @@ export const PREFERENCES_DEFAULTS = { }; /** - * The default post editor settings + * The default post editor settings. * - * allowedBlockTypes boolean|Array Allowed block types - * richEditingEnabled boolean Whether rich editing is enabled or not - * codeEditingEnabled boolean Whether code editing is enabled or not - * enableCustomFields boolean Whether the WordPress custom fields are enabled or not. - * true = the user has opted to show the Custom Fields panel at the bottom of the editor. - * false = the user has opted to hide the Custom Fields panel at the bottom of the editor. - * undefined = the current environment does not support Custom Fields, - * so the option toggle in Preferences -> Panels to - * enable the Custom Fields panel is not displayed. - * autosaveInterval number Autosave Interval - * availableTemplates array? The available post templates - * disablePostFormats boolean Whether or not the post formats are disabled - * allowedMimeTypes array? List of allowed mime types and file extensions - * maxUploadFileSize number Maximum upload file size - * supportsLayout boolean Whether the editor supports layouts. + * @property {boolean|Array} allowedBlockTypes Allowed block types + * @property {boolean} richEditingEnabled Whether rich editing is enabled or not + * @property {boolean} codeEditingEnabled Whether code editing is enabled or not + * @property {boolean} enableCustomFields Whether the WordPress custom fields are enabled or not. + * true = the user has opted to show the Custom Fields panel at the bottom of the editor. + * false = the user has opted to hide the Custom Fields panel at the bottom of the editor. + * undefined = the current environment does not support Custom Fields, so the option toggle in Preferences -> Panels to enable the Custom Fields panel is not displayed. + * @property {number} autosaveInterval How often in seconds the post will be auto-saved via the REST API. + * @property {number} localAutosaveInterval How often in seconds the post will be backed up to sessionStorage. + * @property {Array?} availableTemplates The available post templates + * @property {boolean} disablePostFormats Whether or not the post formats are disabled + * @property {Array?} allowedMimeTypes List of allowed mime types and file extensions + * @property {number} maxUploadFileSize Maximum upload file size + * @property {boolean} supportsLayout Whether the editor supports layouts. */ export const EDITOR_SETTINGS_DEFAULTS = { ...SETTINGS_DEFAULTS, From 9ce49a33a7f5b1b4eef56e2220ddcd5cfca765e5 Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Fri, 11 Mar 2022 09:44:08 +0800 Subject: [PATCH 10/11] Move code for min versions into compat folder --- .../wordpress-5.9/block-editor-settings.php | 23 +++++++++++++++++ .../wordpress-6.0/block-editor-settings.php | 2 ++ lib/editor-settings.php | 25 ------------------- 3 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 lib/compat/wordpress-5.9/block-editor-settings.php diff --git a/lib/compat/wordpress-5.9/block-editor-settings.php b/lib/compat/wordpress-5.9/block-editor-settings.php new file mode 100644 index 00000000000000..534284a51fa0ea --- /dev/null +++ b/lib/compat/wordpress-5.9/block-editor-settings.php @@ -0,0 +1,23 @@ + Date: Fri, 11 Mar 2022 09:53:13 +0800 Subject: [PATCH 11/11] Add file comment --- lib/compat/wordpress-5.9/block-editor-settings.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/compat/wordpress-5.9/block-editor-settings.php b/lib/compat/wordpress-5.9/block-editor-settings.php index 534284a51fa0ea..91849b0c6afb4a 100644 --- a/lib/compat/wordpress-5.9/block-editor-settings.php +++ b/lib/compat/wordpress-5.9/block-editor-settings.php @@ -1,4 +1,10 @@