user-group.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import useSWR, { SWRResponse } from 'swr';
  2. import useSWRImmutable from 'swr/immutable';
  3. import { apiv3Get } from '~/client/util/apiv3-client';
  4. import { IUserGroupHasId, IUserGroupRelationHasId } from '~/interfaces/user';
  5. import { UserGroupListResult, ChildUserGroupListResult, UserGroupRelationListResult } from '~/interfaces/user-group-response';
  6. export const useSWRxUserGroupList = (initialData?: IUserGroupHasId[]): SWRResponse<UserGroupListResult, Error> => {
  7. return useSWRImmutable(
  8. '/user-groups',
  9. endpoint => apiv3Get(endpoint, { pagination: false }).then(result => result.data),
  10. {
  11. fallbackData: initialData,
  12. },
  13. );
  14. };
  15. export const useSWRxChildUserGroupList = (parentIds?: string[], initialData?: IUserGroupHasId[]): SWRResponse<ChildUserGroupListResult, Error> => {
  16. return useSWRImmutable(
  17. parentIds != null ? ['/user-groups/children', parentIds] : null,
  18. (endpoint, parentIds) => apiv3Get(endpoint, { parentIds }).then(result => result.data),
  19. {
  20. fallbackData: initialData,
  21. },
  22. );
  23. };
  24. export const useSWRxUserGroupRelationList = (groupIds?: string[], initialData?: IUserGroupRelationHasId[]): SWRResponse<UserGroupRelationListResult, Error> => {
  25. return useSWRImmutable(
  26. groupIds != null ? ['/user-group-relations', groupIds] : null,
  27. (endpoint, parentIds) => apiv3Get(endpoint, { parentIds }).then(result => result.data),
  28. {
  29. fallbackData: initialData,
  30. },
  31. );
  32. };