// types
import { IIssueFilterOptions } from "@plane/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;
};