Skip to content

Implement full dispute UI with arbiter workflow#159

Open
GautamBytes wants to merge 4 commits intoshopstr-eng:mainfrom
GautamBytes:add-dispute-handler-ui
Open

Implement full dispute UI with arbiter workflow#159
GautamBytes wants to merge 4 commits intoshopstr-eng:mainfrom
GautamBytes:add-dispute-handler-ui

Conversation

@GautamBytes
Copy link
Contributor

This PR introduces a complete system for dispute resolution.

It implements a 2-of-3 multisig escrow using NUT-11 P2PK for secure Cashu payments. A new UI on the "Disputes" tab allows buyers, sellers, and an arbiter to communicate privately using NIP-59 gift-wrapped messages.

Buyers can initiate disputes from product pages after a purchase. The arbiter can then mediate and rule on the dispute to release the escrowed funds.

@vercel
Copy link

vercel bot commented Jul 10, 2025

@GautamBytes is attempting to deploy a commit to the shopstr-eng Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions
Copy link

🚨 Linting & Formatting Report

ESLint found 36 issue(s). Run npx eslint --fix locally.

  • [components/display-products.tsx:90:6] React Hook useEffect has missing dependencies: 'followsContext.followList' and 'followsContext.isLoading'. Either include them or remove the dependency array. (react-hooks/exhaustive-deps)
  • [components/display-products.tsx:102:6] React Hook useEffect has a missing dependency: 'setCategories'. Either include it or remove the dependency array. If 'setCategories' changes too often, find the parent component that defines it and wrap that definition in useCallback. (react-hooks/exhaustive-deps)
  • [components/display-products.tsx:129:6] React Hook useEffect has missing dependencies: 'onFilteredProductsChange', 'productSatisfiesAllFilters', and 'userPubkey'. Either include them or remove the dependency array. If 'onFilteredProductsChange' changes too often, find the parent component that defines it and wrap that definition in useCallback. (react-hooks/exhaustive-deps)

…and 33 more.

Prettier found formatting issues. Run npx prettier --write . locally.

🔍 Please fix these before merging.

@github-actions
Copy link

🚨 Linting & Formatting Report

ESLint found 36 issue(s). Run npx eslint --fix locally.

  • [components/display-products.tsx:90:6] React Hook useEffect has missing dependencies: 'followsContext.followList' and 'followsContext.isLoading'. Either include them or remove the dependency array. (react-hooks/exhaustive-deps)
  • [components/display-products.tsx:102:6] React Hook useEffect has a missing dependency: 'setCategories'. Either include it or remove the dependency array. If 'setCategories' changes too often, find the parent component that defines it and wrap that definition in useCallback. (react-hooks/exhaustive-deps)
  • [components/display-products.tsx:129:6] React Hook useEffect has missing dependencies: 'onFilteredProductsChange', 'productSatisfiesAllFilters', and 'userPubkey'. Either include them or remove the dependency array. If 'onFilteredProductsChange' changes too often, find the parent component that defines it and wrap that definition in useCallback. (react-hooks/exhaustive-deps)

…and 33 more.

Prettier found formatting issues. Run npx prettier --write . locally.

🔍 Please fix these before merging.

@GautamBytes GautamBytes changed the title Iimplement full dispute UI with arbiter workflow Implement full dispute UI with arbiter workflow Jul 10, 2025
while (retryCount < maxRetries) {
while (true) {
try {
// First check if the quote has been paid
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The quote state checks need to be here in order to prevent the proof minting race condition (this cause payments to go through, but the order messages and confirmation never go through)

while (retryCount < maxRetries) {
while (true) {
try {
// First check if the quote has been paid
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same revisions needed here as previous comment of quote states.

@github-actions
Copy link

🚨 Linting & Formatting Report

ESLint found 48 issue(s). Run npx eslint --fix locally.

  • [components/cart-invoice-card.tsx:133:64] Unexpected any. Specify a different type. (@typescript-eslint/no-explicit-any)
  • [components/cart-invoice-card.tsx:557:24] Unexpected any. Specify a different type. (@typescript-eslint/no-explicit-any)
  • [components/cart-invoice-card.tsx:630:66] Unexpected any. Specify a different type. (@typescript-eslint/no-explicit-any)

…and 45 more.

Prettier found formatting issues. Run npx prettier --write . locally.

🔍 Please fix these before merging.

@GautamBytes GautamBytes requested a review from calvadev July 28, 2025 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments