Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / helpers / usedClientsFlags.ts
blob128bcd8915dfadfc18341932e5475027aa6f2f16
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 } = USED_CLIENT_FLAGS;
31 const isWebDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, WEB_DRIVE);
32 const isAndroidDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_DRIVE);
33 const isIOSDriveUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_DRIVE);
34 const isDesktopDriveUser = (usedClientFlags: bigint) =>
35     hasBitBigInt(usedClientFlags, WINDOWS_DRIVE) || hasBitBigInt(usedClientFlags, MACOS_DRIVE);
37 const isWebPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, WEB_PASS);
38 const isAndroidPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, ANDROID_PASS);
39 const isIOSPassUser = (usedClientFlags: bigint) => hasBitBigInt(usedClientFlags, IOS_PASS);
40 const isDesktopPassUser = (usedClientFlags: bigint) =>
41     hasBitBigInt(usedClientFlags, WINDOWS_PASS) ||
42     hasBitBigInt(usedClientFlags, LINUX_PASS) ||
43     hasBitBigInt(usedClientFlags, MACOS_PASS);
45 const isWebVPNUser = (usedClientFlags: bigint) =>
46     hasBitBigInt(usedClientFlags, WEB_VPN) ||
47     hasBitBigInt(usedClientFlags, WEB_VPN_SETTINGS) ||
48     hasBitBigInt(usedClientFlags, BROWSER_VPN);
49 const isAndroidVPNUser = (usedClientFlags: bigint) =>
50     hasBitBigInt(usedClientFlags, ANDROID_VPN) || hasBitBigInt(usedClientFlags, ANDROID_TV_VPN);
51 const isIOSVPNUser = (usedClientFlags: bigint) =>
52     hasBitBigInt(usedClientFlags, IOS_VPN) || hasBitBigInt(usedClientFlags, APPLE_TV_VPN);
53 const isDesktopVPNUser = (usedClientFlags: bigint) =>
54     hasBitBigInt(usedClientFlags, WINDOWS_VPN) ||
55     hasBitBigInt(usedClientFlags, LINUX_VPN) ||
56     hasBitBigInt(usedClientFlags, MACOS_VPN);
58 export const isDesktopInboxUser = (usedClientFlags: bigint) => {
59     return (
60         hasBitBigInt(usedClientFlags, WINDOWS_INBOX) ||
61         hasBitBigInt(usedClientFlags, LINUX_INBOX) ||
62         hasBitBigInt(usedClientFlags, MACOS_INBOX)
63     );
66 export const isDriveUser = (usedClientFlags: bigint) => {
67     return (
68         isWebDriveUser(usedClientFlags) ||
69         isAndroidDriveUser(usedClientFlags) ||
70         isIOSDriveUser(usedClientFlags) ||
71         isDesktopDriveUser(usedClientFlags)
72     );
75 export const isPassUser = (usedClientFlags: bigint) => {
76     return (
77         isWebPassUser(usedClientFlags) ||
78         isAndroidPassUser(usedClientFlags) ||
79         isIOSPassUser(usedClientFlags) ||
80         isDesktopPassUser(usedClientFlags)
81     );
84 export const isVPNUser = (usedClientFlags: bigint) => {
85     return (
86         isWebVPNUser(usedClientFlags) ||
87         isAndroidVPNUser(usedClientFlags) ||
88         isIOSVPNUser(usedClientFlags) ||
89         isDesktopVPNUser(usedClientFlags)
90     );