11import { useDispatch } from 'react-redux' ;
2- import { getCachedNakedKeyFromBlindedNoServerPubkey } from '../../session/apis/open_group_api/sogsv3/knownBlindedkeys' ;
2+ import {
3+ findCachedBlindedMatchOrLookItUp ,
4+ getCachedNakedKeyFromBlindedNoServerPubkey ,
5+ } from '../../session/apis/open_group_api/sogsv3/knownBlindedkeys' ;
36import { ConvoHub } from '../../session/conversations' ;
47import { KeyPrefixType , PubKey } from '../../session/types' ;
58import { updateUserProfileModal } from '../../state/ducks/modalDialog' ;
69import { Data } from '../../data/data' ;
710import type { WithMessageId } from '../../session/types/with' ;
8- import { useIsMe , useIsPrivate } from '../../hooks/useParamSelector' ;
11+ import { useIsMe , useIsPrivate , useIsPublic } from '../../hooks/useParamSelector' ;
912import { useSelectedConversationKey } from '../../state/selectors/selectedConversation' ;
13+ import { getSodiumRenderer } from '../../session/crypto' ;
14+ import { OpenGroupData } from '../../data/opengroups' ;
1015
1116/**
1217 * Show the user details modal for a given message in the currently selected conversation.
@@ -15,6 +20,7 @@ export function useShowUserDetailsCbFromMessage() {
1520 const dispatch = useDispatch ( ) ;
1621
1722 const selectedConvoKey = useSelectedConversationKey ( ) ;
23+ const isPublic = useIsPublic ( selectedConvoKey ) ;
1824
1925 if ( ! selectedConvoKey ) {
2026 throw new Error ( 'useShowUserDetailsCbFromMessage: no selected convo key' ) ;
@@ -37,8 +43,22 @@ export function useShowUserDetailsCbFromMessage() {
3743 ) ;
3844 }
3945
40- const resolvedNakedId = getCachedNakedKeyFromBlindedNoServerPubkey ( sender ) ;
41- const foundRealSessionId = resolvedNakedId !== sender ? resolvedNakedId : undefined ;
46+ let foundRealSessionId : string | undefined ;
47+ if ( PubKey . isBlinded ( sender ) && isPublic ) {
48+ const openGroup = OpenGroupData . getV2OpenGroupRoom ( selectedConvoKey ) ;
49+
50+ if ( ! openGroup ) {
51+ throw new Error ( 'useShowUserDetailsCbFromMessage: no open group found' ) ;
52+ }
53+ // Note: this is an expensive call
54+ const resolvedNakedId = await findCachedBlindedMatchOrLookItUp (
55+ sender ,
56+ openGroup . serverPublicKey ,
57+ await getSodiumRenderer ( )
58+ ) ;
59+ foundRealSessionId =
60+ resolvedNakedId && resolvedNakedId !== sender ? resolvedNakedId : undefined ;
61+ }
4262
4363 if ( foundRealSessionId && foundRealSessionId . startsWith ( KeyPrefixType . standard ) ) {
4464 await ConvoHub . use ( ) . get ( sender ) . setOriginConversationID ( selectedConvoKey , true ) ;
0 commit comments