moonstream/frontend/src/core/hooks/useStream.js

62 wiersze
1.6 KiB
JavaScript

import { StreamService } from "../services";
import { useQuery } from "react-query";
import { queryCacheProps } from "./hookCommon";
const useJournalEntries = ({
searchQuery,
start_time,
end_time,
include_start,
include_end,
updateStreamBoundaryWith,
}) => {
// set our get method
const getStream =
(searchTerm, start_time, end_time, include_start, include_end) =>
async () => {
// Request with params to streams
const response = await StreamService.getStream({
searchTerm: searchTerm,
start_time: start_time,
end_time: end_time,
include_start: include_start,
include_end: include_end,
});
// new events from stream
const newEventsList = response.data.stream.map((event) => ({
...event,
}));
return {
data: [...newEventsList],
boundaries: { ...response.data.boundaries, update: false },
};
};
const { data, isLoading, refetch, isFetching, remove } = useQuery(
["stream", searchQuery, start_time, end_time],
getStream(searchQuery, start_time, end_time, include_start, include_end),
{
//refetchInterval: refreshRate,
...queryCacheProps,
keepPreviousData: true,
retry: 3,
onSuccess: (response) => {
// response is object which return condition in getStream
// TODO(andrey): Response should send page parameters inside "boundary" object (can be null).
updateStreamBoundaryWith(response.boundaries);
},
}
);
return {
EntriesPages: data,
isLoading,
refetch,
isFetching,
remove,
};
};
export default useJournalEntries;