activity.ts 1.0 KB

1234567891011121314151617181920212223242526272829
  1. import { useAtomValue } from 'jotai';
  2. import type { SWRResponse } from 'swr';
  3. import useSWRImmutable from 'swr/immutable';
  4. import { apiv3Get } from '~/client/util/apiv3-client';
  5. import type { IActivityHasId, ISearchFilter } from '~/interfaces/activity';
  6. import type { PaginateResult } from '~/interfaces/mongoose-utils';
  7. import { auditLogEnabledAtom } from '~/states/server-configurations';
  8. export const useSWRxActivity = (
  9. limit?: number,
  10. offset?: number,
  11. searchFilter?: ISearchFilter,
  12. ): SWRResponse<PaginateResult<IActivityHasId>, Error> => {
  13. const auditLogEnabled = useAtomValue(auditLogEnabledAtom);
  14. const stringifiedSearchFilter = JSON.stringify(searchFilter);
  15. return useSWRImmutable(
  16. auditLogEnabled
  17. ? ['/activity', limit, offset, stringifiedSearchFilter]
  18. : null,
  19. ([endpoint, limit, offset, stringifiedSearchFilter]) =>
  20. apiv3Get(endpoint, {
  21. limit,
  22. offset,
  23. searchFilter: stringifiedSearchFilter,
  24. }).then((result) => result.data.serializedPaginationResult),
  25. );
  26. };