in web/src/shared/helpers/set-filters.ts [5:38]
export function getFiltersSetter<T>(
filtersState: FilterWithDocumentExtraOption<keyof T>[],
setFiltersState: React.Dispatch<React.SetStateAction<FilterWithDocumentExtraOption<keyof T>[]>>
) {
return (filtersToAdd: (FilterWithDocumentExtraOption<keyof T> | null)[]) => {
let resultFilters: FilterWithDocumentExtraOption<keyof T>[] = [...filtersState];
if (filtersToAdd.length === 0) {
setFiltersState([]);
return;
}
filtersToAdd.forEach((filter) => {
if (!filter) {
return;
}
const existedFilterIndex = resultFilters.findIndex(
({ field, operator }) => field === filter.field && operator === filter.operator
);
if (existedFilterIndex > -1) {
if (filter.value) {
resultFilters[existedFilterIndex].value = filter.value;
} else {
resultFilters.splice(existedFilterIndex);
}
} else {
if (filter.value) {
resultFilters.push(filter);
}
}
});
setFiltersState(resultFilters);
};
}