1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-23 22:25:56 -04:00
Files
Sonarr/frontend/src/System/Events/eventOptionsStore.tsx
T
2025-03-08 12:33:03 -08:00

86 lines
1.9 KiB
TypeScript

import Column from 'Components/Table/Column';
import { createPersist, mergeColumns } from 'Helpers/createPersist';
import { SortDirection } from 'Helpers/Props/sortDirections';
import translate from 'Utilities/String/translate';
export interface EventOptions {
pageSize: number;
selectedFilterKey: string | number;
sortKey: string;
sortDirection: SortDirection;
columns: Column[];
}
const eventOptionsStore = createPersist<EventOptions>(
'event_options',
() => {
return {
pageSize: 50,
selectedFilterKey: 'all',
sortKey: 'time',
sortDirection: 'descending',
columns: [
{
name: 'level',
label: '',
columnLabel: () => translate('Level'),
isSortable: false,
isVisible: true,
isModifiable: false,
},
{
name: 'time',
label: () => translate('Time'),
isSortable: true,
isVisible: true,
isModifiable: false,
},
{
name: 'logger',
label: () => translate('Component'),
isSortable: false,
isVisible: true,
isModifiable: false,
},
{
name: 'message',
label: () => translate('Message'),
isVisible: true,
isModifiable: false,
},
{
name: 'actions',
label: '',
columnLabel: () => translate('Actions'),
isVisible: true,
isModifiable: false,
},
],
};
},
{
merge: mergeColumns,
}
);
export const useEventOptions = () => {
return eventOptionsStore((state) => state);
};
export const setEventOptions = (options: Partial<EventOptions>) => {
eventOptionsStore.setState((state) => ({
...state,
...options,
}));
};
export const setEventOption = <K extends keyof EventOptions>(
key: K,
value: EventOptions[K]
) => {
eventOptionsStore.setState((state) => ({
...state,
[key]: value,
}));
};