Bläddra i källkod

refactor: migrate useEditingClients to new state management and update related components

Yuki Takei 6 månader sedan
förälder
incheckning
b7f47d7046

+ 3 - 3
apps/app/src/client/components/PageEditor/EditorNavbar/EditorNavbar.tsx

@@ -1,7 +1,7 @@
 import type { JSX } from 'react';
 
 import { PageHeader } from '~/client/components/PageHeader';
-import { useEditingClients } from '~/stores/use-editing-clients';
+import { useEditingClients } from '~/states/ui/editor/editing-clients';
 
 import { EditingUserList } from './EditingUserList';
 
@@ -10,10 +10,10 @@ import styles from './EditorNavbar.module.scss';
 const moduleClass = styles['editor-navbar'] ?? '';
 
 const EditingUsers = (): JSX.Element => {
-  const { data: editingClients } = useEditingClients();
+  const editingClients = useEditingClients();
   return (
     <EditingUserList
-      clientList={editingClients ?? []}
+      clientList={editingClients}
     />
   );
 };

+ 2 - 2
apps/app/src/client/components/PageEditor/PageEditor.tsx

@@ -55,7 +55,7 @@ import {
 } from '~/stores/page';
 import { mutatePageTree, mutateRecentlyUpdated } from '~/stores/page-listing';
 import { usePreviewOptions } from '~/stores/renderer';
-import { useEditingClients } from '~/stores/use-editing-clients';
+import { useEditingClientsActions } from '~/states/ui/editor/editing-clients';
 import loggerFactory from '~/utils/logger';
 
 import { EditorNavbar } from './EditorNavbar';
@@ -119,7 +119,7 @@ export const PageEditorSubstance = (props: Props): JSX.Element => {
   const { data: editorSettings } = useEditorSettings();
   const { mutate: mutateIsGrantNormalized } = useSWRxCurrentGrantData(currentPage?._id);
   const user = useCurrentUser();
-  const { mutate: mutateEditingUsers } = useEditingClients();
+  const { mutate: mutateEditingUsers } = useEditingClientsActions();
   const onConflict = useConflictResolver();
   const { data: reservedNextCaretLine, mutate: mutateReservedNextCaretLine } = useReservedNextCaretLine();
   const isEnableUnifiedMergeView = useIsEnableUnifiedMergeView();

+ 28 - 0
apps/app/src/states/ui/editor/editing-clients.ts

@@ -0,0 +1,28 @@
+import type { EditingClient } from '@growi/editor';
+import { atom, useAtomValue, useSetAtom } from 'jotai';
+
+// Atom definition
+const editingClientsAtom = atom<EditingClient[]>([]);
+
+// Read-only hook
+export const useEditingClients = (): EditingClient[] => {
+  return useAtomValue(editingClientsAtom);
+};
+
+// Setter hook
+export const useSetEditingClients = () => {
+  return useSetAtom(editingClientsAtom);
+};
+
+// Actions hook for mutate compatibility
+export const useEditingClientsActions = () => {
+  const setEditingClients = useSetAtom(editingClientsAtom);
+
+  const mutate = (newClients?: EditingClient[]) => {
+    if (newClients !== undefined) {
+      setEditingClients(newClients);
+    }
+  };
+
+  return { mutate };
+};

+ 0 - 7
apps/app/src/stores/use-editing-clients.ts

@@ -1,7 +0,0 @@
-import { useSWRStatic } from '@growi/core/dist/swr';
-import type { EditingClient } from '@growi/editor';
-import type { SWRResponse } from 'swr';
-
-export const useEditingClients = (status?: EditingClient[]): SWRResponse<EditingClient[], Error> => {
-  return useSWRStatic<EditingClient[], Error>('editingUsers', status, { fallbackData: [] });
-};