@@ -34,26 +34,34 @@ const addResetToRegistry = registry => {
34
34
window . gutenbergState = ( ) => mapValues ( registry . stores , ( { store } ) => store . getState ( ) ) ;
35
35
}
36
36
37
- const resettableStores = [ 'core/editor' , 'core/notices' ] ;
38
-
39
37
const stores = [ ] ;
40
38
return {
41
39
registerStore ( namespace , options ) {
42
- let store ;
43
- if ( - 1 === resettableStores . indexOf ( namespace ) ) {
44
- store = registry . registerStore ( namespace , options ) ;
45
- } else {
46
- store = registry . registerStore ( namespace , {
47
- ... options ,
48
- reducer : ( state , action ) =>
49
- options . reducer ( 'GUTENLYPSO_RESET' === action . type ? undefined : state , action ) ,
50
- } ) ;
51
- }
40
+ const store = registry . registerStore ( namespace , {
41
+ ... options ,
42
+ reducer : ( state , action ) => {
43
+ if ( 'GUTENLYPSO_RESET' === action . type && namespace === action . namespace ) {
44
+ debug ( `Resetting ${ namespace } store` ) ;
45
+ return options . reducer ( undefined , action ) ;
46
+ }
47
+ return options . reducer ( state , action ) ;
48
+ } ,
49
+ } ) ;
52
50
stores . push ( store ) ;
53
51
return store ;
54
52
} ,
55
- reset ( ) {
56
- stores . forEach ( store => store . dispatch ( { type : 'GUTENLYPSO_RESET' } ) ) ;
53
+ reset ( namespace ) {
54
+ stores . forEach ( store => store . dispatch ( { type : 'GUTENLYPSO_RESET' , namespace } ) ) ;
55
+ } ,
56
+ resetCoreResolvers ( ) {
57
+ // @see https://github.com/WordPress/gutenberg/blob/e1092c0d0b75fe53ab57bc6c4cc9e32cb2e74e40/packages/data/src/resolvers-cache-middleware.js#L14-L34
58
+ const resolvers = registry . select ( 'core/data' ) . getCachedResolvers ( 'core' ) ;
59
+ debug ( `Resetting core store resolvers: ${ Object . keys ( resolvers ) . toString ( ) } ` ) ;
60
+ Object . entries ( resolvers ) . forEach ( ( [ selectorName , resolversByArgs ] ) => {
61
+ resolversByArgs . forEach ( ( value , args ) => {
62
+ registry . dispatch ( 'core/data' ) . invalidateResolution ( 'core' , selectorName , args ) ;
63
+ } ) ;
64
+ } ) ;
57
65
} ,
58
66
} ;
59
67
} ;
@@ -63,12 +71,15 @@ const addResetToRegistry = registry => {
63
71
export const initGutenberg = once ( ( userId , store ) => {
64
72
debug ( 'Starting Gutenberg editor initialization...' ) ;
65
73
74
+ const registry = use ( addResetToRegistry ) ;
75
+
66
76
debug ( 'Registering data plugins' ) ;
67
77
const storageKey = 'WP_DATA_USER_' + userId ;
68
78
use ( plugins . persistence , { storageKey : storageKey } ) ;
69
79
use ( plugins . controls ) ;
70
80
71
- const registry = use ( addResetToRegistry ) ;
81
+ debug ( 'Initializing gutenberg/calypso store' ) ;
82
+ require ( 'gutenberg/editor/calypso-store' ) ;
72
83
73
84
// We need to ensure that core-data is loaded after the data plugins have been registered.
74
85
debug ( 'Initializing core-data store' ) ;
0 commit comments