Skip to content

Build dispute resolution UI with evidence upload, arbitration timeline, and voting interface #386

Description

@Kingsman-99

Overview

When a dispute is open on an invoice, all parties need a clear UI to follow the arbitration process, submit evidence, and (for arbitrators) cast votes. Build a dedicated dispute flow within the invoice detail page.

Requirements

  • Dispute panel on /invoice/[id] — visible only when invoice status is Disputed
  • Shows: dispute reason, who opened it, time opened, arbitrator list, current vote tally
  • "Submit Evidence" button: uploads a file to IPFS via the SDK, adds the CID to the dispute notes
  • Arbitrator vote buttons: "Approve Release" / "Reject (Refund)" — calls vote_dispute via SDK
  • Real-time vote tally update via useInvoiceStream
  • Timeline component showing dispute lifecycle events in chronological order
  • Write unit tests for the dispute panel, vote buttons, and timeline

Acceptance Criteria

  • Dispute panel renders correctly for Disputed invoices
  • Evidence upload to IPFS works end-to-end
  • Arbitrator vote calls work for connected wallets
  • Real-time tally updates via event stream
  • Timeline shows all events in chronological order
  • npm run lint passes with zero errors
  • TypeScript compiles with zero errors
  • npm run build succeeds

Definition of Done

All CI checks must pass before the PR is reviewed.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions