diff --git a/frontend/src/components/editor/actions/useRestartKernel.tsx b/frontend/src/components/editor/actions/useRestartKernel.tsx index 59144d32782..ab7a962f78b 100644 --- a/frontend/src/components/editor/actions/useRestartKernel.tsx +++ b/frontend/src/components/editor/actions/useRestartKernel.tsx @@ -5,23 +5,31 @@ import { useImperativeModal } from "@/components/modal/ImperativeModal"; import { AlertDialogDestructiveAction } from "@/components/ui/alert-dialog"; import { connectionAtom } from "@/core/network/connection"; import { useRequestClient } from "@/core/network/requests"; +import { useSaveNotebook } from "@/core/saving/save-component"; import { WebSocketState } from "@/core/websocket/types"; +import { Logger } from "@/utils/Logger"; import { reloadSafe } from "@/utils/reload-safe"; export function useRestartKernel() { const { openConfirm } = useImperativeModal(); const setConnection = useSetAtom(connectionAtom); const { sendRestart } = useRequestClient(); + const { saveIfNotebookIsPersistent } = useSaveNotebook(); return () => { openConfirm({ title: "Restart Kernel", description: - "This will restart the Python kernel. You'll lose all data that's in memory. You will also lose any unsaved changes, so make sure to save your work before restarting.", + "This will restart the Python kernel. You'll lose all data that's in memory. Unsaved code changes are saved automatically before restarting.", variant: "destructive", confirmAction: ( { + try { + await saveIfNotebookIsPersistent(); + } catch (error) { + Logger.warn("restart: pre-restart save failed", error); + } setConnection({ state: WebSocketState.CLOSING }); await sendRestart(); reloadSafe(); diff --git a/frontend/src/core/saving/save-component.tsx b/frontend/src/core/saving/save-component.tsx index f2f151f6a1e..dc8fbe837d4 100644 --- a/frontend/src/core/saving/save-component.tsx +++ b/frontend/src/core/saving/save-component.tsx @@ -160,7 +160,7 @@ export function useSaveNotebook() { isNamedPersistentFile(filename) && connection.state === WebSocketState.OPEN ) { - saveNotebook(filename, userInitiated); + return saveNotebook(filename, userInitiated); } });