@reactionable/amplify
Version:
Reactionable package for Amplify
45 lines • 1.38 kB
JavaScript
import { useQuery } from "@reactionable/core";
import { useEffect, useState } from "react";
import { queryList, } from "./QueryList";
export const useQueryList = (query, options) => {
const [currentToken, setCurrentToken] = useState();
const [nextToken, setNextToken] = useState();
const [previousToken, setPreviousToken] = useState();
const [list, setList] = useState([]);
const variables = {
...options?.variables,
nextToken: currentToken,
};
const queryOptions = {
...options,
variables,
handleQuery: (options) => queryList({ query, ...options }),
};
const { refetch, data, ...result } = useQuery(queryOptions);
const refetchList = () => {
setList([]);
refetch();
};
const next = () => {
setPreviousToken(currentToken);
setCurrentToken(nextToken);
};
const previous = () => setCurrentToken(previousToken);
useEffect(() => {
setList(data ? data.items || [] : []);
if (data) {
setNextToken(data.nextToken);
}
}, [data]);
return {
...result,
data: {
items: list,
count: 0,
},
refetch: refetchList,
next: nextToken ? next : undefined,
previous: currentToken ? previous : undefined,
};
};
//# sourceMappingURL=useQueryList.js.map