use-post-get-series-ranking.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { useQuery } from '@tanstack/react-query';
  2. import { seriesQueryKeys } from '../series-query-keys';
  3. import { seriesApi, type PostGetSeriesRanking, type RankingData } from '../series-api';
  4. import type { BaseAxiosError } from '../../../../types';
  5. import { useConnection } from 'src/contexts/ConnectionContext';
  6. import { loadData } from 'src/storage';
  7. export const useGetSeriesRanking = (
  8. id: number,
  9. page: number,
  10. page_size: number,
  11. enabled: boolean
  12. ) => {
  13. const netInfo = useConnection();
  14. return useQuery<PostGetSeriesRanking, BaseAxiosError>({
  15. queryKey: seriesQueryKeys.getSeriesRanking(id, page, page_size),
  16. queryFn: async () => {
  17. if (!netInfo?.isInternetReachable) {
  18. const localData = loadData<RankingData>('series', `${id}`);
  19. if (localData) {
  20. return { data: localData, result: 'OK' } as PostGetSeriesRanking;
  21. }
  22. return { data: {}, result: 'ERROR' } as PostGetSeriesRanking;
  23. }
  24. const response = await seriesApi.getSeriesRanking(id, page, page_size);
  25. return response.data;
  26. },
  27. enabled
  28. });
  29. };