mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
fix(app): apply streamer mode to member nicknames and stop guild scope leaking into global surfaces (#1697)
This commit is contained in:
1 parent
3fa766c39c
commit
3ff7189566
32 files changed
+82
-61
No files matched your search
@@ -487,7 +487,9 @@ const LazyMemberList = observer(function LazyMemberList({guild, channel}: LazyMe
|
||||
continue;
|
||||
}
|
||||
const user = member.user;
|
||||
const displayName = member.nick ?? NicknameUtils.getNickname(user, guild.id);
|
||||
const displayName = member.nick
|
||||
? NicknameUtils.formatNicknameForStreamerMode(member.nick)
|
||||
: NicknameUtils.getNickname(user, guild.id);
|
||||
const status = resolveMemberListPresence({guildId: guild.id, channelId: channel.id, userId: user.id});
|
||||
const customStatus = resolveMemberListCustomStatus({
|
||||
guildId: guild.id,
|
||||
@@ -599,7 +601,9 @@ const LazyMemberList = observer(function LazyMemberList({guild, channel}: LazyMe
|
||||
continue;
|
||||
}
|
||||
const user = member.user;
|
||||
const displayName = member.nick ?? NicknameUtils.getNickname(user, guild.id);
|
||||
const displayName = member.nick
|
||||
? NicknameUtils.formatNicknameForStreamerMode(member.nick)
|
||||
: NicknameUtils.getNickname(user, guild.id);
|
||||
const status = resolveMemberListPresence({guildId: guild.id, channelId: channel.id, userId: user.id});
|
||||
const customStatus = resolveMemberListCustomStatus({
|
||||
guildId: guild.id,
|
||||
|
||||
+1
-1
@@ -305,7 +305,7 @@ export const ChannelDetailsBottomSheet: React.FC<ChannelDetailsBottomSheetProps>
|
||||
<ConfirmModal
|
||||
title={i18n._(CLOSE_DM_DESCRIPTOR)}
|
||||
description={i18n._(ARE_YOU_SURE_YOU_WANT_TO_CLOSE_YOUR_DESCRIPTOR, {
|
||||
recipientUsername: recipient ? NicknameUtils.getNickname(recipient) : '',
|
||||
recipientUsername: recipient ? NicknameUtils.getNickname(recipient, null) : '',
|
||||
})}
|
||||
primaryText={i18n._(CLOSE_DM_DESCRIPTOR)}
|
||||
primaryVariant="danger"
|
||||
|
||||
+3
-1
@@ -129,7 +129,9 @@ export const MobileMemberListItem = observer(
|
||||
const handleLongPress = useCallback(() => {
|
||||
onLongPress?.(member);
|
||||
}, [member, onLongPress]);
|
||||
const displayName = member.nick ?? NicknameUtils.getNickname(member.user, guild.id);
|
||||
const displayName = member.nick
|
||||
? NicknameUtils.formatNicknameForStreamerMode(member.nick)
|
||||
: NicknameUtils.getNickname(member.user, guild.id);
|
||||
const avatarUrl = useMemo(
|
||||
() =>
|
||||
AvatarUtils.getGuildMemberDisplayAvatarURL({
|
||||
|
||||
@@ -491,7 +491,7 @@ export const DMChannelView = observer(({channelId}: DMChannelViewProps) => {
|
||||
) : isDM && isRecipientBlocked && recipient ? (
|
||||
<BlockedUserBarrier
|
||||
userId={recipient.id}
|
||||
username={NicknameUtils.getNickname(recipient)}
|
||||
username={NicknameUtils.getNickname(recipient, null)}
|
||||
data-flx="channel.channel-view.dm-channel-view.blocked-user-barrier"
|
||||
/>
|
||||
) : isCurrentUserUnclaimed && isDM && !isPersonalNotes && !isGroupDM ? (
|
||||
|
||||
+2
-2
@@ -72,7 +72,7 @@ export const CallParticipantsRow = observer(
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
const participantEntry = participantEntryByUserId.get(user.id);
|
||||
const participantName = NicknameUtils.getNickname(user, channel.guildId ?? undefined, channel.id) || user.id;
|
||||
const participantName = NicknameUtils.getNickname(user, channel.guildId ?? null, channel.id) || user.id;
|
||||
ContextMenuCommands.openFromEvent(event, ({onClose}) =>
|
||||
participantEntry ? (
|
||||
<VoiceParticipantContextMenu
|
||||
@@ -155,7 +155,7 @@ export const CallParticipantsRow = observer(
|
||||
>
|
||||
{participants.map(({user, isRinging}) => {
|
||||
const participantEntry = participantEntryByUserId.get(user.id);
|
||||
const displayName = NicknameUtils.getNickname(user, channel.guildId ?? undefined, channel.id);
|
||||
const displayName = NicknameUtils.getNickname(user, channel.guildId ?? null, channel.id);
|
||||
return (
|
||||
<motion.button
|
||||
type="button"
|
||||
|
||||
@@ -175,7 +175,7 @@ export function useDMListItemHandlers({
|
||||
closeAllSheets();
|
||||
}, [channel.id, closeAllSheets]);
|
||||
const handleCloseDm = useCallback(() => {
|
||||
const username = recipient ? NicknameUtils.getNickname(recipient) : '';
|
||||
const username = recipient ? NicknameUtils.getNickname(recipient, null) : '';
|
||||
const description = isGroupDM
|
||||
? i18n._(ARE_YOU_SURE_YOU_WANT_TO_CLOSE_THIS_DESCRIPTOR)
|
||||
: i18n._(ARE_YOU_SURE_YOU_WANT_TO_CLOSE_YOUR_DESCRIPTOR, {username});
|
||||
|
||||
@@ -367,7 +367,7 @@ export const FriendListItem: React.FC<FriendListItemProps> = observer((props) =>
|
||||
<div className={styles.friendDetails} data-flx="channel.friends.friend-list-item.friend-details">
|
||||
<div className={styles.friendNameRow} data-flx="channel.friends.friend-list-item.friend-name-row">
|
||||
<span className={styles.friendName} data-flx="channel.friends.friend-list-item.friend-name">
|
||||
{NicknameUtils.getNickname(user)}
|
||||
{NicknameUtils.getNickname(user, null)}
|
||||
</span>
|
||||
<span className={styles.friendTag} data-flx="channel.friends.friend-list-item.friend-tag">
|
||||
{NicknameUtils.formatTagForStreamerMode(user.tag)}
|
||||
|
||||
@@ -167,7 +167,7 @@ export const MobileFriendRequestItem: React.FC<MobileFriendRequestItemProps> = o
|
||||
/>
|
||||
<div className={styles.userInfo} data-flx="channel.friends.mobile-friend-request-item.user-info">
|
||||
<span className={styles.userName} data-flx="channel.friends.mobile-friend-request-item.user-name">
|
||||
{NicknameUtils.getNickname(user)}
|
||||
{NicknameUtils.getNickname(user, null)}
|
||||
</span>
|
||||
<span className={styles.requestStatus} data-flx="channel.friends.mobile-friend-request-item.request-status">
|
||||
{statusText}
|
||||
@@ -179,7 +179,7 @@ export const MobileFriendRequestItem: React.FC<MobileFriendRequestItemProps> = o
|
||||
onClick={() => setMenuOpen(true)}
|
||||
className={styles.actionButton}
|
||||
aria-label={i18n._(FRIEND_REQUEST_ACTIONS_FOR_DESCRIPTOR, {
|
||||
displayName: NicknameUtils.getNickname(user),
|
||||
displayName: NicknameUtils.getNickname(user, null),
|
||||
})}
|
||||
aria-haspopup="dialog"
|
||||
data-flx="channel.friends.mobile-friend-request-item.action-button.set-menu-open"
|
||||
|
||||
@@ -70,7 +70,7 @@ export const FriendsList: React.FC<FriendsListProps> = observer(({showOnlineOnly
|
||||
return true;
|
||||
}
|
||||
const user = Users.getUser(userId);
|
||||
const nickname = user ? NicknameUtils.getNickname(user) : '';
|
||||
const nickname = user ? NicknameUtils.getNickname(user, null) : '';
|
||||
const username = user?.username ?? '';
|
||||
return `${nickname} ${username}`.toLowerCase().includes(normalizedQuery);
|
||||
};
|
||||
@@ -84,7 +84,7 @@ export const FriendsList: React.FC<FriendsListProps> = observer(({showOnlineOnly
|
||||
const userA = Users.getUser(a);
|
||||
const userB = Users.getUser(b);
|
||||
if (!userA || !userB) return 0;
|
||||
return NicknameUtils.getNickname(userA).localeCompare(NicknameUtils.getNickname(userB));
|
||||
return NicknameUtils.getNickname(userA, null).localeCompare(NicknameUtils.getNickname(userB, null));
|
||||
});
|
||||
const reportedTab = showOnlineOnly ? SkeletonFriendsTab.ONLINE : SkeletonFriendsTab.ALL;
|
||||
useEffect(() => {
|
||||
|
||||
@@ -68,7 +68,7 @@ export const PendingFriendsView: React.FC<PendingFriendsViewProps> = observer(
|
||||
return true;
|
||||
}
|
||||
const user = Users.getUser(userId);
|
||||
const nickname = user ? NicknameUtils.getNickname(user) : '';
|
||||
const nickname = user ? NicknameUtils.getNickname(user, null) : '';
|
||||
const username = user?.username ?? '';
|
||||
return `${nickname} ${username}`.toLowerCase().includes(normalizedQuery);
|
||||
};
|
||||
@@ -77,7 +77,7 @@ export const PendingFriendsView: React.FC<PendingFriendsViewProps> = observer(
|
||||
const userA = Users.getUser(a.id);
|
||||
const userB = Users.getUser(b.id);
|
||||
if (!userA || !userB) return 0;
|
||||
return NicknameUtils.getNickname(userA).localeCompare(NicknameUtils.getNickname(userB));
|
||||
return NicknameUtils.getNickname(userA, null).localeCompare(NicknameUtils.getNickname(userB, null));
|
||||
});
|
||||
const visibleIncoming = sortByDisplayName(
|
||||
hasSearch ? incomingRequests.filter((request) => matchesSearch(request.id)) : incomingRequests,
|
||||
|
||||
@@ -268,7 +268,7 @@ export const MemberTableRow: React.FC<MemberTableRowProps> = observer(
|
||||
},
|
||||
[topRole],
|
||||
);
|
||||
const displayName = member?.nick ?? data.nickname ?? data.displayName;
|
||||
const displayName = NicknameUtils.formatNicknameForStreamerMode(member?.nick || data.nickname || data.displayName);
|
||||
const tag = user?.tag ?? data.tag;
|
||||
return (
|
||||
<div
|
||||
|
||||
@@ -13,6 +13,7 @@ import GuildMembers from '@app/features/member/state/GuildMembers';
|
||||
import {http} from '@app/features/platform/transport/RestTransport';
|
||||
import {Logger} from '@app/features/platform/utils/AppLogger';
|
||||
import Users from '@app/features/user/state/Users';
|
||||
import * as NicknameUtils from '@app/features/user/utils/NicknameUtils';
|
||||
import {extractTimestampFromSnowflakeAsDate} from '@fluxer/snowflake/src/SnowflakeUtils';
|
||||
|
||||
export const logger = new Logger('GuildMembersPage');
|
||||
@@ -27,7 +28,8 @@ export async function searchGuildMembers(guildId: string, params: SearchParams):
|
||||
export function toMemberDisplayData(searchMember: SearchableGuildMember, guildId: string): MemberDisplayData {
|
||||
const user = Users.getUser(searchMember.user_id);
|
||||
const member = GuildMembers.getMember(guildId, searchMember.user_id);
|
||||
const displayName = member?.nick ?? searchMember.nickname ?? searchMember.global_name ?? searchMember.username;
|
||||
const resolvedName = member?.nick || searchMember.nickname || searchMember.global_name || searchMember.username;
|
||||
const displayName = NicknameUtils.formatNicknameForStreamerMode(resolvedName);
|
||||
const tag = user ? user.tag : `${searchMember.username}#${searchMember.discriminator}`;
|
||||
return {
|
||||
userId: searchMember.user_id,
|
||||
|
||||
Reference in new issue
Block a user