From 03da8f56228bac2f31e7d3107e2a6bc4e37dbc7e Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 3 Feb 2025 11:16:23 +1100 Subject: [PATCH] fix: mention for legacy groups --- .../composition/CompositionTextArea.tsx | 8 +++++++- ts/hooks/useParamSelector.ts | 14 +++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ts/components/conversation/composition/CompositionTextArea.tsx b/ts/components/conversation/composition/CompositionTextArea.tsx index 2fc3bf626..c482df9f8 100644 --- a/ts/components/conversation/composition/CompositionTextArea.tsx +++ b/ts/components/conversation/composition/CompositionTextArea.tsx @@ -23,6 +23,7 @@ import { UserUtils } from '../../../session/utils'; import { localize } from '../../../localization/localeTools'; import { PubKey } from '../../../session/types'; import { useLibGroupMembers } from '../../../state/selectors/groups'; +import { use05GroupMembers } from '../../../hooks/useParamSelector'; const sendMessageStyle = (dir?: HTMLDirection) => { return { @@ -76,6 +77,8 @@ function useMembersInThisChat(): Array { const membersForCommunity = useSelector(getMentionsInput); const membersFor03Group = useLibGroupMembers(selectedConvoKey); + const membersFor05LegacyGroup = use05GroupMembers(selectedConvoKey); + if (!selectedConvoKey) { return []; } @@ -84,7 +87,10 @@ function useMembersInThisChat(): Array { } const members = isPrivate ? uniq([UserUtils.getOurPubKeyStrFromCache(), selectedConvoKey]) - : membersFor03Group || []; + : PubKey.is03Pubkey(selectedConvoKey) + ? membersFor03Group + : membersFor05LegacyGroup; + return members.map(m => { return { id: m, diff --git a/ts/hooks/useParamSelector.ts b/ts/hooks/useParamSelector.ts index 55bdc46e8..4c5d1544c 100644 --- a/ts/hooks/useParamSelector.ts +++ b/ts/hooks/useParamSelector.ts @@ -470,9 +470,13 @@ export function useQuoteAuthorName(authorId?: string): { return { authorName, isMe }; } -function useMembers(convoId: string | undefined) { +export function use05GroupMembers(convoId: string | undefined): Array { const props = useConversationPropsById(convoId); - return props?.members || undefined; + const members = props?.members || []; + if (members.every(m => PubKey.is05Pubkey(m))) { + return members; + } + throw new Error('use05GroupMembers: some members not 05 prefixed. That cannot be possible.'); } /** @@ -480,7 +484,7 @@ function useMembers(convoId: string | undefined) { * @param convoId the closed group id to extract members from */ export function useSortedGroupMembers(convoId: string | undefined): Array { - const members = useMembers(convoId); + const members = use05GroupMembers(convoId); const isPublic = useIsPublic(convoId); const isPrivate = useIsPrivate(convoId); const libMembers = useLibGroupMembers(convoId); @@ -488,10 +492,10 @@ export function useSortedGroupMembers(convoId: string | undefined): Array; + return compact(members.slice()?.sort()); } export function useDisappearingMessageSettingText({