Re-get the openPanes from localStorage when navigating between projects (#3241)

* Re-get the openPanes from localStorage when navigating between projects

* fmt
This commit is contained in:
Frank Noirot
2024-08-02 15:39:05 -04:00
committed by GitHub
parent 9dcc955760
commit 874d19cbfd
2 changed files with 49 additions and 32 deletions

View File

@ -255,10 +255,39 @@ interface PersistedModelingContext {
type PersistedKeys = keyof PersistedModelingContext
export const PersistedValues: PersistedKeys[] = ['openPanes']
const persistedContext: Partial<PersistedModelingContext> = (typeof window !==
'undefined' &&
JSON.parse(localStorage.getItem(PERSIST_MODELING_CONTEXT) || '{}')) || {
openPanes: ['code'],
export const getPersistedContext = (): Partial<PersistedModelingContext> => {
const c = (typeof window !== 'undefined' &&
JSON.parse(localStorage.getItem(PERSIST_MODELING_CONTEXT) || '{}')) || {
openPanes: ['code'],
}
return c
}
export const modelingMachineDefaultContext = {
tool: null as Models['SceneToolType_type'] | null,
selection: [] as string[],
selectionRanges: {
otherSelections: [],
codeBasedSelections: [],
} as Selections,
sketchDetails: {
sketchPathToNode: [],
zAxis: [0, 0, 1],
yAxis: [0, 1, 0],
origin: [0, 0, 0],
} as null | SketchDetails,
sketchPlaneId: '' as string,
sketchEnginePathId: '' as string,
moveDescs: [] as MoveDesc[],
mouseState: { type: 'idle' } as MouseState,
segmentOverlays: {} as SegmentOverlays,
segmentHoverMap: {} as { [pathToNodeString: string]: number },
store: {
buttonDownInStream: undefined,
didDragInStream: false,
streamDimensions: { streamWidth: 1280, streamHeight: 720 },
openPanes: getPersistedContext().openPanes || ['code'],
} as Store,
}
export const modelingMachine = createMachine(
@ -270,32 +299,7 @@ export const modelingMachine = createMachine(
predictableActionArguments: true,
preserveActionOrder: true,
context: {
tool: null as Models['SceneToolType_type'] | null,
selection: [] as string[],
selectionRanges: {
otherSelections: [],
codeBasedSelections: [],
} as Selections,
sketchDetails: {
sketchPathToNode: [],
zAxis: [0, 0, 1],
yAxis: [0, 1, 0],
origin: [0, 0, 0],
} as null | SketchDetails,
sketchPlaneId: '' as string,
sketchEnginePathId: '' as string,
moveDescs: [] as MoveDesc[],
mouseState: { type: 'idle' } as MouseState,
segmentOverlays: {} as SegmentOverlays,
segmentHoverMap: {} as { [pathToNodeString: string]: number },
store: {
buttonDownInStream: undefined,
didDragInStream: false,
streamDimensions: { streamWidth: 1280, streamHeight: 720 },
openPanes: persistedContext.openPanes || ['code'],
} as Store,
},
context: modelingMachineDefaultContext,
schema: {
events: {} as ModelingMachineEvent,