mattermost-mobile/app/actions/remote/terms_of_service.ts
Daniel Espino García 86658edc30
Refactor errors around the app (#7306)
* Refactor errors around the app

* Fix recursive function

* Fix tests
2023-05-03 13:08:55 +02:00

49 lines
1.9 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import DatabaseManager from '@database/manager';
import NetworkManager from '@managers/network_manager';
import {getCurrentUser} from '@queries/servers/user';
import {getFullErrorMessage} from '@utils/errors';
import {logDebug} from '@utils/log';
import {forceLogoutIfNecessary} from './session';
export async function fetchTermsOfService(serverUrl: string): Promise<{terms?: TermsOfService; error?: any}> {
try {
const client = NetworkManager.getClient(serverUrl);
const terms = await client.getTermsOfService();
return {terms};
} catch (error) {
logDebug('error on fetchTermsOfService', getFullErrorMessage(error));
forceLogoutIfNecessary(serverUrl, error);
return {error};
}
}
export async function updateTermsOfServiceStatus(serverUrl: string, id: string, status: boolean): Promise<{resp?: {status: string}; error?: any}> {
try {
const client = NetworkManager.getClient(serverUrl);
const resp = await client.updateMyTermsOfServiceStatus(id, status);
const {database, operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
const currentUser = await getCurrentUser(database);
if (currentUser) {
currentUser.prepareUpdate((u) => {
if (status) {
u.termsOfServiceCreateAt = Date.now();
u.termsOfServiceId = id;
} else {
u.termsOfServiceCreateAt = 0;
u.termsOfServiceId = '';
}
});
operator.batchRecords([currentUser], 'updateTermsOfServiceStatus');
}
return {resp};
} catch (error) {
logDebug('error on updateTermsOfServiceStatus', getFullErrorMessage(error));
forceLogoutIfNecessary(serverUrl, error);
return {error};
}
}