MM-53849 - hide channels from archived teams during channels search
This commit is contained in:
parent
d74826064b
commit
3b6dd923df
3 changed files with 27 additions and 4 deletions
|
|
@ -12,7 +12,7 @@ import {observeConfigValue, observeCurrentTeamId} from '@queries/servers/system'
|
|||
import {queryJoinedTeams} from '@queries/servers/team';
|
||||
import {observeIsCRTEnabled} from '@queries/servers/thread';
|
||||
import {observeTeammateNameDisplay} from '@queries/servers/user';
|
||||
import {retrieveChannels} from '@screens/find_channels/utils';
|
||||
import {removeChannelsFromArchivedTeams, retrieveChannels} from '@screens/find_channels/utils';
|
||||
|
||||
import FilteredList, {MAX_RESULTS} from './filtered_list';
|
||||
|
||||
|
|
@ -37,11 +37,14 @@ const enhanced = withObservables(['term'], ({database, term}: EnhanceProps) => {
|
|||
switchMap((matchStart) => {
|
||||
return retrieveChannels(database, matchStart.flat(), true);
|
||||
}),
|
||||
switchMap((myChannels) => removeChannelsFromArchivedTeams(myChannels, teamIds)),
|
||||
);
|
||||
|
||||
const channelsMatch = joinedChannelsMatch.pipe(
|
||||
combineLatestWith(directChannelsMatch),
|
||||
switchMap((matched) => retrieveChannels(database, matched.flat(), true)),
|
||||
switchMap((myChannels) => removeChannelsFromArchivedTeams(myChannels, teamIds)),
|
||||
|
||||
);
|
||||
|
||||
const archivedChannels = observeArchiveChannelsByTerm(database, term, MAX_RESULTS).pipe(
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider';
|
||||
import withObservables from '@nozbe/with-observables';
|
||||
import {of as of$} from 'rxjs';
|
||||
import {Observable, of as of$} from 'rxjs';
|
||||
import {switchMap} from 'rxjs/operators';
|
||||
|
||||
import {queryMyRecentChannels} from '@queries/servers/channel';
|
||||
import {queryJoinedTeams} from '@queries/servers/team';
|
||||
import {retrieveChannels} from '@screens/find_channels/utils';
|
||||
import {removeChannelsFromArchivedTeams, retrieveChannels} from '@screens/find_channels/utils';
|
||||
|
||||
import UnfilteredList from './unfiltered_list';
|
||||
|
||||
|
|
@ -18,10 +18,15 @@ const MAX_CHANNELS = 20;
|
|||
|
||||
const enhanced = withObservables([], ({database}: WithDatabaseArgs) => {
|
||||
const teamsCount = queryJoinedTeams(database).observeCount();
|
||||
const teamIds: Observable<Set<string>> = queryJoinedTeams(database).observe().pipe(
|
||||
// eslint-disable-next-line max-nested-callbacks
|
||||
switchMap((teams) => of$(new Set(teams.map((t) => t.id)))),
|
||||
);
|
||||
|
||||
const recentChannels = queryMyRecentChannels(database, MAX_CHANNELS).
|
||||
observeWithColumns(['last_viewed_at']).pipe(
|
||||
switchMap((myChannels) => retrieveChannels(database, myChannels, true)),
|
||||
switchMap((myChannels) => removeChannelsFromArchivedTeams(myChannels, teamIds)),
|
||||
);
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Database, Q} from '@nozbe/watermelondb';
|
||||
import {of as of$} from 'rxjs';
|
||||
import {Observable, of as of$, switchMap} from 'rxjs';
|
||||
|
||||
import {MM_TABLES} from '@constants/database';
|
||||
|
||||
|
|
@ -25,3 +25,18 @@ export const retrieveChannels = (database: Database, myChannels: MyChannelModel[
|
|||
|
||||
return of$([]);
|
||||
};
|
||||
|
||||
export const removeChannelsFromArchivedTeams = (recentChannels: ChannelModel[], teamIds: Observable<Set<string>>) => {
|
||||
return teamIds.pipe(
|
||||
// eslint-disable-next-line max-nested-callbacks
|
||||
switchMap((teamIdsSet) =>
|
||||
// eslint-disable-next-line max-nested-callbacks
|
||||
of$(recentChannels.filter((channel) => {
|
||||
if (!channel.teamId) {
|
||||
return true;
|
||||
}
|
||||
return teamIdsSet.has(channel.teamId);
|
||||
})),
|
||||
),
|
||||
);
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue