mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-17 21:26:13 -04:00
93 lines
1.8 KiB
TypeScript
93 lines
1.8 KiB
TypeScript
import { keepPreviousData } from '@tanstack/react-query';
|
|
import { useCallback, useMemo } from 'react';
|
|
import { Filter } from 'App/State/AppState';
|
|
import usePage from 'Helpers/Hooks/usePage';
|
|
import usePagedApiQuery from 'Helpers/Hooks/usePagedApiQuery';
|
|
import LogEvent from 'typings/LogEvent';
|
|
import translate from 'Utilities/String/translate';
|
|
import { useEventOptions } from './eventOptionsStore';
|
|
|
|
export const FILTERS: Filter[] = [
|
|
{
|
|
key: 'all',
|
|
label: () => translate('All'),
|
|
filters: [],
|
|
},
|
|
{
|
|
key: 'info',
|
|
label: () => translate('Info'),
|
|
filters: [
|
|
{
|
|
key: 'level',
|
|
value: 'info',
|
|
type: 'equal',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'warn',
|
|
label: () => translate('Warn'),
|
|
filters: [
|
|
{
|
|
key: 'level',
|
|
value: 'warn',
|
|
type: 'equal',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'error',
|
|
label: () => translate('Error'),
|
|
filters: [
|
|
{
|
|
key: 'level',
|
|
value: 'error',
|
|
type: 'equal',
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
const useEvents = () => {
|
|
const { page, goToPage } = usePage('events');
|
|
const { pageSize, selectedFilterKey, sortKey, sortDirection } =
|
|
useEventOptions();
|
|
|
|
const filters = useMemo(() => {
|
|
return FILTERS.find((f) => f.key === selectedFilterKey)?.filters;
|
|
}, [selectedFilterKey]);
|
|
|
|
const { refetch, ...query } = usePagedApiQuery<LogEvent>({
|
|
path: '/log',
|
|
page,
|
|
pageSize,
|
|
filters,
|
|
sortKey,
|
|
sortDirection,
|
|
queryOptions: {
|
|
placeholderData: keepPreviousData,
|
|
},
|
|
});
|
|
|
|
const handleGoToPage = useCallback(
|
|
(page: number) => {
|
|
goToPage(page);
|
|
refetch();
|
|
},
|
|
[goToPage, refetch]
|
|
);
|
|
|
|
return {
|
|
...query,
|
|
goToPage: handleGoToPage,
|
|
page,
|
|
refetch,
|
|
};
|
|
};
|
|
|
|
export default useEvents;
|
|
|
|
export const useFilters = () => {
|
|
return FILTERS;
|
|
};
|