Skip to content

Commit 75159ed

Browse files
Fix issue where we ask for name unnecessarily. (#349)
Remove save logic from default page template.
1 parent 558ac8c commit 75159ed

File tree

2 files changed

+31
-40
lines changed

2 files changed

+31
-40
lines changed

src/components/DefaultPageLayout.tsx

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ import { ReactNode, useCallback, useEffect } from "react";
1414
import { RiDownload2Line, RiFolderOpenLine, RiHome2Line } from "react-icons/ri";
1515
import { FormattedMessage, useIntl } from "react-intl";
1616
import { useNavigate } from "react-router";
17+
import { useDeployment } from "../deployment";
1718
import { flags } from "../flags";
18-
import { SaveStep, TrainModelDialogStage } from "../model";
19+
import { useProject } from "../hooks/project-hooks";
20+
import { TrainModelDialogStage } from "../model";
1921
import { SessionPageId } from "../pages-config";
2022
import Tour from "../pages/Tour";
21-
import { useSettings, useStore } from "../store";
23+
import { useStore } from "../store";
2224
import { createHomePageUrl, createSessionPageUrl } from "../urls";
2325
import ActionBar from "./ActionBar";
2426
import AppLogo from "./AppLogo";
@@ -33,7 +35,6 @@ import SaveDialogs from "./SaveDialogs";
3335
import SettingsMenu from "./SettingsMenu";
3436
import ToolbarMenu from "./ToolbarMenu";
3537
import TrainModelDialogs from "./TrainModelFlowDialogs";
36-
import { useDeployment } from "../deployment";
3738

3839
interface DefaultPageLayoutProps {
3940
titleId?: string;
@@ -59,7 +60,6 @@ const DefaultPageLayout = ({
5960
const isEditorOpen = useStore((s) => s.isEditorOpen);
6061
const stage = useStore((s) => s.trainModelDialogStage);
6162

62-
const [settings] = useSettings();
6363
const toast = useToast();
6464
const { appNameFull } = useDeployment();
6565

@@ -93,15 +93,10 @@ const DefaultPageLayout = ({
9393
navigate(createHomePageUrl());
9494
}, [navigate]);
9595

96-
const setSave = useStore((s) => s.setSave);
97-
const handleSave = useCallback(() => {
98-
if (settings.showPreSaveHelp) {
99-
setSave({ step: SaveStep.PreSaveHelp });
100-
} else {
101-
setSave({ step: SaveStep.ProjectName });
102-
}
103-
}, [setSave, settings.showPreSaveHelp]);
104-
96+
const { saveHex } = useProject();
97+
const handleSave = useCallback(async () => {
98+
await saveHex();
99+
}, [saveHex]);
105100
return (
106101
<>
107102
{/* Suppress dialogs to prevent overlapping dialogs */}

src/hooks/project-hooks.tsx

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -131,42 +131,38 @@ export const ProjectProvider = ({
131131
const saveHex = useCallback(
132132
async (hex?: HexData): Promise<void> => {
133133
const { step } = save;
134-
if (hex) {
135-
if (settings.showPreSaveHelp && step === SaveStep.None) {
136-
// All we do is trigger the help and remember the project.
137-
setSave({
138-
step: SaveStep.PreSaveHelp,
139-
hex: hex,
140-
});
141-
} else {
142-
// We can just go ahead and download. Either the project came from
143-
// the editor or via the dialog flow.
144-
downloadHex(hex);
145-
setSave({
146-
step: SaveStep.None,
147-
});
148-
toast({
149-
id: "save-complete",
150-
position: "top",
151-
duration: 5_000,
152-
title: intl.formatMessage({ id: "saving-toast-title" }),
153-
status: "info",
154-
});
155-
}
156-
} else {
157-
// We need to request something to save.
158-
setSave({
159-
step: SaveStep.SaveProgress,
160-
});
134+
if (settings.showPreSaveHelp && step === SaveStep.None) {
135+
setSave({ hex, step: SaveStep.PreSaveHelp });
136+
} else if (
137+
getCurrentProject().header?.name === "Untitled" &&
138+
step === SaveStep.None
139+
) {
140+
setSave({ hex, step: SaveStep.ProjectName });
141+
} else if (!hex) {
142+
setSave({ hex, step: SaveStep.SaveProgress });
143+
// This will result in a future call to saveHex with a hex.
161144
await doAfterEditorUpdate(async () => {
162145
saveNextDownloadRef.current = true;
163146
await driverRef.current!.compile();
164147
});
148+
} else {
149+
downloadHex(hex);
150+
setSave({
151+
step: SaveStep.None,
152+
});
153+
toast({
154+
id: "save-complete",
155+
position: "top",
156+
duration: 5_000,
157+
title: intl.formatMessage({ id: "saving-toast-title" }),
158+
status: "info",
159+
});
165160
}
166161
},
167162
[
168163
doAfterEditorUpdate,
169164
driverRef,
165+
getCurrentProject,
170166
intl,
171167
save,
172168
setSave,

0 commit comments

Comments
 (0)