1
0
mirror of https://github.com/excalidraw/excalidraw.git synced 2024-11-10 11:35:52 +01:00

[RFC] show confirmation dialog before the user closes the page (#957)

This commit is contained in:
Keyan Zhang 2020-03-15 14:00:33 -07:00 committed by GitHub
parent fed7054114
commit d58216f5ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -522,6 +522,8 @@ export class App extends React.Component<any, AppState> {
}
const scene = await loadScene(null);
this.syncActionResult(scene);
window.addEventListener("beforeunload", this.beforeUnload);
}
public componentWillUnmount() {
@ -554,6 +556,7 @@ export class App extends React.Component<any, AppState> {
false,
);
document.removeEventListener("gestureend", this.onGestureEnd as any, false);
window.removeEventListener("beforeunload", this.beforeUnload);
}
public state: AppState = getDefaultAppState();
@ -2180,6 +2183,17 @@ export class App extends React.Component<any, AppState> {
}));
};
private beforeUnload = (event: BeforeUnloadEvent) => {
if (
this.state.isCollaborating &&
hasNonDeletedElements(globalSceneState.getAllElements())
) {
event.preventDefault();
// NOTE: modern browsers no longer allow showing a custom message here
event.returnValue = "";
}
};
private addElementsFromPaste = (
clipboardElements: readonly ExcalidrawElement[],
) => {