mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
that may not be saved dialog
This commit is contained in:
@@ -117,6 +117,19 @@ export function EditorProvider({ projectId, children }: EditorProviderProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function EditorRuntimeBindings() {
|
function EditorRuntimeBindings() {
|
||||||
|
const editor = useEditor();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
|
||||||
|
if (!editor.save.getIsDirty()) return;
|
||||||
|
event.preventDefault();
|
||||||
|
(event as unknown as { returnValue: string }).returnValue = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
return () => window.removeEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
}, [editor]);
|
||||||
|
|
||||||
useEditorActions();
|
useEditorActions();
|
||||||
useKeybindingsListener();
|
useKeybindingsListener();
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ export class SaveManager {
|
|||||||
await this.saveNow();
|
await this.saveNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getIsDirty(): boolean {
|
||||||
|
return this.hasPendingSave || this.isSaving;
|
||||||
|
}
|
||||||
|
|
||||||
private queueSave(): void {
|
private queueSave(): void {
|
||||||
if (this.isSaving) return;
|
if (this.isSaving) return;
|
||||||
if (this.saveTimer) {
|
if (this.saveTimer) {
|
||||||
|
|||||||
Reference in New Issue
Block a user