Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import React from "react";
import { useTranslation } from "react-i18next";
import { useQuery, UseQueryResult } from "@tanstack/react-query";
import useUserStore from "@/store/useUserStore";
import useFiltersStore from "@/store/useFiltersStore";
import useInfiniteMovieQuery from "@/queries/useInfiniteMovieQuery";
import { IApiFunction, IAccount } from "@/interfaces";
const useHome = (apiFunctions: IApiFunction) => {
const { i18n, t } = useTranslation();
const { sortBy, releaseDate, selectedGenres } = useFiltersStore();
const { isAuthenticated, sessionId, accentColor } = useUserStore();
const [openDialog, setOpenDialog] = React.useState<boolean>(false);
const { data: accountData }: UseQueryResult<IAccount> = useQuery({
queryKey: [apiFunctions.getAccountDetails.key, sessionId],
queryFn: () => apiFunctions.getAccountDetails.func(sessionId),
enabled: isAuthenticated,
});
const {
data: moviesData,
error,
fetchNextPage,
hasNextPage,
isFetchingNextPage,
status,
} = useInfiniteMovieQuery(
[apiFunctions.getMovies.key, sortBy, selectedGenres, releaseDate.start, releaseDate.end, i18n.language],
({ pageParam }: { pageParam: number }) =>
apiFunctions.getMovies.func({
sortBy: sortBy,
selectedGenres: selectedGenres,
startDate: releaseDate.start,
endDate: releaseDate.end,
selectedLanguage: i18n.language,
page: pageParam,
})
);
React.useEffect(() => {
if (accountData)
useUserStore.setState({
accountId: accountData.id,
username: accountData.username,
});
}, [accountData]);
return {
t,
accentColor,
openDialog,
setOpenDialog,
moviesData,
error,
fetchNextPage,
hasNextPage,
isFetchingNextPage,
status,
};
};
export default useHome;
|