fix entry logic to not re-fetch data for the initial team (#8349) (#8354)

This commit is contained in:
Mattermost Build 2024-11-18 11:19:23 +01:00 committed by GitHub
parent 4cdf36c771
commit c256c8f761
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 9 deletions

View file

@ -396,6 +396,11 @@ async function restDeferredAppEntryActions(
const sortedTeamIds = new Set(teamsOrder?.value.split(','));
const membershipSet = new Set(teamData.memberships.map((m) => m.team_id));
const teamMap = new Map(teamData.teams.map((t) => [t.id, t]));
if (initialTeamId) {
sortedTeamIds.delete(initialTeamId);
membershipSet.delete(initialTeamId);
teamMap.delete(initialTeamId);
}
let myTeams: Team[];
if (sortedTeamIds.size) {
@ -411,7 +416,10 @@ async function restDeferredAppEntryActions(
myTeams = teamData.teams.
sort((a, b) => a.display_name.toLocaleLowerCase().localeCompare(b.display_name.toLocaleLowerCase()));
}
fetchTeamsChannelsThreadsAndUnreadPosts(serverUrl, since, myTeams, isCRTEnabled);
if (myTeams.length) {
fetchTeamsChannelsThreadsAndUnreadPosts(serverUrl, since, myTeams, isCRTEnabled);
}
}
});

View file

@ -14,7 +14,6 @@ import {getConfigValue, getCurrentChannelId, getCurrentTeamId} from '@queries/se
import {getIsCRTEnabled, getThreadById, getTeamThreadsSyncData} from '@queries/servers/thread';
import {getCurrentUser} from '@queries/servers/user';
import {getFullErrorMessage} from '@utils/errors';
import {isMinimumServerVersion} from '@utils/helpers';
import {logDebug, logError} from '@utils/log';
import {showThreadFollowingSnackbar} from '@utils/snack_bar';
import {getThreadsListEdges} from '@utils/thread';
@ -286,15 +285,10 @@ export const syncThreadsIfNeeded = async (serverUrl: string, isCRTEnabled: boole
return {models: []};
}
const {database, operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
const {operator} = DatabaseManager.getServerDatabaseAndOperator(serverUrl);
const promises = [];
const models: Model[][] = [];
// this is to keep backwards compatibility with servers that send the
// threads for DM / GM regardless for every team
const version = await getConfigValue(database, 'Version');
const hasThreadExclusions = isMinimumServerVersion(version, 10, 2, 0);
if (teams?.length) {
for (const team of teams) {
promises.push(syncTeamThreads(serverUrl, team.id, true, true));
@ -312,7 +306,7 @@ export const syncThreadsIfNeeded = async (serverUrl: string, isCRTEnabled: boole
const flat = models.flat();
if (!fetchOnly && flat.length) {
const uniqueArray = hasThreadExclusions ? flat : removeDuplicatesModels(flat);
const uniqueArray = removeDuplicatesModels(flat);
await operator.batchRecords(uniqueArray, 'syncThreadsIfNeeded');
}