From 4616f3fa45ccebe4b21162c748398bd1e4fae6ac Mon Sep 17 00:00:00 2001 From: pennyteenycat Date: Sat, 27 Sep 2025 23:20:34 +0200 Subject: [PATCH] Preserve screen selection when renaming IDs --- src/lib/admin/builder/context.tsx | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lib/admin/builder/context.tsx b/src/lib/admin/builder/context.tsx index 188197d..7b7c330 100644 --- a/src/lib/admin/builder/context.tsx +++ b/src/lib/admin/builder/context.tsx @@ -301,11 +301,11 @@ function builderReducer(state: BuilderState, action: BuilderAction): BuilderStat } case "update-screen": { const { screenId, screen } = action.payload; - return withDirty(state, { - ...state, - screens: state.screens.map((current) => - current.id === screenId - ? (() => { + let nextSelectedScreenId = state.selectedScreenId; + + const nextScreens = state.screens.map((current) => + current.id === screenId + ? (() => { const nextScreen = { ...current, ...screen, @@ -336,10 +336,19 @@ function builderReducer(state: BuilderState, action: BuilderAction): BuilderStat } } + if (state.selectedScreenId === current.id && nextScreen.id !== current.id) { + nextSelectedScreenId = nextScreen.id; + } + return nextScreen; })() : current - ), + ); + + return withDirty(state, { + ...state, + screens: nextScreens, + selectedScreenId: nextSelectedScreenId, }); } case "reposition-screen": {