Skip to content

Commit 1d09094

Browse files
shweta2101cyrossignol
authored andcommitted
Show cached group name; safe sessionStorage access
Add applyCachedName() to ProjectGroupPicker and use it on mount/selection to display a cached project group name immediately while the groups API call completes, removing duplicated assignments. In pages/dashboard, wrap sessionStorage access with typeof window checks and try/catch blocks so reads/writes are no-ops in SSR or when storage access throws (silently fail). This prevents runtime errors in server-side rendering or environments with disabled/blocked storage.
1 parent d41d407 commit 1d09094

2 files changed

Lines changed: 43 additions & 9 deletions

File tree

components/ProjectGroupPicker.vue

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ const onKeydown = (e: KeyboardEvent) => {
248248
}
249249
}
250250
251+
const applyCachedName = () => {
252+
searchText.value = nameModel.value
253+
selectedGroupName.value = nameModel.value
254+
}
255+
251256
const handleClickOutside = (event: MouseEvent) => {
252257
if (pickerRef.value && !pickerRef.value.contains(event.target as Node)) {
253258
if (isOpen.value) {
@@ -262,6 +267,12 @@ const handleClickOutside = (event: MouseEvent) => {
262267
263268
onMounted(async () => {
264269
document.addEventListener('mousedown', handleClickOutside)
270+
271+
// Show cached name immediately before the API call completes
272+
if (model.value && nameModel.value) {
273+
applyCachedName()
274+
}
275+
265276
await loadGroups(true)
266277
267278
if (projectGroups.value.length > 0) {
@@ -271,8 +282,7 @@ onMounted(async () => {
271282
selectedGroupName.value = selected.name
272283
} else if (model.value && nameModel.value) {
273284
// Group is beyond page 1 — use the cached name for display
274-
searchText.value = nameModel.value
275-
selectedGroupName.value = nameModel.value
285+
applyCachedName()
276286
} else if (!model.value) {
277287
const first = projectGroups.value[0]!
278288
model.value = first.id

pages/dashboard.vue

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,47 @@ const STORAGE_KEY_PROJECT_GROUP_NAME = 'tdei-selected-project-group-name';
4949
const STORAGE_KEY_WORKSPACE = 'tdei-selected-workspace';
5050
5151
function getLastProjectGroupId(): string | null {
52-
return sessionStorage.getItem(STORAGE_KEY_PROJECT_GROUP);
52+
if (typeof window === 'undefined') return null;
53+
try {
54+
return sessionStorage.getItem(STORAGE_KEY_PROJECT_GROUP);
55+
} catch {
56+
return null;
57+
}
5358
}
5459
function setLastProjectGroupId(id: string) {
55-
sessionStorage.setItem(STORAGE_KEY_PROJECT_GROUP, id);
60+
if (typeof window === 'undefined') return;
61+
try {
62+
sessionStorage.setItem(STORAGE_KEY_PROJECT_GROUP, id);
63+
} catch { /* silently fail */ }
5664
}
5765
function getLastProjectGroupName(): string | null {
58-
return sessionStorage.getItem(STORAGE_KEY_PROJECT_GROUP_NAME);
66+
if (typeof window === 'undefined') return null;
67+
try {
68+
return sessionStorage.getItem(STORAGE_KEY_PROJECT_GROUP_NAME);
69+
} catch {
70+
return null;
71+
}
5972
}
6073
function setLastProjectGroupName(name: string) {
61-
sessionStorage.setItem(STORAGE_KEY_PROJECT_GROUP_NAME, name);
74+
if (typeof window === 'undefined') return;
75+
try {
76+
sessionStorage.setItem(STORAGE_KEY_PROJECT_GROUP_NAME, name);
77+
} catch { /* silently fail */ }
6278
}
6379
function getLastWorkspaceId(): number | null {
64-
const v = sessionStorage.getItem(STORAGE_KEY_WORKSPACE);
65-
return v ? Number(v) : null;
80+
if (typeof window === 'undefined') return null;
81+
try {
82+
const v = sessionStorage.getItem(STORAGE_KEY_WORKSPACE);
83+
return v ? Number(v) : null;
84+
} catch {
85+
return null;
86+
}
6687
}
6788
function setLastWorkspaceId(id: number) {
68-
sessionStorage.setItem(STORAGE_KEY_WORKSPACE, String(id));
89+
if (typeof window === 'undefined') return;
90+
try {
91+
sessionStorage.setItem(STORAGE_KEY_WORKSPACE, String(id));
92+
} catch { /* silently fail */ }
6993
}
7094
</script>
7195

0 commit comments

Comments
 (0)