Browse Source

impl useSWRxUserRelatedGroups

Shun Miyazawa 1 year ago
parent
commit
bc4c62cdb4

+ 13 - 0
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManegementModal.tsx

@@ -8,6 +8,7 @@ import {
 import { toastError, toastSuccess } from '~/client/util/toastr';
 import type { IPageForItem } from '~/interfaces/page';
 import { usePageSelectModal } from '~/stores/modal';
+import { useSWRxUserRelatedGroups } from '~/stores/user';
 import loggerFactory from '~/utils/logger';
 
 import type { SelectedPage } from '../../../interfaces/selected-page';
@@ -23,9 +24,21 @@ const moduleClass = styles['grw-ai-assistant-manegement'] ?? '';
 const logger = loggerFactory('growi:openai:client:components:AiAssistantManegementModal');
 
 const AiAssistantManegementModalSubstance = (): JSX.Element => {
+  /*
+  *  stores
+  */
   const { open: openPageSelectModal } = usePageSelectModal();
+  const { data: userRelatedGroups } = useSWRxUserRelatedGroups();
+
+  /*
+  * States
+  */
   const [selectedPages, setSelectedPages] = useState<SelectedPage[]>([]);
 
+
+  /*
+  *  Methods
+  */
   const clickOpenPageSelectModalHandler = useCallback(() => {
     const onSelected = (page: IPageForItem, isIncludeSubPage: boolean) => {
       const selectedPageIds = selectedPages.map(selectedPage => selectedPage.page._id);

+ 12 - 1
apps/app/src/stores/user.tsx

@@ -1,4 +1,4 @@
-import type { IUserHasId } from '@growi/core';
+import type { IUserGroupRelation, IUserHasId } from '@growi/core';
 import type { SWRResponse } from 'swr';
 import useSWR from 'swr';
 import useSWRImmutable from 'swr/immutable';
@@ -49,3 +49,14 @@ export const useSWRxUsernames = (q: string, offset?: number, limit?: number, opt
     }).then(result => result.data),
   );
 };
+
+type RelatedGroupsResponse = {
+  relatedGroups: IUserGroupRelation[],
+}
+
+export const useSWRxUserRelatedGroups = (): SWRResponse<RelatedGroupsResponse, Error> => {
+  return useSWRImmutable<RelatedGroupsResponse>(
+    ['/user/related-groups'],
+    ([endpoint]) => apiv3Get(endpoint).then(response => response.data),
+  );
+};