Spaces:
Runtime error
Runtime error
File size: 1,895 Bytes
848e268 cca515d 848e268 4f2c36e 63bd9dc cca515d 848e268 63bd9dc cca515d 848e268 5881efa 848e268 cca515d 5881efa cca515d 63bd9dc 848e268 cca515d 5881efa 4f2c36e 5881efa 848e268 7e19cbb 848e268 5881efa 6f0b822 5881efa 4f2c36e 848e268 0a715e6 848e268 1338bf6 848e268 cca515d 4f2c36e 848e268 4f2c36e |
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 67 68 69 70 71 72 73 74 75 76 77 |
import { useState } from "react";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { useLocalStorage, useUpdateEffect } from "react-use";
import _ from "lodash";
import { useUser } from "@/utils/useUser";
export const useCollections = (category: string) => {
const [loading, setLoading] = useState(false);
const { user } = useUser();
const [myGenerationsId] = useLocalStorage<any>('my-own-generations', []);
const client = useQueryClient();
const {
data,
isFetching,
refetch,
} = useQuery(
["collections"],
async () => {
const response = await fetch("/api/collections", {
method: "POST",
body: JSON.stringify({
userId: category === 'my-own' ? user?.sub : undefined,
page: 0,
}),
})
const data = await response.json()
if (!response.ok) {
throw new Error(data.message)
}
return {
images: data?.collections,
pagination: data?.pagination,
};
},
{
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
}
);
const infiniteRefetch = async () => {
setLoading(true);
const response = await fetch("/api/collections", {
method: "POST",
body: JSON.stringify({
userId: category === 'my-own' ? user?.sub : undefined,
page: data?.pagination?.page,
}),
})
const d = await response.json()
if (d.ok) {
const images = _.concat(data?.images, d?.collections);
client.setQueryData(["collections"], {
images,
pagination: d?.pagination,
});
}
setLoading(false);
};
useUpdateEffect(() => {
refetch()
}, [category]);
return {
images: data?.images,
loading: isFetching,
infiniteLoading: loading,
infiniteRefetch,
pagination: data?.pagination,
}
}; |