Skip to content

Commit 15b52ce

Browse files
committed
fix: upm on blindeId resolvable should open resolved id
Relates SES-4295
1 parent a253ab0 commit 15b52ce

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

ts/components/menuAndSettingsHooks/useShowUserDetailsCb.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import { 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';
36
import { ConvoHub } from '../../session/conversations';
47
import { KeyPrefixType, PubKey } from '../../session/types';
58
import { updateUserProfileModal } from '../../state/ducks/modalDialog';
69
import { Data } from '../../data/data';
710
import type { WithMessageId } from '../../session/types/with';
8-
import { useIsMe, useIsPrivate } from '../../hooks/useParamSelector';
11+
import { useIsMe, useIsPrivate, useIsPublic } from '../../hooks/useParamSelector';
912
import { 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

Comments
 (0)