Procházet zdrojové kódy

prevent mode editor

ryoji-s před 2 roky
rodič
revize
509fddf337
1 změnil soubory, kde provedl 6 přidání a 4 odebrání
  1. 6 4
      apps/app/src/stores/ui.tsx

+ 6 - 4
apps/app/src/stores/ui.tsx

@@ -132,15 +132,17 @@ type EditorModeUtils = {
 
 
 export const useEditorMode = (): SWRResponseWithUtils<EditorModeUtils, EditorMode> => {
 export const useEditorMode = (): SWRResponseWithUtils<EditorModeUtils, EditorMode> => {
   const { data: _isEditable } = useIsEditable();
   const { data: _isEditable } = useIsEditable();
+  const { data: isNotFound } = useIsNotFound();
 
 
   const editorModeByHash = determineEditorModeByHash();
   const editorModeByHash = determineEditorModeByHash();
 
 
   const isLoading = _isEditable === undefined;
   const isLoading = _isEditable === undefined;
   const isEditable = !isLoading && _isEditable;
   const isEditable = !isLoading && _isEditable;
-  const initialData = isEditable ? editorModeByHash : EditorMode.View;
+  const preventModeEditor = !isEditable || isNotFound === undefined || isNotFound === true;
+  const initialData = preventModeEditor ? EditorMode.View : editorModeByHash;
 
 
   const swrResponse = useSWRImmutable(
   const swrResponse = useSWRImmutable(
-    isLoading ? null : ['editorMode', isEditable],
+    isLoading ? null : ['editorMode', isEditable, preventModeEditor],
     null,
     null,
     { fallbackData: initialData },
     { fallbackData: initialData },
   );
   );
@@ -148,12 +150,12 @@ export const useEditorMode = (): SWRResponseWithUtils<EditorModeUtils, EditorMod
   // construct overriding mutate method
   // construct overriding mutate method
   const mutateOriginal = swrResponse.mutate;
   const mutateOriginal = swrResponse.mutate;
   const mutate = useCallback((editorMode: EditorMode, shouldRevalidate?: boolean) => {
   const mutate = useCallback((editorMode: EditorMode, shouldRevalidate?: boolean) => {
-    if (!isEditable) {
+    if (preventModeEditor) {
       return Promise.resolve(EditorMode.View); // fixed if not editable
       return Promise.resolve(EditorMode.View); // fixed if not editable
     }
     }
     updateHashByEditorMode(editorMode);
     updateHashByEditorMode(editorMode);
     return mutateOriginal(editorMode, shouldRevalidate);
     return mutateOriginal(editorMode, shouldRevalidate);
-  }, [isEditable, mutateOriginal]);
+  }, [preventModeEditor, mutateOriginal]);
 
 
   const getClassNames = useCallback(() => {
   const getClassNames = useCallback(() => {
     return getClassNamesByEditorMode(swrResponse.data);
     return getClassNamesByEditorMode(swrResponse.data);