Skip to content

Commit 718f803

Browse files
authored
fix: save content when creating a new file via filename input (#8009)
1 parent 47a782d commit 718f803

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

‎frontend/src/components/editor/header/filename-form.tsx‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,34 @@
33
import type { JSX } from "react";
44
import { FilenameInput } from "@/components/editor/header/filename-input";
55
import { useUpdateFilename } from "@/core/saving/filename";
6+
import { useSaveNotebook } from "@/core/saving/save-component";
67
import { Paths } from "@/utils/paths";
78

89
export const FilenameForm = ({
910
filename,
1011
}: {
1112
filename: string | null;
1213
}): JSX.Element => {
13-
const setFilename = useUpdateFilename();
14+
const updateFilename = useUpdateFilename();
15+
const { saveNotebook } = useSaveNotebook();
16+
17+
const handleNameChange = (newFilename: string) => {
18+
const wasUnnamed = filename === null;
19+
updateFilename(newFilename).then((name) => {
20+
// When creating a new file (was unnamed), also save the content
21+
if (name !== null && wasUnnamed) {
22+
saveNotebook(name, true);
23+
}
24+
});
25+
};
26+
1427
return (
1528
<FilenameInput
1629
placeholderText={
1730
filename ? Paths.basename(filename) : "untitled marimo notebook"
1831
}
1932
initialValue={filename}
20-
onNameChange={setFilename}
33+
onNameChange={handleNameChange}
2134
flexibleWidth={true}
2235
resetOnBlur={true}
2336
data-testid="filename-input"

‎frontend/src/components/editor/navigation/__tests__/navigation.test.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ const renderWithProvider = <T>(hook: () => T) => {
109109
// Shared mock setup
110110
const mockSaveOrNameNotebook = vi.fn();
111111
const mockSaveIfNotebookIsPersistent = vi.fn();
112+
const mockSaveNotebook = vi.fn();
112113
const mockRunCell = vi.fn();
113114
const mockCopyCell = vi.fn();
114115
const mockPasteCell = vi.fn();
@@ -156,6 +157,7 @@ describe("useCellNavigationProps", () => {
156157
mockUseSaveNotebook.mockReturnValue({
157158
saveOrNameNotebook: mockSaveOrNameNotebook,
158159
saveIfNotebookIsPersistent: mockSaveIfNotebookIsPersistent,
160+
saveNotebook: mockSaveNotebook,
159161
});
160162
mockUseCellActions.mockReturnValue(
161163
mockCellActions as unknown as CellActions,

‎frontend/src/core/saving/save-component.tsx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ export function useSaveNotebook() {
190190
return {
191191
saveOrNameNotebook,
192192
saveIfNotebookIsPersistent,
193+
saveNotebook,
193194
};
194195
}
195196

0 commit comments

Comments
 (0)