@wordpress/data 6.4.1 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/plugins/persistence/index.js +55 -45
- package/build/plugins/persistence/index.js.map +1 -1
- package/build-module/plugins/persistence/index.js +54 -44
- package/build-module/plugins/persistence/index.js.map +1 -1
- package/package.json +8 -8
- package/src/plugins/persistence/index.js +70 -45
- package/src/plugins/persistence/test/index.js +369 -344
|
@@ -252,29 +252,31 @@ export function migrateFeaturePreferencesToPreferencesStore(
|
|
|
252
252
|
: sourceFeatures;
|
|
253
253
|
|
|
254
254
|
if ( featuresToMigrate ) {
|
|
255
|
-
const
|
|
255
|
+
const existingPreferences = state[ preferencesStoreName ]?.preferences;
|
|
256
256
|
|
|
257
257
|
// Avoid migrating features again if they've previously been migrated.
|
|
258
|
-
if ( !
|
|
258
|
+
if ( ! existingPreferences?.[ sourceStoreName ] ) {
|
|
259
259
|
// Set the feature values in the interface store, the features
|
|
260
260
|
// object is keyed by 'scope', which matches the store name for
|
|
261
261
|
// the source.
|
|
262
262
|
persistence.set( preferencesStoreName, {
|
|
263
263
|
preferences: {
|
|
264
|
-
...
|
|
264
|
+
...existingPreferences,
|
|
265
265
|
[ sourceStoreName ]: featuresToMigrate,
|
|
266
266
|
},
|
|
267
267
|
} );
|
|
268
268
|
|
|
269
269
|
// Remove migrated feature preferences from `interface`.
|
|
270
270
|
if ( interfaceFeatures ) {
|
|
271
|
-
const
|
|
271
|
+
const otherInterfaceState = state[ interfaceStoreName ];
|
|
272
|
+
const otherInterfaceScopes =
|
|
272
273
|
state[ interfaceStoreName ]?.preferences?.features;
|
|
273
274
|
|
|
274
275
|
persistence.set( interfaceStoreName, {
|
|
276
|
+
...otherInterfaceState,
|
|
275
277
|
preferences: {
|
|
276
278
|
features: {
|
|
277
|
-
...
|
|
279
|
+
...otherInterfaceScopes,
|
|
278
280
|
[ sourceStoreName ]: undefined,
|
|
279
281
|
},
|
|
280
282
|
},
|
|
@@ -283,9 +285,11 @@ export function migrateFeaturePreferencesToPreferencesStore(
|
|
|
283
285
|
|
|
284
286
|
// Remove migrated feature preferences from the source.
|
|
285
287
|
if ( sourceFeatures ) {
|
|
288
|
+
const otherSourceState = state[ sourceStoreName ];
|
|
286
289
|
const sourcePreferences = state[ sourceStoreName ]?.preferences;
|
|
287
290
|
|
|
288
291
|
persistence.set( sourceStoreName, {
|
|
292
|
+
...otherSourceState,
|
|
289
293
|
preferences: {
|
|
290
294
|
...sourcePreferences,
|
|
291
295
|
features: undefined,
|
|
@@ -335,8 +339,10 @@ export function migrateIndividualPreferenceToPreferencesStore(
|
|
|
335
339
|
} );
|
|
336
340
|
|
|
337
341
|
// Remove migrated feature preferences from the source.
|
|
342
|
+
const otherSourceState = state[ sourceStoreName ];
|
|
338
343
|
const allSourcePreferences = state[ sourceStoreName ]?.preferences;
|
|
339
344
|
persistence.set( sourceStoreName, {
|
|
345
|
+
...otherSourceState,
|
|
340
346
|
preferences: {
|
|
341
347
|
...allSourcePreferences,
|
|
342
348
|
[ key ]: undefined,
|
|
@@ -344,56 +350,62 @@ export function migrateIndividualPreferenceToPreferencesStore(
|
|
|
344
350
|
} );
|
|
345
351
|
}
|
|
346
352
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
* interface store.
|
|
350
|
-
*
|
|
351
|
-
* @param {Object} persistence The persistence interface.
|
|
352
|
-
* @param {string} sourceStoreName The name of the store that has persisted
|
|
353
|
-
* preferences to migrate to the interface
|
|
354
|
-
* package.
|
|
355
|
-
*/
|
|
356
|
-
export function migrateFeaturePreferencesToInterfaceStore(
|
|
357
|
-
persistence,
|
|
358
|
-
sourceStoreName
|
|
353
|
+
export function migrateThirdPartyFeaturePreferencesToPreferencesStore(
|
|
354
|
+
persistence
|
|
359
355
|
) {
|
|
360
356
|
const interfaceStoreName = 'core/interface';
|
|
361
|
-
const
|
|
362
|
-
const sourcePreferences = state[ sourceStoreName ]?.preferences;
|
|
363
|
-
const sourceFeatures = sourcePreferences?.features;
|
|
357
|
+
const preferencesStoreName = 'core/preferences';
|
|
364
358
|
|
|
365
|
-
|
|
366
|
-
const targetFeatures =
|
|
367
|
-
state[ interfaceStoreName ]?.preferences?.features;
|
|
359
|
+
let state = persistence.get();
|
|
368
360
|
|
|
369
|
-
|
|
370
|
-
if ( ! targetFeatures?.[ sourceStoreName ] ) {
|
|
371
|
-
// Set the feature values in the interface store, the features
|
|
372
|
-
// object is keyed by 'scope', which matches the store name for
|
|
373
|
-
// the source.
|
|
374
|
-
persistence.set( interfaceStoreName, {
|
|
375
|
-
preferences: {
|
|
376
|
-
features: {
|
|
377
|
-
...targetFeatures,
|
|
378
|
-
[ sourceStoreName ]: sourceFeatures,
|
|
379
|
-
},
|
|
380
|
-
},
|
|
381
|
-
} );
|
|
361
|
+
const interfaceScopes = state[ interfaceStoreName ]?.preferences?.features;
|
|
382
362
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
363
|
+
for ( const scope in interfaceScopes ) {
|
|
364
|
+
// Don't migrate any core 'scopes'.
|
|
365
|
+
if ( scope.startsWith( 'core' ) ) {
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Skip this scope if there are no features to migrates
|
|
370
|
+
const featuresToMigrate = interfaceScopes[ scope ];
|
|
371
|
+
if ( ! featuresToMigrate ) {
|
|
372
|
+
continue;
|
|
390
373
|
}
|
|
374
|
+
|
|
375
|
+
const existingPreferences = state[ preferencesStoreName ]?.preferences;
|
|
376
|
+
|
|
377
|
+
// Add the data to the preferences store structure.
|
|
378
|
+
persistence.set( preferencesStoreName, {
|
|
379
|
+
preferences: {
|
|
380
|
+
...existingPreferences,
|
|
381
|
+
[ scope ]: featuresToMigrate,
|
|
382
|
+
},
|
|
383
|
+
} );
|
|
384
|
+
|
|
385
|
+
// Remove the data from the interface store structure.
|
|
386
|
+
// Call `persistence.get` again to make sure `state` is up-to-date with
|
|
387
|
+
// any changes from the previous iteration of this loop.
|
|
388
|
+
state = persistence.get();
|
|
389
|
+
const otherInterfaceState = state[ interfaceStoreName ];
|
|
390
|
+
const otherInterfaceScopes =
|
|
391
|
+
state[ interfaceStoreName ]?.preferences?.features;
|
|
392
|
+
|
|
393
|
+
persistence.set( interfaceStoreName, {
|
|
394
|
+
...otherInterfaceState,
|
|
395
|
+
preferences: {
|
|
396
|
+
features: {
|
|
397
|
+
...otherInterfaceScopes,
|
|
398
|
+
[ scope ]: undefined,
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
} );
|
|
391
402
|
}
|
|
392
403
|
}
|
|
393
404
|
|
|
394
405
|
persistencePlugin.__unstableMigrate = ( pluginOptions ) => {
|
|
395
406
|
const persistence = createPersistenceInterface( pluginOptions );
|
|
396
407
|
|
|
408
|
+
// Boolean feature preferences.
|
|
397
409
|
migrateFeaturePreferencesToPreferencesStore(
|
|
398
410
|
persistence,
|
|
399
411
|
'core/edit-widgets'
|
|
@@ -406,14 +418,27 @@ persistencePlugin.__unstableMigrate = ( pluginOptions ) => {
|
|
|
406
418
|
persistence,
|
|
407
419
|
'core/edit-post'
|
|
408
420
|
);
|
|
421
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
422
|
+
persistence,
|
|
423
|
+
'core/edit-site'
|
|
424
|
+
);
|
|
425
|
+
migrateThirdPartyFeaturePreferencesToPreferencesStore( persistence );
|
|
426
|
+
|
|
427
|
+
// Other ad-hoc preferences.
|
|
409
428
|
migrateIndividualPreferenceToPreferencesStore(
|
|
410
429
|
persistence,
|
|
411
430
|
'core/edit-post',
|
|
412
431
|
'hiddenBlockTypes'
|
|
413
432
|
);
|
|
414
|
-
|
|
433
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
415
434
|
persistence,
|
|
416
|
-
'core/edit-
|
|
435
|
+
'core/edit-post',
|
|
436
|
+
'editorMode'
|
|
437
|
+
);
|
|
438
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
439
|
+
persistence,
|
|
440
|
+
'core/edit-post',
|
|
441
|
+
'preferredStyleVariations'
|
|
417
442
|
);
|
|
418
443
|
migrateIndividualPreferenceToPreferencesStore(
|
|
419
444
|
persistence,
|