Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / helpers / usedClientsFlags.ts
blob9dd92ee86f3852e73eba771bb37e90871b9538b8
1 import { USED_CLIENT_FLAGS } from '../interfaces';
2 import { hasBitBigInt } from './bitset';
4 const {
5     WEB_VPN_SETTINGS,
6     WEB_DRIVE,
7     WEB_VPN,
8     BROWSER_VPN,
9     WINDOWS_INBOX,
10     WINDOWS_DRIVE,
11     WINDOWS_VPN,
12     LINUX_VPN,
13     LINUX_PASS,
14     ANDROID_PASS,
15     IOS_PASS,
16     WEB_PASS,
17     MACOS_PASS,
18     WINDOWS_PASS,
19     MACOS_DRIVE,
20     MACOS_VPN,
21     MACOS_INBOX,
22     IOS_DRIVE,
23     IOS_VPN,
24     LINUX_INBOX,
25     ANDROID_DRIVE,
26     ANDROID_VPN,
27     ANDROID_TV_VPN,
28     APPLE_TV_VPN,
29     ANDROID_CALENDAR,
30     IOS_CALENDAR,
31     ANDROID_MAIL,
32     IOS_MAIL,
33 } = USED_CLIENT_FLAGS;
35 const isAndroidCalendarUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_CALENDAR);
36 const isIOSCalendarUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_CALENDAR);
38 const isWebDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, WEB_DRIVE);
39 const isAndroidDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_DRIVE);
40 const isIOSDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_DRIVE);
41 const isDesktopDriveUser = (usedClientFlags: bigint) =>
42     hasBitBigInt(usedClientFlags, WINDOWS_DRIVE) || hasBitBigInt(usedClientFlags, MACOS_DRIVE);
44 const isAndroidMailUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_MAIL);
45 const isIOSMailUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_MAIL);
47 const isWebPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, WEB_PASS);
48 const isAndroidPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_PASS);
49 const isIOSPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_PASS);
50 const isDesktopPassUser = (usedClientFlags: bigint) =>
51     hasBitBigInt(usedClientFlags, WINDOWS_PASS) ||
52     hasBitBigInt(usedClientFlags, LINUX_PASS) ||
53     hasBitBigInt(usedClientFlags, MACOS_PASS);
55 const isWebVPNUser = (usedClientFlags: bigint) =>
56     hasBitBigInt(usedClientFlags, WEB_VPN) ||
57     hasBitBigInt(usedClientFlags, WEB_VPN_SETTINGS) ||
58     hasBitBigInt(usedClientFlags, BROWSER_VPN);
59 const isAndroidVPNUser = (usedClientFlags: bigint) =>
60     hasBitBigInt(usedClientFlags, ANDROID_VPN) || hasBitBigInt(usedClientFlags, ANDROID_TV_VPN);
61 const isIOSVPNUser = (usedClientFlags: bigint) =>
62     hasBitBigInt(usedClientFlags, IOS_VPN) || hasBitBigInt(usedClientFlags, APPLE_TV_VPN);
63 const isDesktopVPNUser = (usedClientFlags: bigint) =>
64     hasBitBigInt(usedClientFlags, WINDOWS_VPN) ||
65     hasBitBigInt(usedClientFlags, LINUX_VPN) ||
66     hasBitBigInt(usedClientFlags, MACOS_VPN);
68 export const isCalendarMobileAppUser = (usedClientFlags: bigint) => {
69   return (
70       isAndroidCalendarUser(usedClientFlags) || isIOSCalendarUser(usedClientFlags)
71   );
74 export const isDesktopInboxUser = (usedClientFlags: bigint) => {
75     return (
76         hasBitBigInt(usedClientFlags, WINDOWS_INBOX) ||
77         hasBitBigInt(usedClientFlags, LINUX_INBOX) ||
78         hasBitBigInt(usedClientFlags, MACOS_INBOX)
79     );
82 export const isDriveUser = (usedClientFlags: bigint) => {
83     return (
84         isWebDriveUser(usedClientFlags) ||
85         isAndroidDriveUser(usedClientFlags) ||
86         isIOSDriveUser(usedClientFlags) ||
87         isDesktopDriveUser(usedClientFlags)
88     );
91 export const isDriveMobileAppUser = (usedClientFlags: bigint) => {
92   return (
93       isAndroidDriveUser(usedClientFlags) || isIOSDriveUser(usedClientFlags)
94   );
97 export const isMailMobileAppUser = (usedClientFlags: bigint) => {
98   return (
99       isAndroidMailUser(usedClientFlags) || isIOSMailUser(usedClientFlags)
100   );
103 export const isPassUser = (usedClientFlags: bigint) => {
104     return (
105         isWebPassUser(usedClientFlags) ||
106         isAndroidPassUser(usedClientFlags) ||
107         isIOSPassUser(usedClientFlags) ||
108         isDesktopPassUser(usedClientFlags)
109     );
112 export const isVPNUser = (usedClientFlags: bigint) => {
113     return (
114         isWebVPNUser(usedClientFlags) ||
115         isAndroidVPNUser(usedClientFlags) ||
116         isIOSVPNUser(usedClientFlags) ||
117         isDesktopVPNUser(usedClientFlags)
118     );