Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / lib / apps / apps.ts
blob7dd1e47da8f46734b7eeb96d385b516f3d0fade1
1 import type { APP_NAMES } from '../constants';
2 import { APPS } from '../constants';
3 import { isElectronApp } from '../helpers/desktop';
4 import type { User } from '../interfaces';
5 import { getIsPublicUserWithoutProtonAddress, getIsSSOVPNOnlyAccount } from '../keys';
7 type AppContext = 'dropdown' | 'app';
9 export const getPublicUserProtonAddressApps = (context: AppContext): APP_NAMES[] => {
10     const result: APP_NAMES[] = [APPS.PROTONPASS, APPS.PROTONVPN_SETTINGS, APPS.PROTONDRIVE];
12     // Proton Docs is never shown in the dropdown context, but we still need it in this list to ensure it's an allowed app.
13     if (context === 'app') {
14         result.push(APPS.PROTONDOCS);
15     }
17     return result;
20 export const getSSOVPNOnlyAccountApps = (): APP_NAMES[] => {
21     return [APPS.PROTONVPN_SETTINGS];
24 export const getAvailableApps = (options: { user?: User; context: AppContext }) => {
25     if (getIsSSOVPNOnlyAccount(options.user)) {
26         return getSSOVPNOnlyAccountApps();
27     }
28     if (getIsPublicUserWithoutProtonAddress(options.user)) {
29         return getPublicUserProtonAddressApps(options.context);
30     }
31     if (isElectronApp) {
32         return [APPS.PROTONMAIL, APPS.PROTONCALENDAR];
33     }
35     const apps: APP_NAMES[] = [
36         APPS.PROTONMAIL,
37         APPS.PROTONCALENDAR,
38         APPS.PROTONDRIVE,
39         APPS.PROTONVPN_SETTINGS,
40         APPS.PROTONPASS,
41         APPS.PROTONWALLET,
42     ];
44     return apps;