Repository navigation
feat(flutter): hire flow UI with escrow summary and error recovery (demo signing) - #92
Conversation
Deploying puls3 with
|
| Latest commit: |
03575d8
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://383a60c8.puls3-4lw.pages.dev |
| Branch Preview URL: | https://fix-flutter-hire-escrow-flow.puls3-4lw.pages.dev |
TOMOKI977
left a comment
There was a problem hiding this comment.
Las piezas visuales están bien (badge de escrow, textos de custodia, links al explorer y tests de la vista). Pido cambios porque el flujo comunica algo que todavía no ocurre:
HireSheet(hire_sheet.dart:44-52) firma el stringmock-usdc-payment:…y luego muestra "Payment confirmed" con un link a StellarExpert hacia una transacción que no existe. Nunca llama acreateHireni aconfirmPayment, así que la UI confirma un pago sin hire en el servidor ni fondos en el escrow.- El retry solo vuelve a firmar. No hay manejo para
HireLedgerUnavailable,transaction_not_foundni para un pago enviado pero no confirmado. - La dirección del escrow está hardcodeada en
stellar_explorer.dart:5. Debería venir de configuración o del servidor.
Propuesta: o se conecta al flujo real del servidor (createHire, firma de create_job y fund, confirmación), o se deja explícitamente como demo de UI. En ese caso habría que cambiar el título y ocultar el estado "confirmed" y el link al explorer mientras el pago sea mock. Hoy el título "hire flow with escrow protection" promete más de lo que hace.
0963df4 to
8c82116
Compare
8c82116 to
d98bd0e
Compare
Signing mock XDR never creates a hire or moves funds, so the sheet no longer shows 'Payment confirmed', a tx hash or an explorer link. The escrow address can be overridden with PULS3_ESCROW_CONTRACT.
d98bd0e to
48da7b0
Compare
TOMOKI977
left a comment
There was a problem hiding this comment.
Approved as a UI demo. The previous concern is resolved: the sheet no longer claims a payment, has no tx hash or explorer link, and tests assert both are absent. What gets signed (mock-usdc-payment:...) can't decode as XDR, so nothing real can be signed.
Non-blocking follow-ups, ideally before the real relay flow lands:
- Copy. The error state still says "Payment failed" / "Payment could not be completed" (
hire_payment_view.dart:145,155), and the summary shows a "Network fee < 0.00001 XLM" for a transaction that doesn't exist. Something like "Signature failed" and dropping the fee row would keep the demo honest. - Spec.
openspec/specs/flutter-hire-escrow-flow/spec.mdhas a banner saying the explorer requirements are superseded, but the normative MUST text is still there (tx hash,onOpenExplorer, "funds are locked in Escrow", a "Retry" button while the UI says "Try again"), and no requirement describes the actual demo state. The archivedverify-report.mdalso marks the explorer link COMPLIANT citing a test that no longer exists. - Config.
PULS3_ESCROW_CONTRACTisn't validated, so an empty or malformed define renders as the escrow address. AC.../ 56-char check with fallback to the default, plus a test, would cover it. - Unused helpers.
stellarExpertTxUrlandstellarExpertContractUrlhave no caller inlib/. Fine to keep for the real flow, but a short note pointing to #96/#97 would help. - Real wallet readiness.
_confirmawaitsconnect()/signTransaction()with no timeout, and the button is disabled while signing, so a hanging adapter would leave the sheet stuck. Rawe.toString()is also shown to the user. Harmless withMockWallet, worth handling when Freighter is wired. HirePhase.confirmednow means "demo signed"; renaming it would avoid confusion when the real confirmed state arrives.
|
@moises-cisneros merged into |
Brings the stacked work into the deploy flow branch: - Mobile-first app shell: bottom navigation, compact type, 44 px buttons and denser inputs, marketplace search/sort/carousel, Activity and wallet-first Profile. - Studio publishing requirements and policies (ADR-0004 manifest rules). - Agent ratings and reviews on the agent detail page. Conflicts with #92 (hire flow, already in main) resolved in favour of #92's escrow summary and demo-signing honesty. On top of it: wallet failures in plain language ("No funds moved"), a scrollable safe-area sheet on phones, and no overflow in its title rows and address badge. Rating stays locked after a demo signature, since #92 creates no hire. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #91. UI-only demo of the hire flow; the real payment goes through the server relay (#96, #97).
Summary
--dart-define=PULS3_ESCROW_CONTRACT=<C...>.Not in this PR
createHire,create_jobandfundsigning, and confirmation (feat(server): escrow relay prepare and submit endpoints for hires #96, feat(server): durable chain submission tracker with server-submitted escrow calls #97). Issue feat(flutter): hire flow with escrow protection, explorer links, and error recovery #91 stays open until then.Verification