+ {/* Trigger chip — mirrors NetworkChip's visual pattern */}
+
+
+ {/* Dropdown */}
+ {open && (
+
+ {/* Profile list */}
+
+
+ {/* Divider + New profile */}
+ {!showNewForm ? (
+
+ ) : (
+
setShowNewForm(false)}
+ existingProfiles={profiles}
+ chain={chain}
+ />
+ )}
+
+ )}
+
+ );
+}
diff --git a/src/components/SolanaReceive.tsx b/src/components/SolanaReceive.tsx
index 941cfc6..0901f89 100644
--- a/src/components/SolanaReceive.tsx
+++ b/src/components/SolanaReceive.tsx
@@ -18,6 +18,8 @@ import { CopyButton } from '@/components/CopyButton';
import { trackEvent } from '@/lib/telemetry';
import { solanaTxUrl, solanaAddrUrl } from '@/lib/explorer';
import { SOLANA_NETWORK } from '@/config';
+import { useProfilesStore } from '@/store/profilesStore';
+import { profileSigningMessage } from '@/lib/profileSigningMessage';
function SolanaStealthRow({
match,
@@ -211,6 +213,7 @@ export function SolanaReceive() {
const navigate = useNavigate();
const { connected, signMessage } = useWallet();
const { solanaKeys, solanaMetaAddress, setSolanaKeys, setSolanaMetaAddress } = useStealthKeys();
+ const activeProfileId = useProfilesStore((s) => s.activeProfileId);
const [isDerivingKeys, setIsDerivingKeys] = useState(false);
const [isScanning, setIsScanning] = useState(false);
@@ -226,7 +229,8 @@ export function SolanaReceive() {
setIsDerivingKeys(true);
setError('');
try {
- const msgBytes = new TextEncoder().encode(STEALTH_SIGNING_MESSAGE);
+ const message = profileSigningMessage(STEALTH_SIGNING_MESSAGE, activeProfileId);
+ const msgBytes = new TextEncoder().encode(message);
const signature = await signMessage(msgBytes);
const derived = deriveStealthKeys(signature);
setSolanaKeys(derived);
@@ -237,7 +241,7 @@ export function SolanaReceive() {
} finally {
setIsDerivingKeys(false);
}
- }, [signMessage, setSolanaKeys, setSolanaMetaAddress, t]);
+ }, [signMessage, activeProfileId, setSolanaKeys, setSolanaMetaAddress, t]);
const scanPayments = useCallback(async () => {
if (!solanaKeys) return;
diff --git a/src/components/StellarBatchWithdrawModal.tsx b/src/components/StellarBatchWithdrawModal.tsx
index 0068e1b..34c1ea9 100644
--- a/src/components/StellarBatchWithdrawModal.tsx
+++ b/src/components/StellarBatchWithdrawModal.tsx
@@ -12,6 +12,8 @@ import { CopyButton } from '@/components/CopyButton';
import { stellarTxUrl, stellarAddrUrl } from '@/lib/explorer';
import { useActivityStore } from '@/stores/activityStore';
import { useStellarWallet } from '@/context/StellarWalletContext';
+import { useFocusTrap } from '@/hooks/useFocusTrap';
+import { useProfilesStore } from '@/store/profilesStore';
export interface StellarBatchWithdrawModalProps {
isOpen: boolean;
@@ -32,6 +34,7 @@ export function StellarBatchWithdrawModal({
const { address: walletAddress } = useStellarWallet();
const addActivity = useActivityStore((state) => state.addEntry);
const updateActivity = useActivityStore((state) => state.updateStatus);
+ const activeProfileId = useProfilesStore((s) => s.activeProfileId);
const [globalDestination, setGlobalDestination] = useState('');
const [assetKey] = useState