Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / settings.ts
blobb8d07be5f29219fb514b10cf4c2ef31797120a35
1 import type { DENSITY, NEWSLETTER_SUBSCRIPTIONS } from '@proton/shared/lib/constants';
2 import type {
3     AI_ASSISTANT_ACCESS,
4     DRAWER_VISIBILITY,
5     SETTINGS_DATE_FORMAT,
6     SETTINGS_LOG_AUTH_STATE,
7     SETTINGS_TIME_FORMAT,
8     SETTINGS_WEEK_START,
9 } from '@proton/shared/lib/interfaces';
10 import type { ThemeSetting, ThemeTypes } from '@proton/shared/lib/themes/themes';
12 import type { RegistrationOptions } from '../../lib/webauthn/interface';
14 export const TOTP_WRONG_ERROR = 12060;
16 export const getSettings = () => ({
17     url: 'core/v4/settings',
18     method: 'get',
19 });
21 export const updateUsername = (data: { Username: string }) => ({
22     url: 'core/v4/settings/username',
23     method: 'put',
24     data,
25 });
27 export const updatePassword = (data: { PersistPasswordScope: boolean }) => ({
28     url: 'core/v4/settings/password',
29     method: 'put',
30     data,
31 });
33 export const upgradePassword = () => ({
34     url: 'core/v4/settings/password/upgrade',
35     method: 'put',
36 });
38 export const updateLocale = (Locale: string) => ({
39     url: 'core/v4/settings/locale',
40     method: 'put',
41     data: { Locale },
42 });
44 export const getNews = () => ({
45     url: 'core/v4/settings/news',
46     method: 'get',
47 });
49 export const patchNews = (data: Partial<Record<NEWSLETTER_SUBSCRIPTIONS, boolean>>) => ({
50     url: 'core/v4/settings/news',
51     method: 'PATCH',
52     data,
53 });
55 export const getNewsExternal = () => ({
56     url: 'core/v4/settings/news/external',
57     method: 'get',
58 });
60 export const patchNewsExternal = (data: Partial<Record<NEWSLETTER_SUBSCRIPTIONS, boolean>>) => ({
61     url: 'core/v4/settings/news/external',
62     method: 'PATCH',
63     data,
64 });
66 export const updateInvoiceText = (InvoiceText: string) => ({
67     url: 'core/v4/settings/invoicetext',
68     method: 'put',
69     data: { InvoiceText },
70 });
72 export const updateLogAuth = (LogAuth: SETTINGS_LOG_AUTH_STATE) => ({
73     url: 'core/v4/settings/logauth',
74     method: 'put',
75     data: { LogAuth },
76 });
78 export const enableHighSecurity = () => ({
79     url: 'core/v4/settings/highsecurity',
80     method: 'post',
81     data: {},
82 });
84 export const disableHighSecurity = () => ({
85     url: 'core/v4/settings/highsecurity',
86     method: 'delete',
87     data: {},
88 });
90 export const updateDensity = (Density: DENSITY) => ({
91     url: 'core/v4/settings/density',
92     method: 'put',
93     data: { Density },
94 });
96 export const updateEmail = (data: { Email: string; PersistPasswordScope?: boolean }) => ({
97     url: 'core/v4/settings/email',
98     method: 'put',
99     data,
102 export const updateNotifyEmail = (Notify: number) => ({
103     url: 'core/v4/settings/email/notify',
104     method: 'put',
105     data: { Notify },
108 export const updateResetEmail = (data: { Reset: number; PersistPasswordScope?: boolean }) => ({
109     url: 'core/v4/settings/email/reset',
110     method: 'put',
111     data,
114 export const verifyEmail = (Token: string) => ({
115     url: 'core/v4/settings/email/verify',
116     method: 'post',
117     data: { Token },
120 export const updatePhone = (data: { Phone: string; PersistPasswordScope?: boolean }) => ({
121     url: 'core/v4/settings/phone',
122     method: 'put',
123     data,
126 export const updateNotifyPhone = (Notify: string) => ({
127     url: 'core/v4/settings/phone/notify',
128     method: 'put',
129     data: { Notify },
132 export const updateResetPhone = (data: { Reset: number; PersistPasswordScope?: boolean }) => ({
133     url: 'core/v4/settings/phone/reset',
134     method: 'put',
135     data,
138 export const verifyPhone = (Token: string) => ({
139     url: 'core/v4/settings/phone/verify',
140     method: 'post',
141     data: { Token },
144 export const registerSecurityKey = (data: {
145     RegistrationOptions: RegistrationOptions;
146     ClientData: string;
147     AttestationObject: string;
148     Transports: string[];
149     Name: string;
150 }) => ({
151     url: 'core/v4/settings/2fa/register',
152     method: 'post',
153     data,
156 export const getSecurityKeyChallenge = (crossPlatform: boolean) => ({
157     url: 'core/v4/settings/2fa/register',
158     method: 'get',
159     params: {
160         CrossPlatform: +crossPlatform,
161     },
164 export const removeSecurityKey = (credentialID: string) => ({
165     url: `core/v4/settings/2fa/${credentialID}/remove`,
166     method: 'post',
169 export const renameSecurityKey = (credentialID: string, data: { Name: string }) => ({
170     url: `core/v4/settings/2fa/${credentialID}/rename`,
171     method: 'put',
172     data,
175 export const setupTotp = (TOTPSharedSecret: string, TOTPConfirmation: string) => ({
176     url: 'core/v4/settings/2fa/totp',
177     method: 'post',
178     data: { TOTPSharedSecret, TOTPConfirmation },
181 export const disableTotp = () => ({
182     url: 'core/v4/settings/2fa/totp',
183     method: 'put',
186 export const disable2FA = () => ({
187     url: 'core/v4/settings/2fa',
188     method: 'put',
191 export const updateHideDrawer = (HideSidePanel: DRAWER_VISIBILITY) => ({
192     url: 'core/v4/settings/hide-side-panel',
193     method: 'put',
194     data: { HideSidePanel },
197 export const updateTheme = (data: ThemeSetting) => ({
198     url: 'core/v4/settings/theme',
199     method: 'put',
200     data,
203 export const updateThemeType = (ThemeType: ThemeTypes) => ({
204     url: 'core/v4/settings/themetype',
205     method: 'put',
206     data: { ThemeType },
209 export const updateWeekStart = (WeekStart: SETTINGS_WEEK_START) => ({
210     url: 'core/v4/settings/weekstart',
211     method: 'put',
212     data: { WeekStart },
215 export const updateDateFormat = (DateFormat: SETTINGS_DATE_FORMAT) => ({
216     url: 'core/v4/settings/dateformat',
217     method: 'put',
218     data: { DateFormat },
221 export const updateTimeFormat = (TimeFormat: SETTINGS_TIME_FORMAT) => ({
222     url: 'core/v4/settings/timeformat',
223     method: 'put',
224     data: { TimeFormat },
227 export const updateWelcomeFlags = () => ({
228     url: 'core/v4/settings/welcome',
229     method: 'put',
232 export const updateEarlyAccess = (data: { EarlyAccess: number }) => ({
233     url: 'core/v4/settings/earlyaccess',
234     method: 'put',
235     data,
238 export const updateFlags = (data: { Welcomed: number }) => ({
239     url: 'core/v4/settings/flags',
240     method: 'put',
241     data,
244 export const updateTelemetry = (data: { Telemetry: number }) => ({
245     url: 'core/v4/settings/telemetry',
246     method: 'put',
247     data,
250 export const updateCrashReports = (data: { CrashReports: number }) => ({
251     url: 'core/v4/settings/crashreports',
252     method: 'put',
253     data,
256 export const getBreaches = () => ({
257     url: 'account/v4/breaches',
258     method: 'get',
261 export const getRecentBreaches = () => ({
262     url: 'account/v4/breaches?Recent=true',
263     method: 'get',
266 export const enableBreachAlert = () => ({
267     url: 'core/v4/settings/breachalerts',
268     method: 'post',
269     data: {},
272 export const setProductDisabled = (data: { Product: number; Disabled: 1 | 0 }) => ({
273     url: 'core/v4/settings/product-disabled',
274     method: 'put',
275     data,
278 export const disableBreachAlert = () => ({
279     url: 'core/v4/settings/breachalerts',
280     method: 'delete',
281     data: {},
284 export const updateAIAssistant = (AIAssistantFlags: AI_ASSISTANT_ACCESS) => ({
285     url: 'core/v4/settings/ai-assistant-flags',
286     method: 'put',
287     data: { AIAssistantFlags },