From a4bdce3444522225870c80ccb94d0e60c0687ac7 Mon Sep 17 00:00:00 2001
From: Dennis Collaris <d.a.c.collaris@uu.nl>
Date: Thu, 14 Nov 2024 14:34:02 +0000
Subject: [PATCH] fix: fixed bug that newly created projects cannot be edited
 until reload

---
 apps/web/src/app/App.tsx                               | 2 +-
 apps/web/src/components/navbar/navbar.tsx              | 2 +-
 libs/shared/lib/data-access/store/sessionSlice.ts      | 9 ++++++++-
 libs/shared/lib/vis/components/VisualizationTabBar.tsx | 4 ++--
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/apps/web/src/app/App.tsx b/apps/web/src/app/App.tsx
index 6770b4382..dfa03165b 100644
--- a/apps/web/src/app/App.tsx
+++ b/apps/web/src/app/App.tsx
@@ -141,7 +141,7 @@ export function App(props: App) {
           </div>
           <FrozenOverlay>
             {!auth.authentication?.authenticated && <span>Not Authenticated</span>}
-            {!auth.authorization.savestate.W && !session.currentSaveState && (
+            {!auth.authorization.savestate?.W && !session.currentSaveState && (
               <span>Viewer account not authorized. Please load a shared exploration.</span>
             )}
           </FrozenOverlay>
diff --git a/apps/web/src/components/navbar/navbar.tsx b/apps/web/src/components/navbar/navbar.tsx
index a93578f0e..046b545d4 100644
--- a/apps/web/src/components/navbar/navbar.tsx
+++ b/apps/web/src/components/navbar/navbar.tsx
@@ -75,7 +75,7 @@ export const Navbar = () => {
                     />
                   </FeatureEnabled>
                   <FeatureEnabled featureFlag="VIEWER_PERMISSIONS">
-                    {authCache.authorization?.savestate?.W && authorization.database.W && (
+                    {authCache.authorization?.savestate?.W && authorization.database?.W && (
                       <DropdownItem
                         value="Viewer Permissions"
                         onClick={() => {
diff --git a/libs/shared/lib/data-access/store/sessionSlice.ts b/libs/shared/lib/data-access/store/sessionSlice.ts
index 650e0e629..b1d84da89 100644
--- a/libs/shared/lib/data-access/store/sessionSlice.ts
+++ b/libs/shared/lib/data-access/store/sessionSlice.ts
@@ -27,6 +27,13 @@ const defaultStateAuthorizationHeaders: SaveStateAuthorizationHeaders = {
   schema: { W: false, R: false },
 };
 
+const newStateAuthorizationHeaders: SaveStateAuthorizationHeaders = {
+  query: { W: true, R: true },
+  database: { W: true, R: true },
+  visualization: { W: true, R: true },
+  schema: { W: true, R: true },
+};
+
 // Define the initial state using that type
 export const initialState: SessionCacheI = {
   currentSaveState: undefined,
@@ -91,7 +98,7 @@ export const sessionSlice = createSlice({
       state.saveStates[action.payload.id] = action.payload;
       state.currentSaveState = action.payload.id;
       if (!state.saveStatesAuthorization[action.payload.id]) {
-        state.saveStatesAuthorization[action.payload.id] = cloneDeep(defaultStateAuthorizationHeaders);
+        state.saveStatesAuthorization[action.payload.id] = cloneDeep(newStateAuthorizationHeaders);
       }
     },
     deleteSaveState: (state: SessionCacheI, action: PayloadAction<string>) => {
diff --git a/libs/shared/lib/vis/components/VisualizationTabBar.tsx b/libs/shared/lib/vis/components/VisualizationTabBar.tsx
index 0cd76eaa1..cbb83bf88 100644
--- a/libs/shared/lib/vis/components/VisualizationTabBar.tsx
+++ b/libs/shared/lib/vis/components/VisualizationTabBar.tsx
@@ -75,7 +75,7 @@ export default function VisualizationTabBar(props: { fullSize: () => void; expor
               <Button
                 variantType="secondary"
                 variant="ghost"
-                disabled={!saveStateAuthorization.database.W}
+                disabled={!saveStateAuthorization.database?.W}
                 rounded
                 size="2xs"
                 iconComponent="icon-[ic--baseline-close]"
@@ -93,7 +93,7 @@ export default function VisualizationTabBar(props: { fullSize: () => void; expor
           <Tooltip>
             <TooltipTrigger>
               <DropdownContainer open={open} onOpenChange={setOpen}>
-                <DropdownTrigger disabled={!saveStateAuthorization.database.W} onClick={() => setOpen((v) => !v)}>
+                <DropdownTrigger disabled={!saveStateAuthorization.database?.W} onClick={() => setOpen((v) => !v)}>
                   <Button
                     as={'a'}
                     variantType="secondary"
-- 
GitLab