Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / applications / calendar / src / app / store / events / eventsCache.ts
blob5eb14c104a59b4712fa34c9c8ede2d13d500d5a9
1 import { canonicalizeEmailByGuess } from '@proton/shared/lib/helpers/email';
3 import type { EventReadResult } from '../../containers/calendar/eventStore/interface';
5 interface Event {
6     eventReadResult: EventReadResult | undefined;
9 const eventsCache: {
10     [uniqueId: string]: Event;
11 } = {};
13 export const getEventReadResult = (uniqueId?: string): EventReadResult | undefined => {
14     return uniqueId ? eventsCache[uniqueId]?.eventReadResult : undefined;
17 export const setEventReadResult = (uniqueId?: string, eventReadResult?: EventReadResult): void => {
18     if (!uniqueId) {
19         return;
20     }
22     eventsCache[uniqueId] = {
23         ...eventsCache[uniqueId], // Ensure existing data is not overwritten
24         eventReadResult,
25     };
28 export const getCurrentPartstat = (uniqueId: string, selfEmail: string) => {
29     const eventReadResult = getEventReadResult(uniqueId);
30     const [decryptedVeventResult] = eventReadResult?.result || [];
32     if (decryptedVeventResult) {
33         const attendee = decryptedVeventResult.veventComponent.attendee?.find((attendee) =>
34             attendee.value.includes(canonicalizeEmailByGuess(selfEmail))
35         );
37         if (attendee && attendee.parameters) {
38             return attendee.parameters.partstat;
39         }
40     }
43 export const setPartstat = (uniqueId: string, selfEmail: string, partstat: string): boolean => {
44     const eventReadResult = getEventReadResult(uniqueId);
45     const [decryptedVeventResult] = eventReadResult?.result || [];
47     if (decryptedVeventResult) {
48         const attendee = decryptedVeventResult.veventComponent.attendee?.find((attendee) =>
49             attendee.value.includes(canonicalizeEmailByGuess(selfEmail))
50         );
52         if (attendee && attendee.parameters) {
53             attendee.parameters.partstat = partstat;
54             setEventReadResult(uniqueId, eventReadResult);
55             return true;
56         }
57     }
59     return false;