kaori 3 лет назад
Родитель
Сommit
b13730db95
2 измененных файлов с 14 добавлено и 10 удалено
  1. 5 0
      packages/app/src/client/util/editor.ts
  2. 9 10
      packages/app/src/pages/[[...path]].page.tsx

+ 5 - 0
packages/app/src/client/util/editor.ts

@@ -24,3 +24,8 @@ export const getOptionsToSave = (
     grantUserGroupName,
   };
 };
+
+
+export const showAlertDialog = (msg): void => {
+  return window.alert(msg);
+};

+ 9 - 10
packages/app/src/pages/[[...path]].page.tsx

@@ -1,6 +1,7 @@
 import React, { useEffect, useCallback } from 'react';
 
 import { pagePathUtils } from '@growi/core';
+import { showAlertDialog } from '~/client/util/editor';
 import { isValidObjectId } from 'mongoose';
 import {
   NextPage, GetServerSideProps, GetServerSidePropsContext,
@@ -159,14 +160,12 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
   // // eslint-disable-next-line react-hooks/exhaustive-deps
   // }, []);
 
-  const alertForNextRouter = useCallback(() => {
-    window.alert('alert!!!');
-    return;
-  }, []);
 
-  const alertForJs = useCallback((e) => {
+  const unsavedAlertMsg = 'Changes you made may not be saved.'
+
+  const showAlertDialogForRouteChangesByBrowser = useCallback((e) => {
     e.preventDefault();
-    window.alert('alert!!!');
+    showAlertDialog(unsavedAlertMsg);
     e.returnValue = '';
     return;
   },[]);
@@ -176,9 +175,9 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
   * Example: window.location.href, F5
   */
   useEffect(() => {
-    window.addEventListener('beforeunload', alertForJs);
+    window.addEventListener('beforeunload', showAlertDialogForRouteChangesByBrowser);
     return () => {
-      window.removeEventListener('beforeunload', alertForJs);
+      window.removeEventListener('beforeunload', showAlertDialogForRouteChangesByBrowser);
     };
   }, []);
 
@@ -188,9 +187,9 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
   * https://nextjs.org/docs/api-reference/next/router
   */
   useEffect(() => {
-    router.events.on('routeChangeStart', alertForNextRouter)
+    router.events.on('routeChangeStart', () => showAlertDialog(unsavedAlertMsg))
     return () => {
-      router.events.off('routeChangeStart', alertForNextRouter)
+      router.events.off('routeChangeStart', () => showAlertDialog(unsavedAlertMsg))
     };
   }, []);