Răsfoiți Sursa

enable unsaved warning

Yuki Takei 3 ani în urmă
părinte
comite
6008fe3cbd
1 a modificat fișierele cu 13 adăugiri și 11 ștergeri
  1. 13 11
      packages/app/src/components/PageEditor.tsx

+ 13 - 11
packages/app/src/components/PageEditor.tsx

@@ -100,13 +100,15 @@ const PageEditor = React.memo((props: Props): JSX.Element => {
   const { data: isTextlintEnabled } = useIsTextlintEnabled();
   const { data: isTextlintEnabled } = useIsTextlintEnabled();
   const { data: isIndentSizeForced } = useIsIndentSizeForced();
   const { data: isIndentSizeForced } = useIsIndentSizeForced();
   const { data: indentSize, mutate: mutateCurrentIndentSize } = useCurrentIndentSize();
   const { data: indentSize, mutate: mutateCurrentIndentSize } = useCurrentIndentSize();
-  const { mutate: mutateIsEnabledUnsavedWarning } = useIsEnabledUnsavedWarning();
+  const { data: isEnabledUnsavedWarning, mutate: mutateIsEnabledUnsavedWarning } = useIsEnabledUnsavedWarning();
   const { data: isUploadableFile } = useIsUploadableFile();
   const { data: isUploadableFile } = useIsUploadableFile();
   const { data: isUploadableImage } = useIsUploadableImage();
   const { data: isUploadableImage } = useIsUploadableImage();
 
 
   const { data: rendererOptions } = usePreviewOptions();
   const { data: rendererOptions } = usePreviewOptions();
 
 
-  const [markdown, setMarkdown] = useState<string>('');
+  const initialValue = currentPage?.revision?.body;
+
+  const [markdown, setMarkdown] = useState<string>(initialValue ?? '');
 
 
   const slackChannels = useMemo(() => (slackChannelsData ? slackChannelsData.toString() : ''), []);
   const slackChannels = useMemo(() => (slackChannelsData ? slackChannelsData.toString() : ''), []);
 
 
@@ -420,13 +422,15 @@ const PageEditor = React.memo((props: Props): JSX.Element => {
     };
     };
   }, []);
   }, []);
 
 
-  // Displays an alert if there is a difference with pageContainer's markdown
-  // useEffect(() => {
-  //   // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-  //   if (pageContainer.state.markdown! !== markdown) {
-  //     mutateIsEnabledUnsavedWarning(true);
-  //   }
-  // }, [editorContainer, markdown, mutateIsEnabledUnsavedWarning, pageContainer.state.markdown]);
+  // Displays an alert if there is a difference with original markdown body
+  useEffect(() => {
+    if (initialValue == null || isEnabledUnsavedWarning) {
+      return;
+    }
+    if (initialValue !== markdown) {
+      mutateIsEnabledUnsavedWarning(true);
+    }
+  }, [initialValue, isEnabledUnsavedWarning, markdown, mutateIsEnabledUnsavedWarning]);
 
 
   // Detect indent size from contents (only when users are allowed to change it)
   // Detect indent size from contents (only when users are allowed to change it)
   // useEffect(() => {
   // useEffect(() => {
@@ -450,8 +454,6 @@ const PageEditor = React.memo((props: Props): JSX.Element => {
 
 
   const isUploadable = isUploadableImage || isUploadableFile;
   const isUploadable = isUploadableImage || isUploadableFile;
 
 
-  const initialValue = currentPage?.revision?.body;
-
   return (
   return (
     <div className="d-flex flex-wrap">
     <div className="d-flex flex-wrap">
       <div className="page-editor-editor-container flex-grow-1 flex-basis-0 mw-0">
       <div className="page-editor-editor-container flex-grow-1 flex-basis-0 mw-0">