Fix MM46418 (#6796)

This commit is contained in:
Daniel Espino García 2022-12-19 10:32:05 +01:00 committed by GitHub
parent 724d72d98a
commit 63e6b0f626
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,14 +2,12 @@
// See LICENSE.txt for license information.
import {Database, Q} from '@nozbe/watermelondb';
import {combineLatest, Observable, of as of$} from 'rxjs';
import {combineLatest, of as of$} from 'rxjs';
import {distinctUntilChanged, switchMap} from 'rxjs/operators';
import {Preferences} from '@constants';
import {MM_TABLES} from '@constants/database';
import {getTeammateNameDisplaySetting} from '@helpers/api/preference';
import {observeMyChannel} from '@queries/servers/channel';
import {isChannelAdmin} from '@utils/user';
import {queryPreferencesByCategoryAndName} from './preference';
import {observeCurrentUserId, observeLicense, getCurrentUserId, getConfig, getLicense, observeConfigValue} from './system';
@ -106,24 +104,17 @@ export const observeUserIsTeamAdmin = (database: Database, userId: string, teamI
const id = `${teamId}-${userId}`;
return database.get<TeamMembershipModel>(TEAM_MEMBERSHIP).query(
Q.where('id', Q.eq(id)),
).observe().pipe(
).observeWithColumns(['scheme_admin']).pipe(
switchMap((tm) => of$(tm.length ? tm[0].schemeAdmin : false)),
);
};
export const observeUserIsChannelAdmin = (database: Database, userId: string, channelId: string) => {
const id = `${channelId}-${userId}`;
const myChannelRoles = observeMyChannel(database, channelId).pipe(
switchMap((mc) => of$(mc?.roles || '')),
distinctUntilChanged(),
);
const channelSchemeAdmin = database.get<ChannelMembershipModel>(CHANNEL_MEMBERSHIP).query(
return database.get<ChannelMembershipModel>(CHANNEL_MEMBERSHIP).query(
Q.where('id', Q.eq(id)),
).observe().pipe(
).observeWithColumns(['scheme_admin']).pipe(
switchMap((cm) => of$(cm.length ? cm[0].schemeAdmin : false)),
distinctUntilChanged(),
);
return combineLatest([myChannelRoles, channelSchemeAdmin]).pipe(
switchMap(([mcr, csa]) => of$(isChannelAdmin(mcr) || csa)),
) as Observable<boolean>;
};