use-editing-users.ts 863 B

123456789101112131415161718192021222324252627282930313233
  1. import { useCallback } from 'react';
  2. import type { IUserHasId } from '@growi/core';
  3. import { useSWRStatic } from '@growi/core/dist/swr';
  4. import type { SWRResponse } from 'swr';
  5. type EditingUsersStatus = {
  6. userList: IUserHasId[],
  7. }
  8. type EditingUsersStatusUtils = {
  9. onEditorsUpdated(
  10. userList: IUserHasId[],
  11. ): void,
  12. }
  13. export const useEditingUsers = (status?: EditingUsersStatus): SWRResponse<EditingUsersStatus, Error> & EditingUsersStatusUtils => {
  14. const initialData: EditingUsersStatus = {
  15. userList: [],
  16. };
  17. const swrResponse = useSWRStatic<EditingUsersStatus, Error>('editingUsers', status, { fallbackData: initialData });
  18. const { mutate } = swrResponse;
  19. const onEditorsUpdated = useCallback((userList: IUserHasId[]): void => {
  20. mutate({ userList });
  21. }, [mutate]);
  22. return {
  23. ...swrResponse,
  24. onEditorsUpdated,
  25. };
  26. };