fix: remove from channel (#8539)
This commit is contained in:
parent
6f8d6632b6
commit
a1da0a720f
2 changed files with 26 additions and 17 deletions
|
|
@ -411,14 +411,32 @@ export async function fetchAllMyChannelsForAllTeams(serverUrl: string, since: nu
|
|||
}
|
||||
const client = NetworkManager.getClient(serverUrl);
|
||||
const {operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
|
||||
|
||||
async function fetchAllMemberships() {
|
||||
const results: ChannelMembership[] = [];
|
||||
async function fetchNextMembershipsPage(page: number) {
|
||||
try {
|
||||
const memberships = await client.getAllMyChannelMembersFromAllTeams(page, General.CHANNEL_MEMBERS_CHUNK_SIZE, groupLabel);
|
||||
results.push(...memberships);
|
||||
if (memberships.length < General.CHANNEL_MEMBERS_CHUNK_SIZE) {
|
||||
return;
|
||||
}
|
||||
|
||||
await fetchNextMembershipsPage(page + 1);
|
||||
} catch (e) {
|
||||
logError(`fetchAllMyChannelsForAllTeams error: Failed to fetch memberships for page ${page} `, e);
|
||||
}
|
||||
}
|
||||
|
||||
await fetchNextMembershipsPage(0);
|
||||
return results;
|
||||
}
|
||||
|
||||
const promises: [Promise<Channel[]>, Promise<ChannelMembership[]>] = [
|
||||
client.getAllChannelsFromAllTeams(since, since > 0, groupLabel),
|
||||
client.getAllMyChannelMembersFromAllTeams(0, General.CHANNEL_MEMBERS_CHUNK_SIZE, groupLabel),
|
||||
fetchAllMemberships(),
|
||||
];
|
||||
|
||||
const [channels, memberships] = await Promise.all(promises);
|
||||
const remaining = Math.floor(channels.length / General.CHANNEL_MEMBERS_CHUNK_SIZE);
|
||||
const remainingMembershipsPromises = [];
|
||||
const categoriesPromises = [];
|
||||
|
||||
const teamIdsSet = channels.reduce<Set<string>>((set, c) => {
|
||||
|
|
@ -427,24 +445,15 @@ export async function fetchAllMyChannelsForAllTeams(serverUrl: string, since: nu
|
|||
}
|
||||
return set;
|
||||
}, new Set());
|
||||
|
||||
for (const teamId of teamIdsSet) {
|
||||
categoriesPromises.push(client.getCategories('me', teamId, groupLabel));
|
||||
}
|
||||
|
||||
if (remaining > 0) {
|
||||
for (let i = 1; i <= remaining; i++) {
|
||||
remainingMembershipsPromises.push(client.getAllMyChannelMembersFromAllTeams(i, General.CHANNEL_MEMBERS_CHUNK_SIZE, groupLabel));
|
||||
}
|
||||
}
|
||||
|
||||
const results = await Promise.all([...remainingMembershipsPromises, ...categoriesPromises]);
|
||||
const categories: CategoryWithChannels[] = [];
|
||||
const results = await Promise.all(categoriesPromises);
|
||||
for (const result of results) {
|
||||
if (Array.isArray(result)) {
|
||||
memberships.push(...result);
|
||||
} else if ('categories' in result) {
|
||||
categories.push(...result.categories);
|
||||
}
|
||||
categories.push(...result.categories);
|
||||
}
|
||||
|
||||
if (!fetchOnly) {
|
||||
|
|
|
|||
2
package-lock.json
generated
2
package-lock.json
generated
|
|
@ -6,7 +6,7 @@
|
|||
"packages": {
|
||||
"": {
|
||||
"name": "mattermost-mobile",
|
||||
"version": "2.24.0",
|
||||
"version": "2.25.0",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache 2.0",
|
||||
"dependencies": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue