mattermost-mobile/app/queries/servers/terms_of_service.ts
Elias Nahum 7aa5bd0611
Update Dependencies and bug fixes (#7000)
* update dependencies

* update dependencies

* feedback review

* update @mattermost/react-native-turbo-mailer
2023-01-24 09:14:23 +02:00

44 lines
1.6 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {of as of$, combineLatest} from 'rxjs';
import {switchMap, distinctUntilChanged} from 'rxjs/operators';
import {observeLicense, observeConfigBooleanValue, observeConfigValue, observeConfigIntValue} from './system';
import {observeCurrentUser} from './user';
import type {Database} from '@nozbe/watermelondb';
export const observeShowToS = (database: Database) => {
const isLicensed = observeLicense(database).pipe(
switchMap((lcs) => (lcs ? of$(lcs.IsLicensed === 'true') : of$(false))),
);
const currentUser = observeCurrentUser(database);
const customTermsOfServiceEnabled = observeConfigBooleanValue(database, 'EnableCustomTermsOfService');
const customTermsOfServiceId = observeConfigValue(database, 'CustomTermsOfServiceId');
const customTermsOfServicePeriod = observeConfigIntValue(database, 'CustomTermsOfServiceReAcceptancePeriod');
const showToS = combineLatest([
isLicensed,
customTermsOfServiceEnabled,
currentUser,
customTermsOfServiceId,
customTermsOfServicePeriod,
]).pipe(
switchMap(([lcs, cfg, user, id, period]) => {
if (!lcs || !cfg) {
return of$(false);
}
if (user?.termsOfServiceId !== id) {
return of$(true);
}
const timeElapsed = Date.now() - (user?.termsOfServiceCreateAt || 0);
return of$(timeElapsed > (period * 24 * 60 * 60 * 1000));
}),
distinctUntilChanged(),
);
return showToS;
};