stream-chat-react
Version:
React components to create chat conversations or livestream style chat
34 lines (33 loc) • 1.39 kB
JavaScript
import { useCallback } from 'react';
import { useManagePollVotesRealtime } from './useManagePollVotesRealtime';
import { useCursorPaginator } from '../../InfiniteScrollPaginator/hooks/useCursorPaginator';
import { useStateStore } from '../../../store';
import { usePollContext } from '../../../context';
const paginationStateSelector = (state) => [
state.error,
state.hasNextPage,
state.loading,
];
export const usePollOptionVotesPagination = ({ paginationParams, }) => {
const { poll } = usePollContext();
const paginationFn = useCallback(async (next) => {
const { next: newNext, votes } = await poll.queryOptionVotes({
filter: paginationParams.filter,
options: !next
? paginationParams?.options
: { ...paginationParams?.options, next },
sort: { created_at: -1, ...paginationParams?.sort },
});
return { items: votes, next: newNext };
}, [paginationParams, poll]);
const { cursorPaginatorState, loadMore } = useCursorPaginator(paginationFn, true);
const votes = useManagePollVotesRealtime('vote', cursorPaginatorState, paginationParams.filter.option_id);
const [error, hasNextPage, loading] = useStateStore(cursorPaginatorState, paginationStateSelector);
return {
error,
hasNextPage,
loading,
loadMore,
votes,
};
};