Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / calendar / vtimezoneHelper.ts
blob77a47150e6432f79f2e262c9dab18713f557d50e
1 import isTruthy from '@proton/utils/isTruthy';
3 import type { SimpleMap } from '../interfaces';
4 import type { VcalVeventComponent } from '../interfaces/calendar';
5 import type { GetVTimezonesMap } from '../interfaces/hooks/GetVTimezonesMap';
6 import { getPropertyTzid } from './vcalHelper';
8 interface Params {
9     vevents?: VcalVeventComponent[];
10     tzids?: string[];
11     getVTimezonesMap: GetVTimezonesMap;
13 export const getUniqueVtimezones = async ({ vevents = [], tzids = [], getVTimezonesMap }: Params) => {
14     const uniqueTzidsMap = [...tzids, ...vevents].reduce<SimpleMap<boolean>>((acc, item) => {
15         if (typeof item === 'string') {
16             acc[item] = true;
17             return acc;
18         }
19         const { dtstart, dtend } = item;
20         const startTzid = getPropertyTzid(dtstart);
21         if (startTzid) {
22             acc[startTzid] = true;
23         }
24         const endTzid = dtend ? getPropertyTzid(dtend) : undefined;
25         if (endTzid) {
26             acc[endTzid] = true;
27         }
28         return acc;
29     }, {});
30     const vtimezoneObjects = Object.values(await getVTimezonesMap(Object.keys(uniqueTzidsMap))).filter(isTruthy);
32     return vtimezoneObjects.map(({ vtimezone }) => vtimezone);