diff --git a/src/components/RelaySelector/hooks/useSelectedRelay.ts b/src/components/RelaySelector/hooks/useSelectedRelay.ts index 88fa594a..c662cde7 100644 --- a/src/components/RelaySelector/hooks/useSelectedRelay.ts +++ b/src/components/RelaySelector/hooks/useSelectedRelay.ts @@ -1,6 +1,10 @@ import { useEffect, useMemo } from 'react'; import { useLocalStorage } from 'usehooks-ts'; import { RelayMode } from '../type'; +import { useSelector } from 'react-redux'; +import { RootState } from 'store/configureStore'; +import { useReadonlyMyPublicKey } from 'hooks/useMyPublicKey'; +import { isValidPublicKey } from 'utils/validator'; const SELECTED_RELAY_MODE_KEY = 'relay-selector:selected-mode:{{pubKey}}'; const SELECTED_RELAY_GROUP_ID_KEY = @@ -23,14 +27,19 @@ const getLegacyLocalValue = (key: string) => { } }; -export function useSelectedRelay(myPublicKey: string) { +export function useSelectedRelay() { + const localPubkey = useReadonlyMyPublicKey(); + const pubkey = useSelector( + (state: RootState) => state.loginReducer.publicKey, + ); + const myPublicKey = isValidPublicKey(localPubkey) ? localPubkey : pubkey; const selectedModeKey = SELECTED_RELAY_MODE_KEY.replace( '{{pubKey}}', - myPublicKey, + myPublicKey ?? 'unknown', ); const selectedGroupIdKey = SELECTED_RELAY_GROUP_ID_KEY.replace( '{{pubKey}}', - myPublicKey, + myPublicKey ?? 'unknown', ); const [selectedMode = getLegacyLocalValue(selectedModeKey), setSelectedMode] = diff --git a/src/components/RelaySelector/index.tsx b/src/components/RelaySelector/index.tsx index 07ea96e4..8e49f44a 100644 --- a/src/components/RelaySelector/index.tsx +++ b/src/components/RelaySelector/index.tsx @@ -43,7 +43,7 @@ export function RelaySelector({ const myPublicKey = useReadonlyMyPublicKey(); const defaultGroup = useDefaultGroup(); const [relayGroupMap, setRelayGroupMap] = useState(new Map()); - const [selectedRelay, setSelectedRelay] = useSelectedRelay(myPublicKey); + const [selectedRelay, setSelectedRelay] = useSelectedRelay(); useEffect(() => { if (newConnCallback) { diff --git a/src/store/loginReducer.ts b/src/store/loginReducer.ts index f773b711..cc8d36a4 100644 --- a/src/store/loginReducer.ts +++ b/src/store/loginReducer.ts @@ -178,6 +178,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, isLoggedIn: isLoggedIn, + publicKey: pk, getPublicKey: async () => { return await window.nostr!.getPublicKey(); }, @@ -198,6 +199,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, isLoggedIn: isLoggedIn, + publicKey: pk, getPublicKey: async () => { return await requestPublicKeyFromDotBit(request.didAlias!); }, @@ -219,6 +221,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, isLoggedIn: true, + publicKey: pk, getPublicKey: async () => { return await requestPublicKeyFromNip05DomainName( request.nip05DomainName!, @@ -244,6 +247,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, isLoggedIn: isLoggedIn, + publicKey: pk, getPublicKey: getPublicKey, signEvent: createMetamaskSignEvent(request.evmUsername), evmUsername: request.evmUsername, @@ -264,6 +268,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, + publicKey: pk, isLoggedIn: isLoggedIn, getPublicKey: getPublicKey, signEvent: createWalletConnectSignEvent(request.evmUsername), @@ -279,6 +284,7 @@ export async function getLoginInfo(request: LoginRequest): Promise { return { mode, + publicKey: pk, isLoggedIn: isLoggedIn, getPublicKey: async () => { return await joyIdNostr.getPublicKey();