Просмотр исходного кода

do not revalidate for mutation process

kaori 3 лет назад
Родитель
Сommit
819eb00502

+ 3 - 3
packages/app/src/components/Page.jsx

@@ -191,9 +191,9 @@ const PageWrapper = (props) => {
   const { data: editorMode } = useEditorMode();
   const { data: isGuestUser } = useIsGuestUser();
   const { data: isMobile } = useIsMobile();
-  const { data: slackChannelsData } = useSWRxSlackChannels(currentPagePath);
-  const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
-  const { data: isSlackEnabled } = useSWRxIsSlackEnabled(isSlackEnabledByDefault);
+  const { data: slackChannelsData } = useSWRxSlackChannels();
+  // const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
+  const { data: isSlackEnabled } = useSWRxIsSlackEnabled();
   const { data: grant } = useSelectedGrant();
   const { data: grantGroupId } = useSelectedGrantGroupId();
   const { data: grantGroupName } = useSelectedGrantGroupName();

+ 3 - 2
packages/app/src/components/PageEditor.jsx

@@ -410,8 +410,9 @@ const PageEditorWrapper = (props) => {
   // const { data: isSlackEnabled } = useIsSlackEnabled();
   const { data: currentPagePath } = useCurrentPagePath();
   const { data: slackChannelsData } = useSWRxSlackChannels(currentPagePath);
-  const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
-  const { data: isSlackEnabled } = useSWRxIsSlackEnabled(isSlackEnabledByDefault);
+  // const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
+  // const { data: isSlackEnabled } = useSWRxIsSlackEnabled(isSlackEnabledByDefault);
+  const { data: isSlackEnabled } = useSWRxIsSlackEnabled();
   const { data: grant, mutate: mutateGrant } = useSelectedGrant();
   const { data: grantGroupId } = useSelectedGrantGroupId();
   const { data: grantGroupName } = useSelectedGrantGroupName();

+ 8 - 8
packages/app/src/components/PageEditor/EditorNavbarBottom.tsx

@@ -7,7 +7,7 @@ import { Collapse, Button } from 'reactstrap';
 import AppContainer from '~/client/services/AppContainer';
 import EditorContainer from '~/client/services/EditorContainer';
 import { useCurrentPagePath } from '~/stores/context';
-import { useSWRxSlackChannels, useSWRxIsSlackEnabled } from '~/stores/editor';
+import { useSWRxSlackChannels, useSWRxIsSlackEnabledBydefault, useSWRxIsSlackEnabled } from '~/stores/editor';
 import {
   EditorMode, useDrawerOpened, useEditorMode, useIsDeviceSmallerThanMd,
 } from '~/stores/ui';
@@ -33,13 +33,13 @@ const EditorNavbarBottom = (props) => {
   const { data: isDeviceSmallerThanMd } = useIsDeviceSmallerThanMd();
   const additionalClasses = ['grw-editor-navbar-bottom'];
 
-  const { data: currentPagePath } = useCurrentPagePath();
-  const { data: slackChannelsData } = useSWRxSlackChannels(currentPagePath);
-  const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
-  const { data: isSlackEnabled, mutate: mutateIsSlackEnabled } = useSWRxIsSlackEnabled(isSlackEnabledByDefault);
+  // const { data: currentPagePath } = useCurrentPagePath();
+  const { data: slackChannelsData } = useSWRxSlackChannels();
+  // const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0);
+  // const { data: isSlackEnabledByDefault } = useSWRxIsSlackEnabledBydefault();
+  const { data: isSlackEnabled, mutate: mutateIsSlackEnabled } = useSWRxIsSlackEnabled();
 
-  console.log({ isSlackEnabledByDefault });
-  console.log({ isSlackEnabled });
+  console.log('isSlackEnabled_hoge', isSlackEnabled);
 
   const [slackChannelsStr, setSlackChannelsStr] = useState<string>('');
 
@@ -50,7 +50,7 @@ const EditorNavbarBottom = (props) => {
   }, [slackChannelsData]);
 
   const isSlackEnabledToggleHandler = (bool: boolean) => {
-    mutateIsSlackEnabled(bool);
+    mutateIsSlackEnabled(bool, false);
   };
 
   const slackChannelsChangedHandler = useCallback((slackChannels: string) => {

+ 4 - 4
packages/app/src/components/PageEditorByHackmd.jsx

@@ -431,10 +431,10 @@ const PageEditorByHackmdHOCWrapper = withUnstatedContainers(PageEditorByHackmd,
 
 const PageEditorByHackmdWrapper = (props) => {
   const { data: editorMode } = useEditorMode();
-  const { data: currentPagePath } = useCurrentPagePath();
-  const { data: slackChannelsData } = useSWRxSlackChannels(currentPagePath);
-  const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
-  const { data: isSlackEnabled } = useSWRxIsSlackEnabled(isSlackEnabledByDefault);
+  // const { data: currentPagePath } = useCurrentPagePath();
+  const { data: slackChannelsData } = useSWRxSlackChannels();
+  // const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
+  const { data: isSlackEnabled } = useSWRxIsSlackEnabled();
   const { data: grant } = useSelectedGrant();
   const { data: grantGroupId } = useSelectedGrantGroupId();
   const { data: grantGroupName } = useSelectedGrantGroupName();

+ 24 - 12
packages/app/src/stores/editor.tsx

@@ -7,7 +7,9 @@ import { Nullable } from '~/interfaces/common';
 import { IEditorSettings } from '~/interfaces/editor-settings';
 import { SlackChannels } from '~/interfaces/user-trigger-notification';
 
-import { useCurrentUser, useDefaultIndentSize, useIsGuestUser } from './context';
+import {
+  useCurrentUser, useDefaultIndentSize, useIsGuestUser, useCurrentPagePath,
+} from './context';
 import { localStorageMiddleware } from './middlewares/sync-to-storage';
 import { useStaticSWR } from './use-static-swr';
 
@@ -72,20 +74,30 @@ export const useCurrentIndentSize = (): SWRResponse<number, Error> => {
 /*
 * Slack Notification
 */
+export const useSWRxSlackChannels = (): SWRResponse<Nullable<string[]>, Error> => {
+  const { data: currentPagePath } = useCurrentPagePath();
+  const shouldFetch: boolean = currentPagePath != null;
+  return useSWR(
+    shouldFetch ? ['/pages.updatePost', currentPagePath] : null,
+    (endpoint, path) => apiGet(endpoint, { path }).then((response: SlackChannels) => response.updatePost),
+  );
+};
 
-// export const useIsSlackEnabled = (isEnabled?: boolean): SWRResponse<boolean, Error> => {
-//   return useStaticSWR('isSlackEnabled', isEnabled, { fallbackData: false });
-// };
-
-export const useSWRxIsSlackEnabled = (isEnabled: boolean): SWRResponse<boolean, Error> => {
-  // console.log({ isEnabled });
-  return useSWR(['isSlackEnabled', isEnabled], (key: string, isEnabled: boolean) => isEnabled);
+export const useSWRxIsSlackEnabledBydefault = (): SWRResponse<boolean, Error> => {
+  // const { data: currentPagePath } = useCurrentPagePath();
+  const { data: slackChannelsData } = useSWRxSlackChannels();
+  const isSlackEnabledByDefault = (slackChannelsData != null && slackChannelsData.length > 0) || false;
+  return useSWR(
+    ['isSlackEnabledByDefault', isSlackEnabledByDefault],
+    (key: string, isSlackEnabledByDefault: boolean) => isSlackEnabledByDefault,
+  );
 };
 
-export const useSWRxSlackChannels = (path: Nullable<string>): SWRResponse<Nullable<string[]>, Error> => {
-  const shouldFetch: boolean = path != null;
+export const useSWRxIsSlackEnabled = (isEnabled?: boolean): SWRResponse<boolean, Error> => {
+  console.log('useSWRxIsSlackEnabled', isEnabled);
+  const { data: isSlackEnabledByDefault } = useSWRxIsSlackEnabledBydefault();
   return useSWR(
-    shouldFetch ? ['/pages.updatePost', path] : null,
-    (endpoint, path) => apiGet(endpoint, { path }).then((response: SlackChannels) => response.updatePost),
+    ['isSlackEnabled', isEnabled != null ? isEnabled : isSlackEnabledByDefault],
+    (key: string, isEnabled: boolean) => isEnabled,
   );
 };