From 7e75038be8184b85f0722474adde1feac1128ab7 Mon Sep 17 00:00:00 2001 From: Robert Anderson Date: Fri, 6 Dec 2019 16:13:12 +0100 Subject: [PATCH] Deprecate '@wordpress/nux' package --- lib/client-assets.php | 22 -------------- package-lock.json | 7 ++--- .../data/src/plugins/persistence/index.js | 30 ++++++++++++++----- .../e2e-test-utils/src/create-new-post.js | 13 ++++---- .../specs/editor/various/nux.test.js | 4 +-- packages/edit-post/package.json | 1 - .../src/components/welcome-guide/index.js | 8 ++--- packages/edit-post/src/index.js | 1 - .../plugins/welcome-guide-menu-item/index.js | 4 +-- packages/edit-post/src/store/defaults.js | 1 + packages/editor/package.json | 1 - packages/editor/src/index.js | 1 - packages/nux/CHANGELOG.md | 4 +++ packages/nux/package.json | 1 + packages/nux/src/index.js | 9 ++++++ 15 files changed, 54 insertions(+), 53 deletions(-) diff --git a/lib/client-assets.php b/lib/client-assets.php index 44b2766647d07..77c937d2a2d60 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -402,8 +402,6 @@ function gutenberg_register_packages_styles( &$styles ) { * @since 0.1.0 */ function gutenberg_enqueue_block_editor_assets() { - global $wp_scripts; - wp_add_inline_script( 'wp-api-fetch', sprintf( @@ -417,26 +415,6 @@ function gutenberg_enqueue_block_editor_assets() { 'after' ); - // TEMPORARY: Core does not (yet) provide persistence migration from the - // introduction of the block editor and still calls the data plugins. - // We unset the existing inline scripts first. - $wp_scripts->registered['wp-data']->extra['after'] = array(); - wp_add_inline_script( - 'wp-data', - implode( - "\n", - array( - '( function() {', - ' var userId = ' . get_current_user_ID() . ';', - ' var storageKey = "WP_DATA_USER_" + userId;', - ' wp.data', - ' .use( wp.data.plugins.persistence, { storageKey: storageKey } );', - ' wp.data.plugins.persistence.__unstableMigrate( { storageKey: storageKey } );', - '} )();', - ) - ) - ); - if ( defined( 'GUTENBERG_LIVE_RELOAD' ) && GUTENBERG_LIVE_RELOAD ) { $live_reload_url = ( GUTENBERG_LIVE_RELOAD === true ) ? 'http://localhost:35729/livereload.js' : GUTENBERG_LIVE_RELOAD; diff --git a/package-lock.json b/package-lock.json index fee8be7cc525c..e6073f4c93516 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7885,7 +7885,6 @@ "@wordpress/keycodes": "file:packages/keycodes", "@wordpress/media-utils": "file:packages/media-utils", "@wordpress/notices": "file:packages/notices", - "@wordpress/nux": "file:packages/nux", "@wordpress/plugins": "file:packages/plugins", "@wordpress/url": "file:packages/url", "@wordpress/viewport": "file:packages/viewport", @@ -7941,7 +7940,6 @@ "@wordpress/keycodes": "file:packages/keycodes", "@wordpress/media-utils": "file:packages/media-utils", "@wordpress/notices": "file:packages/notices", - "@wordpress/nux": "file:packages/nux", "@wordpress/rich-text": "file:packages/rich-text", "@wordpress/server-side-render": "file:packages/server-side-render", "@wordpress/url": "file:packages/url", @@ -8833,6 +8831,7 @@ "@wordpress/components": "file:packages/components", "@wordpress/compose": "file:packages/compose", "@wordpress/data": "file:packages/data", + "@wordpress/deprecated": "file:packages/deprecated", "@wordpress/element": "file:packages/element", "@wordpress/i18n": "file:packages/i18n", "lodash": "^4.17.15", @@ -22825,7 +22824,7 @@ "dependencies": { "clone-deep": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "resolved": "http://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", "dev": true, "requires": { @@ -22859,7 +22858,7 @@ "dependencies": { "kind-of": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { diff --git a/packages/data/src/plugins/persistence/index.js b/packages/data/src/plugins/persistence/index.js index 49a49fc24302b..75506ef5dfa7e 100644 --- a/packages/data/src/plugins/persistence/index.js +++ b/packages/data/src/plugins/persistence/index.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { merge, isPlainObject, get } from 'lodash'; +import { merge, isPlainObject, get, has } from 'lodash'; /** * Internal dependencies @@ -208,19 +208,17 @@ const persistencePlugin = function( registry, pluginOptions ) { }; /** - * Deprecated: Remove this function once WordPress 5.3 is released. + * Deprecated: Remove this function and the code in WordPress Core that calls + * it once WordPress 5.4 is released. */ persistencePlugin.__unstableMigrate = ( pluginOptions ) => { const persistence = createPersistenceInterface( pluginOptions ); - // Preferences migration to introduce the block editor module - const insertUsage = get( persistence.get(), [ - 'core/editor', - 'preferences', - 'insertUsage', - ] ); + const state = persistence.get(); + // Migrate 'insertUsage' from 'core/editor' to 'core/block-editor' + const insertUsage = get( state, [ 'core/editor', 'preferences', 'insertUsage' ] ); if ( insertUsage ) { persistence.set( 'core/block-editor', { preferences: { @@ -228,6 +226,22 @@ persistencePlugin.__unstableMigrate = ( pluginOptions ) => { }, } ); } + + // Migrate 'areTipsEnabled' from 'core/nux' to 'showWelcomeGuide' in 'core/edit-post' + const areTipsEnabled = get( state, [ 'core/nux', 'preferences', 'areTipsEnabled' ] ); + const hasWelcomeGuide = has( state, [ 'core/edit-post', 'preferences', 'features', 'welcomeGuide' ] ); + if ( areTipsEnabled !== undefined && ! hasWelcomeGuide ) { + persistence.set( + 'core/edit-post', + merge( state[ 'core/edit-post' ], { + preferences: { + features: { + welcomeGuide: areTipsEnabled, + }, + }, + } ) + ); + } }; export default persistencePlugin; diff --git a/packages/e2e-test-utils/src/create-new-post.js b/packages/e2e-test-utils/src/create-new-post.js index 3abf89d0e8e63..a83577de62ddf 100644 --- a/packages/e2e-test-utils/src/create-new-post.js +++ b/packages/e2e-test-utils/src/create-new-post.js @@ -18,7 +18,7 @@ export async function createNewPost( { title, content, excerpt, - enableTips = false, + showWelcomeGuide = false, } = {} ) { const query = addQueryArgs( '', { post_type: postType, @@ -29,13 +29,12 @@ export async function createNewPost( { await visitAdminPage( 'post-new.php', query ); - const areTipsEnabled = await page.evaluate( () => wp.data.select( 'core/nux' ).areTipsEnabled() ); + const isWelcomeGuideActive = await page.evaluate( () => + wp.data.select( 'core/edit-post' ).isFeatureActive( 'welcomeGuide' ) ); - if ( enableTips !== areTipsEnabled ) { - await page.evaluate( ( _enableTips ) => { - const action = _enableTips ? 'enableTips' : 'disableTips'; - wp.data.dispatch( 'core/nux' )[ action ](); - }, enableTips ); + if ( showWelcomeGuide !== isWelcomeGuideActive ) { + await page.evaluate( () => + wp.data.dispatch( 'core/edit-post' ).toggleFeature( 'welcomeGuide' ) ); await page.reload(); } diff --git a/packages/e2e-tests/specs/editor/various/nux.test.js b/packages/e2e-tests/specs/editor/various/nux.test.js index d172f138cb50f..8075051be39dd 100644 --- a/packages/e2e-tests/specs/editor/various/nux.test.js +++ b/packages/e2e-tests/specs/editor/various/nux.test.js @@ -8,7 +8,7 @@ describe( 'New User Experience (NUX)', () => { let welcomeGuideText, welcomeGuide; // Create a new post as a first-time user - await createNewPost( { enableTips: true } ); + await createNewPost( { showWelcomeGuide: true } ); // Guide should be on page 1 of 3 welcomeGuideText = await page.$eval( '.edit-post-welcome-guide', ( element ) => element.innerText ); @@ -68,7 +68,7 @@ describe( 'New User Experience (NUX)', () => { let welcomeGuide; // Create a new post as a first-time user - await createNewPost( { enableTips: true } ); + await createNewPost( { showWelcomeGuide: true } ); // Guide should be open welcomeGuide = await page.$( '.edit-post-welcome-guide' ); diff --git a/packages/edit-post/package.json b/packages/edit-post/package.json index 7f00de877c36c..b7d805fbc23b7 100644 --- a/packages/edit-post/package.json +++ b/packages/edit-post/package.json @@ -38,7 +38,6 @@ "@wordpress/keycodes": "file:../keycodes", "@wordpress/media-utils": "file:../media-utils", "@wordpress/notices": "file:../notices", - "@wordpress/nux": "file:../nux", "@wordpress/plugins": "file:../plugins", "@wordpress/url": "file:../url", "@wordpress/viewport": "file:../viewport", diff --git a/packages/edit-post/src/components/welcome-guide/index.js b/packages/edit-post/src/components/welcome-guide/index.js index dcdb1b64548d9..0dbcbab91f32d 100644 --- a/packages/edit-post/src/components/welcome-guide/index.js +++ b/packages/edit-post/src/components/welcome-guide/index.js @@ -12,11 +12,11 @@ import { __experimentalCreateInterpolateElement } from '@wordpress/element'; import { CanvasImage, EditorImage, BlockLibraryImage, InserterIconImage } from './images'; export default function WelcomeGuide() { - const areTipsEnabled = useSelect( ( select ) => select( 'core/nux' ).areTipsEnabled(), [] ); + const isActive = useSelect( ( select ) => select( 'core/edit-post' ).isFeatureActive( 'welcomeGuide' ), [] ); - const { disableTips } = useDispatch( 'core/nux' ); + const { toggleFeature } = useDispatch( 'core/edit-post' ); - if ( ! areTipsEnabled ) { + if ( ! isActive ) { return null; } @@ -24,7 +24,7 @@ export default function WelcomeGuide() { toggleFeature( 'welcomeGuide' ) } > diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js index 277adb4210534..c0f956a677b6d 100644 --- a/packages/edit-post/src/index.js +++ b/packages/edit-post/src/index.js @@ -4,7 +4,6 @@ import '@wordpress/core-data'; import '@wordpress/block-editor'; import '@wordpress/editor'; -import '@wordpress/nux'; import '@wordpress/viewport'; import '@wordpress/notices'; import { registerCoreBlocks, __experimentalRegisterExperimentalCoreBlocks } from '@wordpress/block-library'; diff --git a/packages/edit-post/src/plugins/welcome-guide-menu-item/index.js b/packages/edit-post/src/plugins/welcome-guide-menu-item/index.js index 5c4c877c79690..de7d00cab912e 100644 --- a/packages/edit-post/src/plugins/welcome-guide-menu-item/index.js +++ b/packages/edit-post/src/plugins/welcome-guide-menu-item/index.js @@ -6,10 +6,10 @@ import { MenuItem } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; export default function WelcomeGuideMenuItem() { - const { enableTips } = useDispatch( 'core/nux' ); + const { toggleFeature } = useDispatch( 'core/edit-post' ); return ( - + toggleFeature( 'welcomeGuide' ) }> { __( 'Welcome Guide' ) } ); diff --git a/packages/edit-post/src/store/defaults.js b/packages/edit-post/src/store/defaults.js index 715fb4296281b..1c252d42a573c 100644 --- a/packages/edit-post/src/store/defaults.js +++ b/packages/edit-post/src/store/defaults.js @@ -9,6 +9,7 @@ export const PREFERENCES_DEFAULTS = { features: { fixedToolbar: false, showInserterHelpPanel: true, + welcomeGuide: true, }, pinnedPluginItems: {}, hiddenBlockTypes: [], diff --git a/packages/editor/package.json b/packages/editor/package.json index b2055f150bb3e..8d65a865ab2e7 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -43,7 +43,6 @@ "@wordpress/keycodes": "file:../keycodes", "@wordpress/media-utils": "file:../media-utils", "@wordpress/notices": "file:../notices", - "@wordpress/nux": "file:../nux", "@wordpress/rich-text": "file:../rich-text", "@wordpress/server-side-render": "file:../server-side-render", "@wordpress/url": "file:../url", diff --git a/packages/editor/src/index.js b/packages/editor/src/index.js index 67de1923a013d..13c43bd6ac5a7 100644 --- a/packages/editor/src/index.js +++ b/packages/editor/src/index.js @@ -5,7 +5,6 @@ import '@wordpress/block-editor'; import '@wordpress/blocks'; import '@wordpress/core-data'; import '@wordpress/notices'; -import '@wordpress/nux'; import '@wordpress/rich-text'; import '@wordpress/viewport'; diff --git a/packages/nux/CHANGELOG.md b/packages/nux/CHANGELOG.md index 546a22e7930b4..48b4decaf81c8 100644 --- a/packages/nux/CHANGELOG.md +++ b/packages/nux/CHANGELOG.md @@ -1,3 +1,7 @@ +# 3.1.0 (Unreleased) + +- The `@wordpress/nux` package has been deprecated. Please use the `Guide` component in `@wordpress/components` to show a user guide. + ## 3.0.6 (2019-01-03) ## 3.0.5 (2018-12-12) diff --git a/packages/nux/package.json b/packages/nux/package.json index f358034d79dff..1a1d1688da1d1 100644 --- a/packages/nux/package.json +++ b/packages/nux/package.json @@ -25,6 +25,7 @@ "@wordpress/components": "file:../components", "@wordpress/compose": "file:../compose", "@wordpress/data": "file:../data", + "@wordpress/deprecated": "file:../deprecated", "@wordpress/element": "file:../element", "@wordpress/i18n": "file:../i18n", "lodash": "^4.17.15", diff --git a/packages/nux/src/index.js b/packages/nux/src/index.js index a11d17bc96961..ffead08b9e4c2 100644 --- a/packages/nux/src/index.js +++ b/packages/nux/src/index.js @@ -1,6 +1,15 @@ +/** + * WordPress dependencies + */ +import deprecated from '@wordpress/deprecated'; + /** * Internal dependencies */ import './store'; export { default as DotTip } from './components/dot-tip'; + +deprecated( 'wp.nux', { + hint: 'wp.components.Guide can be used to show a user guide.', +} );