use-my-user-groups.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { GroupType } from '@growi/core';
  2. import { useSWRxMyExternalUserGroups } from '~/features/external-user-group/client/stores/external-user-group';
  3. import { useSWRxMyUserGroups } from '~/stores/user-group';
  4. // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
  5. export const useMyUserGroups = (shouldFetch: boolean) => {
  6. const { data: myUserGroups, mutate: mutateMyUserGroups } = useSWRxMyUserGroups(shouldFetch);
  7. const { data: myExternalUserGroups, mutate: mutateMyExternalUserGroups } = useSWRxMyExternalUserGroups(shouldFetch);
  8. const update = () => {
  9. mutateMyUserGroups();
  10. mutateMyExternalUserGroups();
  11. };
  12. if (myUserGroups == null || myExternalUserGroups == null) {
  13. return { data: null, update };
  14. }
  15. const myUserGroupsData = myUserGroups
  16. .map((group) => {
  17. return {
  18. item: group,
  19. type: GroupType.userGroup,
  20. };
  21. });
  22. const myExternalUserGroupsData = myExternalUserGroups
  23. .map((group) => {
  24. return {
  25. item: group,
  26. type: GroupType.externalUserGroup,
  27. };
  28. });
  29. const data = [...myUserGroupsData, ...myExternalUserGroupsData];
  30. return { data, update };
  31. };