// types import { IIssueFilterOptions } from "types"; export const calculateTotalFilters = (filters: IIssueFilterOptions): number => filters && Object.keys(filters).length > 0 ? Object.keys(filters) .map((key) => filters[key as keyof IIssueFilterOptions] !== null ? isNaN((filters[key as keyof IIssueFilterOptions] as string[]).length) ? 0 : (filters[key as keyof IIssueFilterOptions] as string[]).length : 0 ) .reduce((curr, prev) => curr + prev, 0) : 0; // check if there is any difference between the saved filters and the current filters export const areFiltersDifferent = (filtersSet1: IIssueFilterOptions, filtersSet2: IIssueFilterOptions) => { for (const [key, value] of Object.entries(filtersSet1) as [keyof IIssueFilterOptions, string[] | null][]) { if (value) { if (Array.isArray(value) && Array.isArray(filtersSet2[key])) { if (value.length !== filtersSet2[key]?.length) return true; for (let i = 0; i < value.length; i++) { if (!filtersSet2[key]?.includes(value[i])) return true; } } else if (value !== filtersSet2[key]) return true; } } return false; };