mirror of
https://github.com/stan-smith/FossFLOW.git
synced 2025-12-24 06:58:48 -05:00
feat: resets view after file has been successfully loaded
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 });
|
||||
},
|
||||
|
||||
@@ -132,6 +132,7 @@ export interface UiState {
|
||||
}
|
||||
|
||||
export interface UiStateActions {
|
||||
resetUiState: () => void;
|
||||
setMode: (mode: Mode) => void;
|
||||
incrementZoom: () => void;
|
||||
decrementZoom: () => void;
|
||||
|
||||
Reference in New Issue
Block a user