File tree Expand file tree Collapse file tree 3 files changed +18
-2
lines changed
Expand file tree Collapse file tree 3 files changed +18
-2
lines changed Original file line number Diff line number Diff line change 33import type { JSX } from "react" ;
44import { FilenameInput } from "@/components/editor/header/filename-input" ;
55import { useUpdateFilename } from "@/core/saving/filename" ;
6+ import { useSaveNotebook } from "@/core/saving/save-component" ;
67import { Paths } from "@/utils/paths" ;
78
89export 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"
Original file line number Diff line number Diff line change @@ -109,6 +109,7 @@ const renderWithProvider = <T>(hook: () => T) => {
109109// Shared mock setup
110110const mockSaveOrNameNotebook = vi . fn ( ) ;
111111const mockSaveIfNotebookIsPersistent = vi . fn ( ) ;
112+ const mockSaveNotebook = vi . fn ( ) ;
112113const mockRunCell = vi . fn ( ) ;
113114const mockCopyCell = vi . fn ( ) ;
114115const 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 ,
Original file line number Diff line number Diff line change @@ -190,6 +190,7 @@ export function useSaveNotebook() {
190190 return {
191191 saveOrNameNotebook,
192192 saveIfNotebookIsPersistent,
193+ saveNotebook,
193194 } ;
194195}
195196
You can’t perform that action at this time.
0 commit comments