openreplay/frontend/app/hooks/useSessionSearchQueryHandler.ts

40 lines
964 B
TypeScript

import { useEffect } from 'react';
import { useHistory } from 'react-router';
import { createUrlQuery, getFiltersFromQuery } from 'App/utils/search';
interface Props {
appliedFilter: any;
applyFilter: any;
loading: boolean;
}
const useSessionSearchQueryHandler = (props: Props) => {
const { appliedFilter, applyFilter, loading } = props;
const history = useHistory();
useEffect(() => {
const applyFilterFromQuery = () => {
if (!loading) {
const filter = getFiltersFromQuery(history.location.search, appliedFilter);
applyFilter(filter, true, false);
}
};
applyFilterFromQuery();
}, [loading]);
useEffect(() => {
const generateUrlQuery = () => {
if (!loading) {
const search: any = createUrlQuery(appliedFilter);
history.replace({ search });
}
};
generateUrlQuery();
}, [appliedFilter, loading]);
return null;
};
export default useSessionSearchQueryHandler;