From e1c5f3a457f52173f1d23001ba737ae8ec7c9f82 Mon Sep 17 00:00:00 2001
From: Leonardo Christino <leomilho@gmail.com>
Date: Tue, 23 Jan 2024 17:03:45 +0100
Subject: [PATCH] feat(url): sync saveID as a URL query param

---
 libs/shared/lib/data-access/api/wsState.tsx       | 7 ++-----
 libs/shared/lib/data-access/store/sessionSlice.ts | 5 +++--
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/libs/shared/lib/data-access/api/wsState.tsx b/libs/shared/lib/data-access/api/wsState.tsx
index 6a0ff2eab..f227653a7 100644
--- a/libs/shared/lib/data-access/api/wsState.tsx
+++ b/libs/shared/lib/data-access/api/wsState.tsx
@@ -1,9 +1,5 @@
-import { useEffect } from 'react';
 import { WebSocketHandler } from '../socket';
-import Broker from '../socket/broker';
-import { keyTypeI, subKeyTypeI } from '../socket/types';
-import { useAppDispatch, useConfig } from '../store';
-import { addSaveState, updateSaveStateList } from '../store/sessionSlice';
+import { URLParams, setParam } from './url';
 
 // export function wsGetState() {
 //   Broker.instance().subscribe((data) => dispatch(readInSchemaFromBackend(data)), 'schema_result');
@@ -58,6 +54,7 @@ export function wsSelectState(saveStateId: string | undefined) {
     body: { saveStateId: saveStateId }, //messageTypeGetSaveState
   });
   WebSocketHandler.instance().useSaveStateID(saveStateId);
+  setParam(URLParams.saveState, saveStateId);
 }
 
 export function wsCreateState(request: SaveStateI) {
diff --git a/libs/shared/lib/data-access/store/sessionSlice.ts b/libs/shared/lib/data-access/store/sessionSlice.ts
index 2adf04d6e..da99e4797 100644
--- a/libs/shared/lib/data-access/store/sessionSlice.ts
+++ b/libs/shared/lib/data-access/store/sessionSlice.ts
@@ -1,7 +1,7 @@
-import { includes } from 'lodash-es';
 import { createSlice, PayloadAction } from '@reduxjs/toolkit';
 import type { RootState } from './store';
-import { DatabaseInfo, DatabaseStatus, SaveStateI, wsSelectState } from '../api/wsState';
+import { DatabaseStatus, SaveStateI, wsSelectState } from '../api/wsState';
+import { getParam, URLParams } from '../api/url';
 
 /** Message format of the error message from the backend */
 export type ErrorMessage = {
@@ -42,6 +42,7 @@ export const sessionSlice = createSlice({
       });
       state.saveStates = newState;
 
+      state.currentSaveState = getParam(URLParams.saveState) || state.currentSaveState;
       if (!state.currentSaveState || !(state.currentSaveState in state.saveStates)) {
         if (Object.keys(state.saveStates).length > 0) {
           state.currentSaveState = Object.keys(state.saveStates)[0];
-- 
GitLab