fix(app): remove last usage of client-side mutual guilds (#53)

This commit is contained in:
hampus-fluxer 2026-01-06 04:55:50 +01:00 committed by GitHub
parent fd2a1390b9
commit d0ef591dd9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 28 deletions

View File

@ -30,8 +30,9 @@ import {Button} from '~/components/uikit/Button/Button';
import FocusRing from '~/components/uikit/FocusRing/FocusRing';
import {StatusAwareAvatar} from '~/components/uikit/StatusAwareAvatar';
import {Tooltip} from '~/components/uikit/Tooltip/Tooltip';
import type {GuildRecord} from '~/records/GuildRecord';
import type {ProfileRecord} from '~/records/ProfileRecord';
import GuildMemberStore from '~/stores/GuildMemberStore';
import GuildStore from '~/stores/GuildStore';
import MobileLayoutStore from '~/stores/MobileLayoutStore';
import RelationshipStore from '~/stores/RelationshipStore';
import UserStore from '~/stores/UserStore';
@ -45,11 +46,16 @@ export const DMWelcomeSection: React.FC<DMWelcomeSectionProps> = observer(functi
const {t} = useLingui();
const user = UserStore.getUser(userId);
const mutualGuilds = GuildMemberStore.getMutualGuilds(user?.id ?? '');
const relationship = RelationshipStore.getRelationship(user?.id ?? '');
const relationshipType = relationship?.type;
const [profile, setProfile] = React.useState<ProfileRecord | null>(null);
const mobileLayout = MobileLayoutStore;
const profileMutualGuilds = React.useMemo(() => profile?.mutualGuilds ?? [], [profile?.mutualGuilds]);
const mutualGuildRecords = React.useMemo(() => {
return profileMutualGuilds
.map((mutualGuild) => GuildStore.getGuild(mutualGuild.id))
.filter((guild): guild is GuildRecord => guild !== undefined);
}, [profileMutualGuilds]);
React.useEffect(() => {
if (!user) return;
@ -92,7 +98,7 @@ export const DMWelcomeSection: React.FC<DMWelcomeSectionProps> = observer(functi
RelationshipActionCreators.removeRelationship(user.id);
};
const hasMutualGuilds = mutualGuilds.length > 0;
const hasMutualGuilds = profileMutualGuilds.length > 0;
const currentUserUnclaimed = !(UserStore.currentUser?.isClaimed() ?? true);
const shouldShowActionButton =
!user.bot &&
@ -100,7 +106,7 @@ export const DMWelcomeSection: React.FC<DMWelcomeSectionProps> = observer(functi
relationshipType === RelationshipTypes.INCOMING_REQUEST ||
relationshipType === RelationshipTypes.OUTGOING_REQUEST ||
relationshipType === RelationshipTypes.FRIEND);
const mutualGuildCount = mutualGuilds.length;
const mutualGuildCount = profileMutualGuilds.length;
const renderActionButton = () => {
if (user.bot) return null;
@ -154,13 +160,15 @@ export const DMWelcomeSection: React.FC<DMWelcomeSectionProps> = observer(functi
return (
<div className={styles.mutualGuildsContainer}>
<AvatarStack size={32} maxVisible={3}>
{mutualGuilds.map((guild) => (
<div key={guild.id} className={styles.guildIconWrapper}>
<GuildIcon id={guild.id} name={guild.name} icon={guild.icon} className={styles.guildIcon} sizePx={32} />
</div>
))}
</AvatarStack>
{mutualGuildRecords.length > 0 && (
<AvatarStack size={32} maxVisible={3}>
{mutualGuildRecords.map((guild) => (
<div key={guild.id} className={styles.guildIconWrapper}>
<GuildIcon id={guild.id} name={guild.name} icon={guild.icon} className={styles.guildIcon} sizePx={32} />
</div>
))}
</AvatarStack>
)}
<span className={styles.mutualGuildsText}>
{mutualGuildCount === 1

View File

@ -19,10 +19,9 @@
import {makeAutoObservable} from 'mobx';
import {type GuildMember, GuildMemberRecord} from '~/records/GuildMemberRecord';
import type {GuildReadyData, GuildRecord} from '~/records/GuildRecord';
import type {GuildReadyData} from '~/records/GuildRecord';
import AuthenticationStore from '~/stores/AuthenticationStore';
import ConnectionStore from '~/stores/ConnectionStore';
import GuildStore from '~/stores/GuildStore';
type Members = Record<string, GuildMemberRecord>;
@ -80,21 +79,6 @@ class GuildMemberStore {
return Object.keys(this.members[guildId] ?? {}).length;
}
getMutualGuilds(userId: string): Array<GuildRecord> {
const currentUserId = AuthenticationStore.currentUserId;
if (!currentUserId || !userId || currentUserId === userId) {
return [];
}
const guilds = GuildStore.getGuilds();
return guilds.filter((guild) => {
const userIsMember = this.getMember(guild.id, userId) != null;
const currentUserIsMember = this.getMember(guild.id, currentUserId) != null;
return userIsMember && currentUserIsMember;
});
}
handleConnectionOpen(guilds: Array<GuildReadyData>): void {
this.members = {};
for (const guild of guilds) {