@reactionable/amplify
Version:
Reactionable package for Amplify
49 lines • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useQueryList = void 0;
const core_1 = require("@reactionable/core");
const react_1 = require("react");
const QueryList_1 = require("./QueryList");
const useQueryList = (query, options) => {
const [currentToken, setCurrentToken] = (0, react_1.useState)();
const [nextToken, setNextToken] = (0, react_1.useState)();
const [previousToken, setPreviousToken] = (0, react_1.useState)();
const [list, setList] = (0, react_1.useState)([]);
const variables = {
...options?.variables,
nextToken: currentToken,
};
const queryOptions = {
...options,
variables,
handleQuery: (options) => (0, QueryList_1.queryList)({ query, ...options }),
};
const { refetch, data, ...result } = (0, core_1.useQuery)(queryOptions);
const refetchList = () => {
setList([]);
refetch();
};
const next = () => {
setPreviousToken(currentToken);
setCurrentToken(nextToken);
};
const previous = () => setCurrentToken(previousToken);
(0, react_1.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,
};
};
exports.useQueryList = useQueryList;
//# sourceMappingURL=useQueryList.js.map