fix(app): keep forum channels after a warm account switch (#3441)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-13 02:23:24 +02:00
1 parent fce3200265
commit 922ff5ea64
1 file changed
+5 -5
@@ -227,7 +227,7 @@ function hydrateAccountMetadata(metadata: SnapshotAccountMetadataRow): void {
WebAuthnCredentials.setCredentials(metadata.webAuthnCredentials); WebAuthnCredentials.setCredentials(metadata.webAuthnCredentials);
} }
function hydrateThreads(parsed: ParsedSnapshot): void { function guildsWithChannels(parsed: ParsedSnapshot): Array<GuildReadyData> {
const channelsByGuild = new Map<string, Array<WireChannel>>(); const channelsByGuild = new Map<string, Array<WireChannel>>();
for (const channel of parsed.channels) { for (const channel of parsed.channels) {
if (channel.guild_id == null) continue; if (channel.guild_id == null) continue;
@@ -238,9 +238,7 @@ function hydrateThreads(parsed: ParsedSnapshot): void {
} }
channels.push(channel); channels.push(channel);
} }
const guilds = parsed.guilds.map((guild) => ({...guild, channels: channelsByGuild.get(guild.id) ?? []})); return parsed.guilds.map((guild) => ({...guild, channels: channelsByGuild.get(guild.id) ?? []}));
ThreadGuilds.handleGatewayReady(guilds);
ChannelThreads.handleGatewayReady(guilds);
} }
function applyParsedSnapshot(storageKey: string, parsed: ParsedSnapshot, selfUserId: string): void { function applyParsedSnapshot(storageKey: string, parsed: ParsedSnapshot, selfUserId: string): void {
@@ -256,8 +254,10 @@ function applyParsedSnapshot(storageKey: string, parsed: ParsedSnapshot, selfUse
GuildCount.handleGatewayReady(parsed.guilds); GuildCount.handleGatewayReady(parsed.guilds);
GuildMembers.handleGatewayReady(parsed.guilds); GuildMembers.handleGatewayReady(parsed.guilds);
GuildAvailability.hydrateFromSnapshot(parsed.unavailableGuilds); GuildAvailability.hydrateFromSnapshot(parsed.unavailableGuilds);
const threadGuilds = guildsWithChannels(parsed);
ThreadGuilds.handleGatewayReady(threadGuilds);
Channels.hydrateFromSnapshot(parsed.channels, selfUserId); Channels.hydrateFromSnapshot(parsed.channels, selfUserId);
hydrateThreads(parsed); ChannelThreads.handleGatewayReady(threadGuilds);
GuildVerification.handleGatewayReady(); GuildVerification.handleGatewayReady();
Permission.handleGatewayReady(); Permission.handleGatewayReady();
MemberSearch.handleGatewayReady(); MemberSearch.handleGatewayReady();