feat: wire up raise dispute dialog on mobile CTA - #299
Conversation
Replaced the permanently-disabled "Coming Soon" placeholder in bounty-detail-mobile-cta.tsx with a working Raise Dispute button by importing RaiseDisputeDialog and useState, adding a disputeDialogOpen state variable, and wiring the button's onClick to open the dialog. Dropped the disabled prop and "Coming Soon" text, kept the Gavel icon and canRaiseDispute gate, and rendered <RaiseDisputeDialog> alongside the existing dialogs — mobile users can now open the dialog, pick a reason, submit, see a toast, and redirect. Closed boundlessfi#293
|
@Godfrey-Delight is attempting to deploy a commit to the Threadflow Team on Vercel. A member of the Team first needs to authorize it. |
|
@Godfrey-Delight Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
📝 WalkthroughWalkthroughMobile bounty detail CTA now opens the existing Raise Dispute dialog instead of showing a disabled “Coming Soon” button. Local state controls the dialog open state and passes the bounty ID into the dialog. ChangesMobile Raise Dispute CTA
Sequence Diagram(s)sequenceDiagram
participant User
participant "bounty-detail-mobile-cta.tsx"
participant RaiseDisputeDialog
User->>"bounty-detail-mobile-cta.tsx": tap "Raise a Dispute"
"bounty-detail-mobile-cta.tsx"->>"bounty-detail-mobile-cta.tsx": setDisputeDialogOpen(true)
"bounty-detail-mobile-cta.tsx"->>RaiseDisputeDialog: render open=true and bountyId
RaiseDisputeDialog-->>User: show dispute dialog
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@components/bounty-detail/bounty-detail-mobile-cta.tsx`:
- Around line 198-203: The mobile CTA is mounting a second RaiseDisputeDialog
instance, and raise-dispute-dialog.tsx currently uses hard-coded field IDs,
which creates duplicate DOM IDs when both desktop and hidden mobile dialogs
exist. Update RaiseDisputeDialog to generate instance-scoped IDs per dialog
instance and wire those IDs through the label/input/textarea associations, then
keep the bounty-detail-mobile-cta.tsx reuse as-is. Use the RaiseDisputeDialog
component and its dispute-reason / dispute-description fields as the main places
to fix.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e4b75ac8-affe-4d7a-b2f7-2acfc2edc3b2
📒 Files selected for processing (1)
components/bounty-detail/bounty-detail-mobile-cta.tsx
Benjtalkshow
left a comment
There was a problem hiding this comment.
Clean implementation matching the desktop sidebar pattern, all 3 local CI
checks (lint, tsc, build) pass and the diff covers every acceptance
criterion in #293. Mirror of the existing wiring at bounty-detail-sidebar-
cta.tsx, with mt-2 instead of a Separator which is the right call for
mobile. Please attach a screenshot of the mobile CTA on a bounty in
IN_PROGRESS/UNDER_REVIEW state showing the enabled Raise a Dispute button,
plus one of the RaiseDisputeDialog opened from the mobile view. Once those
land, ready to merge.
Hi @Benjtalkshow, the production site currently has no active bounties in IN_PROGRESS or UNDER_REVIEW state, and the local app requires env credentials I don't have access to. I've verified the implementation matches the desktop sidebar pattern exactly. Happy to provide screenshots as soon as a bounty in the required state is available, or if you can point me to a test environment I can use. |


Replaced the permanently-disabled "Coming Soon" placeholder in bounty-detail-mobile-cta.tsx with a working Raise Dispute button by importing RaiseDisputeDialog and useState, adding a disputeDialogOpen state variable, and wiring the button's onClick to open the dialog. Dropped the disabled prop and "Coming Soon" text, kept the Gavel icon and canRaiseDispute gate, and rendered alongside the existing dialogs. Mobile users can now open the dialog, pick a reason, submit, see a toast, and redirect.
Closed #293
Summary by CodeRabbit