GoogleForCreators / web-stories-wp

Web Stories for WordPress
https://wp.stories.google
Apache License 2.0
766 stars 177 forks source link

Group Layers: Editor crashed when using keyboard shortcut while layers menu is open #13479

Closed LuckynaSan closed 11 months ago

LuckynaSan commented 11 months ago

Bug Description

Editor crashes when the layers menu is open, apply group layers on elements, and keying CMD+Z

Crash Report

TypeError: Cannot destructure property 'name' of 'n[t]' as it is undefined.

at GroupLayer (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:16347)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at ReorderableItem (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:41:4186)
at ReorderableGroup (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:17440)
at ReorderableElement (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:25116)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at Reorderable (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:41:3057)
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at LayerList (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:27298)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at Content (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:109:17713)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at LayerPanel (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:27860)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:110:4090
at Transition (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:188581)
at ScheduledTransition (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:110:4482)
at Popup (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:109:34063)
at Layers (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:47:28456)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at PrimaryMenu
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at le (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:228370)
at DirectionAware (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:92:14150)
at FooterLayout (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:55:4045)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at KeyboardShortcutsMenuProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:40:13156)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at C (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:89:3690)
at Footer (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:55:4714)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at Layer (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:33:54473)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at ChecklistCountProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:89:1325)
at NavLayer (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:8072)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at WithOverlay (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:17:418408)
at SelectionCanvas (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:9025)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at CanvasElementDropzone (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:11986)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at UploadDropTarget (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:110:5376)
at CanvasUploadDropTarget (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:11377)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at EditLayerFocusManager (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:33:7336)
at le (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:228370)
at CanvasLayout (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:22237)
at Canvas (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:57:24452)
at ErrorBoundary (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:14126)
at div
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at RichTextProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:17:449245)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at VideoTrimProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:120:9387)
at Workspace (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:120:10934)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at MediaRecordingProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:106:2839)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at RightClickMenuProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:121:10875)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at UnitsProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:8394)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at CanvasProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:1630)
at section
at O (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:233258)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at WithOverlay (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:17:418408)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at SidebarProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:161:16768)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at HighlightsProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:22293)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at ChecklistCheckpointProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:89:5455)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at LayoutProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:31561)
at kb (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:161:19050)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at MetaBoxesProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:162:11401)
at gv
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at PageDataUrlProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:21137)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at PageCanvasProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:25:18581)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at HelpCenterProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:18412)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at DropTargetsProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:92:14655)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at TransformProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:3676)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at MediaProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:75791)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at FontProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:9150)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at CurrentUserProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:6895)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at TaxonomyProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:15190)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at StoryTriggersProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:28:11260)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at StoryProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:28:12314)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at SnackbarProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/3669.js?ver=cf9fef04b4d0ee9bb149:9:61455)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at HistoryProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:26007)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at Media3pApiProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:82978)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at APIProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:17:3001172)
at https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:240608
at ConfigProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:19:6219)
at ErrorBoundary (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:14126)
at Le (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:231346)
at le (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/4740.js?ver=cf9fef04b4d0ee9bb149:1:228370)
at FlagsProvider (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/8393.js?ver=cf9fef04b4d0ee9bb149:1:266826)
at StoryEditor (https://foregolock.s2-tastewp.com/wp-content/plugins/web-stories/assets/js/web-stories-editor.js?ver=cf9fef04b4d0ee9bb149:114:29438)

Expected Behaviour

Editor does not crash.

Steps to Reproduce

  1. Add a few elements
  2. Open layers menu
  3. Select all elements
  4. Right click, group layers
  5. Enter Command+Z

Screenshots

https://github.com/GoogleForCreators/web-stories-wp/assets/66372350/148f92da-2023-41c6-a865-a58b1706c193

Screenshot 2023-10-18 at 10 27 57 AM

Additional Context

swissspidy commented 11 months ago

Good find! Thanks for the super detailed report, I was able to reproduce this at first try.

Looks like this is where the crash happens:

https://github.com/GoogleForCreators/web-stories-wp/blob/0ac1b867825b210d07af9ef15850b33cf170f143/packages/story-editor/src/components/panels/layer/groupLayer.js#L81

AnuragVasanwala commented 11 months ago

@swissspidy When user perform undo operation, in context of this issue (GroupLayer) - deleteGroupById is not called and thus useStory state is not updated! This is the cause of the issue: https://github.com/GoogleForCreators/web-stories-wp/blob/a3c73c2942cf1966c5e0073f6478d7b89fed8134/packages/story-editor/src/components/panels/layer/useLayers.js#L29-L35

But, when we perform Delete group by right-clicking on the group, deleteGroupById is called and thus triggers story state change and all dependencies are recomputed again.


We may need to update story state somehow in the below functions - which will trigger updating of story state and solves this issue:

https://github.com/GoogleForCreators/web-stories-wp/blob/cd9b8fed1b51f3e08aae9a3c307be4f4dd1640e3/packages/story-editor/src/app/history/historyProvider.tsx#L90

https://github.com/GoogleForCreators/web-stories-wp/blob/cd9b8fed1b51f3e08aae9a3c307be4f4dd1640e3/packages/story-editor/src/app/rightClickMenu/hooks/useElementActions.js#L66

swissspidy commented 11 months ago

I'm afraid that's not possible. The whole history provider is explicitly 100% decoupled from story provider and doesn't really know about it. So we'd need to find another way for this.

What makes the final story state be different when pressing undo? Can we simply add some safeguards to the relevant components to avoid throwing errors?

When I briefly looked at it last time, I was wondering if it had anything to do with how LayerList is constructed and how ReorderableGroup is memoized. Maybe that is a starting point?