Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / calendar / badges.ts
blobd54499cd27b9b705f45dfe66978a9d4434f79518
1 import { c } from 'ttag';
3 import type { BadgeType } from '@proton/components/components/badge/Badge';
5 import type { SubscribedCalendar, VisualCalendar } from '../interfaces/calendar';
6 import { getIsCalendarDisabled, getIsCalendarProbablyActive, getIsSubscribedCalendar } from './calendar';
7 import { getCalendarHasSubscriptionParameters, getCalendarIsNotSyncedInfo } from './subscribe/helpers';
9 export enum CALENDAR_STATUS_TYPE {
10     DEFAULT,
11     ACTIVE,
12     DISABLED,
13     SYNCING,
14     NOT_SYNCED,
17 export interface CalendarStatusBadge {
18     statusType: CALENDAR_STATUS_TYPE;
19     badgeType: BadgeType;
20     text: string;
21     tooltipText?: string;
22     className?: string;
25 export const getDefaultCalendarBadge = (): CalendarStatusBadge => ({
26     statusType: CALENDAR_STATUS_TYPE.DEFAULT,
27     badgeType: 'primary',
28     text: c('Calendar status').t`Default`,
29 });
31 export const getActiveCalendarBadge = (): CalendarStatusBadge => ({
32     statusType: CALENDAR_STATUS_TYPE.ACTIVE,
33     badgeType: 'success',
34     text: c('Calendar status').t`Active`,
35 });
37 export const getDisabledCalendarBadge = (): CalendarStatusBadge => ({
38     statusType: CALENDAR_STATUS_TYPE.DISABLED,
39     badgeType: 'light',
40     text: c('Calendar status').t`Disabled`,
41 });
43 export const getNotSyncedCalendarBadge = ({
44     text,
45     tooltipText,
46 }: {
47     text: string;
48     tooltipText: string;
49 }): CalendarStatusBadge => ({
50     statusType: CALENDAR_STATUS_TYPE.NOT_SYNCED,
51     badgeType: 'warning',
52     text,
53     tooltipText,
54 });
56 export const getCalendarStatusBadges = (calendar: VisualCalendar | SubscribedCalendar, defaultCalendarID?: string) => {
57     const isDisabled = getIsCalendarDisabled(calendar);
58     const isActive = getIsCalendarProbablyActive(calendar);
59     const isDefault = calendar.ID === defaultCalendarID;
60     const isSubscribed = getIsSubscribedCalendar(calendar);
61     const isNotSyncedInfo = getCalendarHasSubscriptionParameters(calendar)
62         ? getCalendarIsNotSyncedInfo(calendar)
63         : undefined;
65     const badges: CalendarStatusBadge[] = [];
67     if (isDefault) {
68         badges.push(getDefaultCalendarBadge());
69     }
71     if (isActive) {
72         badges.push(getActiveCalendarBadge());
73     }
75     if (isDisabled) {
76         badges.push(getDisabledCalendarBadge());
77     }
79     if (isSubscribed && isNotSyncedInfo) {
80         badges.push(getNotSyncedCalendarBadge({ text: isNotSyncedInfo.label, tooltipText: isNotSyncedInfo.text }));
81     }
83     return { isDisabled, isActive, isDefault, isSubscribed, isNotSyncedInfo, badges };