From 1df930e3f29fcb4b2eea3896369dd541ad057f1b Mon Sep 17 00:00:00 2001
From: Leonardo Christino <leomilho@gmail.com>
Date: Tue, 23 Jan 2024 15:17:01 +0100
Subject: [PATCH] fix(form): keep db state when another is deleted

---
 libs/shared/lib/data-access/store/sessionSlice.ts | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/libs/shared/lib/data-access/store/sessionSlice.ts b/libs/shared/lib/data-access/store/sessionSlice.ts
index e4c1a559c..2adf04d6e 100644
--- a/libs/shared/lib/data-access/store/sessionSlice.ts
+++ b/libs/shared/lib/data-access/store/sessionSlice.ts
@@ -30,10 +30,17 @@ export const sessionSlice = createSlice({
       wsSelectState(state.currentSaveState);
     },
     updateSaveStateList(state, action: PayloadAction<SaveStateI[]>) {
-      state.saveStates = {};
+      let newState: Record<string, SaveStateI> = {};
       action.payload.forEach((ss) => {
-        state.saveStates[ss.id] = ss;
+        newState[ss.id] = ss;
+
+        // Keep db status (e.g. tested) from old state
+        // DB is always the same for a given save state, but if this changes, this code will break
+        if (ss.id in state.saveStates) {
+          newState[ss.id].db.status = state.saveStates[ss.id].db.status;
+        }
       });
+      state.saveStates = newState;
 
       if (!state.currentSaveState || !(state.currentSaveState in state.saveStates)) {
         if (Object.keys(state.saveStates).length > 0) {
-- 
GitLab