Preserve screen selection when renaming IDs

This commit is contained in:
pennyteenycat 2025-09-27 23:20:34 +02:00
parent 13f66a0bbe
commit 4616f3fa45

View File

@ -301,11 +301,11 @@ function builderReducer(state: BuilderState, action: BuilderAction): BuilderStat
} }
case "update-screen": { case "update-screen": {
const { screenId, screen } = action.payload; const { screenId, screen } = action.payload;
return withDirty(state, { let nextSelectedScreenId = state.selectedScreenId;
...state,
screens: state.screens.map((current) => const nextScreens = state.screens.map((current) =>
current.id === screenId current.id === screenId
? (() => { ? (() => {
const nextScreen = { const nextScreen = {
...current, ...current,
...screen, ...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; return nextScreen;
})() })()
: current : current
), );
return withDirty(state, {
...state,
screens: nextScreens,
selectedScreenId: nextSelectedScreenId,
}); });
} }
case "reposition-screen": { case "reposition-screen": {