feat: resets view after file has been successfully loaded

This commit is contained in:
Mark Mankarious
2023-08-28 21:57:08 +01:00
parent 8565d0d078
commit 9910fecada
3 changed files with 26 additions and 5 deletions

View File

@@ -34,6 +34,9 @@ export const MainMenu = () => {
const setScene = useSceneStore((state) => {
return state.actions.setScene;
});
const resetUiState = useUiStateStore((state) => {
return state.actions.resetUiState;
});
const onToggleMenu = useCallback(
(event: React.MouseEvent<HTMLButtonElement>) => {
@@ -56,7 +59,7 @@ export const MainMenu = () => {
const file = (event.target as HTMLInputElement).files?.[0];
if (!file) {
return;
throw new Error('No file selected');
}
const fileReader = new FileReader();
@@ -66,11 +69,13 @@ export const MainMenu = () => {
setScene(sceneInput);
};
fileReader.readAsText(file);
setIsMainMenuOpen(false);
resetUiState();
};
fileInput.click();
setIsMainMenuOpen(false);
}, [setScene, setIsMainMenuOpen]);
await fileInput.click();
}, [setScene, setIsMainMenuOpen, resetUiState]);
const onSaveAs = useCallback(async () => {
const parsedScene = sceneToSceneInput(scene);

View File

@@ -27,8 +27,23 @@ const initialState = () => {
debugMode: false,
zoom: 1,
rendererSize: { width: 0, height: 0 },
// TODO: Are all these actions needed?
actions: {
resetUiState: () => {
set({
mode: {
type: 'CURSOR',
showCursor: true,
mousedownItem: null
},
scroll: {
position: CoordsUtils.zero(),
offset: CoordsUtils.zero()
},
itemControls: null,
contextMenu: null,
zoom: 1
});
},
setMode: (mode) => {
set({ mode });
},

View File

@@ -132,6 +132,7 @@ export interface UiState {
}
export interface UiStateActions {
resetUiState: () => void;
setMode: (mode: Mode) => void;
incrementZoom: () => void;
decrementZoom: () => void;