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

+ 13 - 0
packages/app/src/interfaces/user-group-response.ts

@@ -0,0 +1,13 @@
+import { IUserGroupHasId, IUserGroupRelationHasId } from './user';
+
+export type UserGroupListResult = {
+  userGroups: IUserGroupHasId[],
+};
+
+export type ChildUserGroupListResult = {
+  childUserGroups: IUserGroupHasId[],
+};
+
+export type UserGroupRelationListResult = {
+  userGroupRelations: IUserGroupRelationHasId[],
+};

+ 1 - 1
packages/app/src/server/routes/apiv3/user-group.js

@@ -61,7 +61,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: a result of `UserGroup.find`
    */
-  router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
+  router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => { // TODO 85062: userGroups with no parent
     const { query } = req;
 
     // TODO: filter with querystring

+ 35 - 0
packages/app/src/stores/user-group.tsx

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