From 69a4cc62a29c4163101c6d3c093507f480d7928c Mon Sep 17 00:00:00 2001 From: Venrable18 Date: Mon, 31 Aug 2026 04:01:03 +0100 Subject: [PATCH 1/2] feat: drive funding progress from on-chain state --- app/package.json | 3 +- app/src/App.tsx | 130 ++++++++++++++++++++++------- app/src/components/FundingList.tsx | 6 +- app/src/style.css | 39 ++++++++- 4 files changed, 143 insertions(+), 35 deletions(-) diff --git a/app/package.json b/app/package.json index f45c232..416a9c2 100644 --- a/app/package.json +++ b/app/package.json @@ -20,7 +20,8 @@ "scripts": { "sync-circuit": "node scripts/sync-circuit.mjs", "dev:circuits": "node scripts/sync-circuit.mjs --watch", - "dev": "npm run sync-circuit && vite", + "dev": "vite", + "dev:full": "npm run sync-circuit && vite", "build": "npm run sync-circuit && vite build", "preview": "vite preview", "test": "vitest run" diff --git a/app/src/App.tsx b/app/src/App.tsx index 8a959af..c946cbf 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -1,4 +1,4 @@ -import { useState, useRef, useEffect } from "react"; +import { useState, useRef, useEffect, useCallback } from "react"; import { Keypair } from "@stellar/stellar-sdk"; import { isConnected, @@ -159,6 +159,7 @@ interface Member { funded: boolean; fundHash?: string; freighterKey?: string; + pending?: boolean; // Optimistic flag while transaction is in flight } interface ClaimResult { @@ -281,7 +282,7 @@ function useRingRadius(): number { return radius; } -function MemberRing({ members, revealed }: { members: { funded: boolean }[]; revealed: boolean }) { +function MemberRing({ members, revealed }: { members: { funded: boolean; pending?: boolean }[]; revealed: boolean }) { const radius = useRingRadius(); const fundedCount = members.filter((m) => m.funded).length; @@ -318,7 +319,7 @@ function MemberRing({ members, revealed }: { members: { funded: boolean }[]; rev