@@ -22,15 +22,15 @@ import { merge } from 'es-toolkit';
22
22
import { omit , pick } from 'es-toolkit/compat' ;
23
23
import { changeBoardModalSliceConfig } from 'features/changeBoardModal/store/slice' ;
24
24
import { canvasSettingsSliceConfig } from 'features/controlLayers/store/canvasSettingsSlice' ;
25
- import { canvasSliceConfig } from 'features/controlLayers/store/canvasSlice' ;
25
+ import { canvasSliceConfig , undoableCanvasSliceReducer } from 'features/controlLayers/store/canvasSlice' ;
26
26
import { canvasSessionSliceConfig } from 'features/controlLayers/store/canvasStagingAreaSlice' ;
27
27
import { lorasSliceConfig } from 'features/controlLayers/store/lorasSlice' ;
28
28
import { paramsSliceConfig } from 'features/controlLayers/store/paramsSlice' ;
29
29
import { refImagesSliceConfig } from 'features/controlLayers/store/refImagesSlice' ;
30
30
import { dynamicPromptsSliceConfig } from 'features/dynamicPrompts/store/dynamicPromptsSlice' ;
31
31
import { gallerySliceConfig } from 'features/gallery/store/gallerySlice' ;
32
32
import { modelManagerSliceConfig } from 'features/modelManagerV2/store/modelManagerV2Slice' ;
33
- import { nodesSliceConfig } from 'features/nodes/store/nodesSlice' ;
33
+ import { nodesSliceConfig , undoableNodesSliceReducer } from 'features/nodes/store/nodesSlice' ;
34
34
import { workflowLibrarySliceConfig } from 'features/nodes/store/workflowLibrarySlice' ;
35
35
import { workflowSettingsSliceConfig } from 'features/nodes/store/workflowSettingsSlice' ;
36
36
import { upscaleSliceConfig } from 'features/parameters/store/upscaleSlice' ;
@@ -44,7 +44,6 @@ import { diff } from 'jsondiffpatch';
44
44
import dynamicMiddlewares from 'redux-dynamic-middlewares' ;
45
45
import type { SerializeFunction , UnserializeFunction } from 'redux-remember' ;
46
46
import { REMEMBER_REHYDRATED , rememberEnhancer , rememberReducer } from 'redux-remember' ;
47
- import undoable , { newHistory } from 'redux-undo' ;
48
47
import { serializeError } from 'serialize-error' ;
49
48
import { api } from 'services/api' ;
50
49
import { authToastMiddleware } from 'services/api/authToastMiddleware' ;
@@ -91,22 +90,14 @@ const ALL_REDUCERS = {
91
90
[ api . reducerPath ] : api . reducer ,
92
91
[ canvasSessionSliceConfig . slice . reducerPath ] : canvasSessionSliceConfig . slice . reducer ,
93
92
[ canvasSettingsSliceConfig . slice . reducerPath ] : canvasSettingsSliceConfig . slice . reducer ,
94
- // Undoable!
95
- [ canvasSliceConfig . slice . reducerPath ] : undoable (
96
- canvasSliceConfig . slice . reducer ,
97
- canvasSliceConfig . undoableConfig ?. reduxUndoOptions
98
- ) ,
93
+ [ canvasSliceConfig . slice . reducerPath ] : undoableCanvasSliceReducer ,
99
94
[ changeBoardModalSliceConfig . slice . reducerPath ] : changeBoardModalSliceConfig . slice . reducer ,
100
95
[ configSliceConfig . slice . reducerPath ] : configSliceConfig . slice . reducer ,
101
96
[ dynamicPromptsSliceConfig . slice . reducerPath ] : dynamicPromptsSliceConfig . slice . reducer ,
102
97
[ gallerySliceConfig . slice . reducerPath ] : gallerySliceConfig . slice . reducer ,
103
98
[ lorasSliceConfig . slice . reducerPath ] : lorasSliceConfig . slice . reducer ,
104
99
[ modelManagerSliceConfig . slice . reducerPath ] : modelManagerSliceConfig . slice . reducer ,
105
- // Undoable!
106
- [ nodesSliceConfig . slice . reducerPath ] : undoable (
107
- nodesSliceConfig . slice . reducer ,
108
- nodesSliceConfig . undoableConfig ?. reduxUndoOptions
109
- ) ,
100
+ [ nodesSliceConfig . slice . reducerPath ] : undoableNodesSliceReducer ,
110
101
[ paramsSliceConfig . slice . reducerPath ] : paramsSliceConfig . slice . reducer ,
111
102
[ queueSliceConfig . slice . reducerPath ] : queueSliceConfig . slice . reducer ,
112
103
[ refImagesSliceConfig . slice . reducerPath ] : refImagesSliceConfig . slice . reducer ,
@@ -162,7 +153,7 @@ const unserialize: UnserializeFunction = (data, key) => {
162
153
163
154
// Undoable slices must be wrapped in a history!
164
155
if ( undoableConfig ) {
165
- return newHistory ( [ ] , state , [ ] ) ;
156
+ return undoableConfig . wrapState ( state ) ;
166
157
} else {
167
158
return state ;
168
159
}
@@ -175,7 +166,7 @@ const serialize: SerializeFunction = (data, key) => {
175
166
}
176
167
177
168
const result = omit (
178
- sliceConfig . undoableConfig ? data . present : data ,
169
+ sliceConfig . undoableConfig ? sliceConfig . undoableConfig . unwrapState ( data ) : data ,
179
170
sliceConfig . persistConfig . persistDenylist ?? [ ]
180
171
) ;
181
172
0 commit comments