Taichi Masuyama 4 лет назад
Родитель
Сommit
a2be30d3d6

+ 9 - 9
packages/app/src/components/Admin/UserGroup/UserGroupPage.tsx

@@ -28,10 +28,10 @@ const UserGroupPage: FC<Props> = (props: Props) => {
   /*
    * Fetch
    */
-  const { data: userGroupsData, mutate: mutateUserGroups } = useSWRxUserGroupList();
-  const userGroupIds = userGroupsData?.userGroups?.map(group => group._id);
-  const { data: userGroupRelationsData, mutate: mutateUserGroupRelations } = useSWRxUserGroupRelationList(userGroupIds);
-  const { data: childUserGroupsData } = useSWRxChildUserGroupList(userGroupIds);
+  const { data: userGroups, mutate: mutateUserGroups } = useSWRxUserGroupList();
+  const userGroupIds = userGroups?.map(group => group._id);
+  const { data: userGroupRelations, mutate: mutateUserGroupRelations } = useSWRxUserGroupRelationList(userGroupIds);
+  const { data: childUserGroups } = useSWRxChildUserGroupList(userGroupIds);
 
   /*
    * State
@@ -104,7 +104,7 @@ const UserGroupPage: FC<Props> = (props: Props) => {
     }
   }, [mutateUserGroups, mutateUserGroupRelations]);
 
-  if (userGroupsData == null || userGroupRelationsData == null || childUserGroupsData == null) {
+  if (userGroups == null || userGroupRelations == null || childUserGroups == null) {
     return <></>;
   }
 
@@ -131,15 +131,15 @@ const UserGroupPage: FC<Props> = (props: Props) => {
       }
       <UserGroupTable
         appContainer={props.appContainer}
-        userGroups={userGroupsData.userGroups}
-        childUserGroups={childUserGroupsData.childUserGroups}
+        userGroups={userGroups}
+        childUserGroups={childUserGroups}
         isAclEnabled={isAclEnabled}
         onDelete={showDeleteModal}
-        userGroupRelations={userGroupRelationsData.userGroupRelations}
+        userGroupRelations={userGroupRelations}
       />
       <UserGroupDeleteModal
         appContainer={props.appContainer}
-        userGroups={userGroupsData.userGroups}
+        userGroups={userGroups}
         deleteUserGroup={selectedUserGroup}
         onDelete={deleteUserGroupById}
         isShow={isDeleteModalShown}

+ 14 - 10
packages/app/src/stores/user-group.tsx

@@ -1,4 +1,4 @@
-import useSWR, { SWRResponse } from 'swr';
+import { SWRResponse } from 'swr';
 import useSWRImmutable from 'swr/immutable';
 
 import { apiv3Get } from '~/client/util/apiv3-client';
@@ -6,30 +6,34 @@ import { IUserGroupHasId, IUserGroupRelationHasId } from '~/interfaces/user';
 import { UserGroupListResult, ChildUserGroupListResult, UserGroupRelationListResult } from '~/interfaces/user-group-response';
 
 
-export const useSWRxUserGroupList = (initialData?: IUserGroupHasId[]): SWRResponse<UserGroupListResult, Error> => {
-  return useSWRImmutable(
+export const useSWRxUserGroupList = (initialData?: IUserGroupHasId[]): SWRResponse<IUserGroupHasId[], Error> => {
+  return useSWRImmutable<IUserGroupHasId[], Error>(
     '/user-groups',
-    endpoint => apiv3Get(endpoint, { pagination: false }).then(result => result.data),
+    endpoint => apiv3Get<UserGroupListResult>(endpoint, { pagination: false }).then(result => result.data.userGroups),
     {
       fallbackData: initialData,
     },
   );
 };
 
-export const useSWRxChildUserGroupList = (parentIds?: string[], initialData?: IUserGroupHasId[]): SWRResponse<ChildUserGroupListResult, Error> => {
-  return useSWRImmutable(
+export const useSWRxChildUserGroupList = (
+    parentIds: string[] | undefined, initialData?: IUserGroupHasId[],
+): SWRResponse<IUserGroupHasId[], Error> => {
+  return useSWRImmutable<IUserGroupHasId[], Error>(
     parentIds != null ? ['/user-groups/children', parentIds] : null,
-    (endpoint, parentIds) => apiv3Get(endpoint, { parentIds }).then(result => result.data),
+    (endpoint, parentIds) => apiv3Get<ChildUserGroupListResult>(endpoint, { parentIds }).then(result => result.data.childUserGroups),
     {
       fallbackData: initialData,
     },
   );
 };
 
-export const useSWRxUserGroupRelationList = (groupIds?: string[], initialData?: IUserGroupRelationHasId[]): SWRResponse<UserGroupRelationListResult, Error> => {
-  return useSWRImmutable(
+export const useSWRxUserGroupRelationList = (
+    groupIds: string[] | undefined, initialData?: IUserGroupRelationHasId[],
+): SWRResponse<IUserGroupRelationHasId[], Error> => {
+  return useSWRImmutable<IUserGroupRelationHasId[], Error>(
     groupIds != null ? ['/user-group-relations', groupIds] : null,
-    (endpoint, parentIds) => apiv3Get(endpoint, { parentIds }).then(result => result.data),
+    (endpoint, parentIds) => apiv3Get<UserGroupRelationListResult>(endpoint, { parentIds }).then(result => result.data.userGroupRelations),
     {
       fallbackData: initialData,
     },