Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0
Why this matters
useRepaymentOperation.ts:54-107 runs only setTimeout delays, fabricates a fake hash tx_${Date.now()} (line 73), invalidates queries and resolves status: success - it imports useWallet/submitPoolTransaction but never calls them (those are used only by the deposit/withdraw variants). Its sole consumer, LoanRepaymentForm.tsx:108, shows a real repayment UI and triggers gamification XP on this fake success. The form is currently unrendered, but the exported hook is a wired trap that would report a successful repayment with no on-chain effect if mounted.
Acceptance criteria
Files to touch
frontend/src/app/hooks/useRepaymentOperation.ts
frontend/src/app/components/borrower/LoanRepaymentForm.tsx
Out of scope
- The separate real repay flow in [locale]/repay/[loanId]/page.tsx
Why this matters
useRepaymentOperation.ts:54-107 runs only setTimeout delays, fabricates a fake hash tx_${Date.now()} (line 73), invalidates queries and resolves status: success - it imports useWallet/submitPoolTransaction but never calls them (those are used only by the deposit/withdraw variants). Its sole consumer, LoanRepaymentForm.tsx:108, shows a real repayment UI and triggers gamification XP on this fake success. The form is currently unrendered, but the exported hook is a wired trap that would report a successful repayment with no on-chain effect if mounted.
Acceptance criteria
Files to touch
frontend/src/app/hooks/useRepaymentOperation.tsfrontend/src/app/components/borrower/LoanRepaymentForm.tsxOut of scope