From 5911c201d9ea14771e1cfd2a1b923b345af14ca1 Mon Sep 17 00:00:00 2001
From: Vedant Madane <6527493+VedantMadane@users.noreply.github.com>
Date: Wed, 26 Aug 2026 19:22:47 +0530
Subject: [PATCH] fix(frontend): remove unsafe non-null assertion on
WalletConnect publicKey with proper null handling
Replace publicKey! with a null guard, fallback label, and dev-mode
console.warn so a connected state without a key cannot crash render.
Fixes #274
Signed-off-by: Vedant Madane <6527493+VedantMadane@users.noreply.github.com>
---
frontend/package-lock.json | 4 +-
frontend/package.json | 2 +-
.../src/components/WalletConnect.test.tsx | 75 +++++++++++++++++++
frontend/src/components/WalletConnect.tsx | 66 +++++++++-------
4 files changed, 116 insertions(+), 31 deletions(-)
create mode 100644 frontend/src/components/WalletConnect.test.tsx
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index c5d53d3..4bfbf01 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "frontend",
- "version": "0.1.0",
+ "version": "0.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "frontend",
- "version": "0.1.0",
+ "version": "0.1.1",
"dependencies": {
"@stellar/freighter-api": "^6.0.1",
"@stellar/stellar-sdk": "^16.0.1",
diff --git a/frontend/package.json b/frontend/package.json
index a9ee43b..a4440c4 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
- "version": "0.1.0",
+ "version": "0.1.1",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/components/WalletConnect.test.tsx b/frontend/src/components/WalletConnect.test.tsx
new file mode 100644
index 0000000..0f0d24a
--- /dev/null
+++ b/frontend/src/components/WalletConnect.test.tsx
@@ -0,0 +1,75 @@
+import { render, screen } from '@testing-library/react'
+import { beforeEach, describe, expect, it, vi } from 'vitest'
+
+import WalletConnect from './WalletConnect'
+import { useWallet } from '../context/WalletContext'
+
+vi.mock('../context/WalletContext', () => ({
+ useWallet: vi.fn(),
+}))
+
+const mockUseWallet = vi.mocked(useWallet)
+
+const baseWallet = {
+ wrongNetwork: false,
+ connecting: false,
+ error: null as string | null,
+ connect: vi.fn(),
+ disconnect: vi.fn(),
+ recheckInstall: vi.fn(),
+ clearError: vi.fn(),
+ connected: false,
+}
+
+describe('