* update dependencies * update dependencies * feedback review * update @mattermost/react-native-turbo-mailer
44 lines
1.6 KiB
TypeScript
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;
|
|
};
|