Rejecting game requests should include a field where we can say a reason #750

Open
opened 2026-06-12 12:53:26 -05:00 by Veilor · 0 comments
Member

Game request rejections should include a staff-written reason so requesters understand what to fix or where to look next.

The request workflow already gives users a place to submit missing games and review recently handled requests. Rejections need to carry clear context from the admin review screen into the requester-facing handled-request summary, especially for cases like duplicate existing entries, incorrect titles, unsupported platform selections, weak source URLs, or missing details.

Scope

  • Admin pending game request review UI includes a rejection reason textarea.
  • Rejection reasons are stored with rejected game requests.
  • Rejected requests remain separate from approved requests and do not create live games.
  • Requesters can see the reason for recently handled rejected requests on the request-game page.
  • Reason text is optional for staff, but validated and safely rendered when present.
  • Existing admin authorization and pending-only review restrictions still apply.

Acceptance Criteria

  • Game DB admins can reject a pending game request and enter a short freeform reason.
  • Admins can reject without a reason when no explanation is needed.
  • Rejection reasons are trimmed, persisted, and bounded to a reasonable maximum length.
  • Rejected requests store the rejecting admin in the existing handled-by field.
  • Rejecting a request does not create a game record.
  • Non-admin users cannot reject pending requests or set rejection reasons.
  • Non-pending requests cannot be rejected through the pending-review workflow.
  • The requester can see rejected handled requests and their reason on the request-game page.
  • Rejection reasons render as text, not HTML.
  • The UI works in light and dark mode and follows the existing Laravel/Tailwind request/admin layouts.

Test Coverage Required

  • Feature test for rejecting a pending game request with a reason.
  • Feature test for rejecting a pending game request without a reason.
  • Feature test that oversized reasons fail validation and leave the request pending.
  • Feature test that rejected requests with reasons appear in the requester-facing recently handled list.
  • Regression coverage that non-admin users cannot reject requests.
  • Regression coverage that non-pending requests cannot be rejected from the pending queue.
  • Run the focused game request tests, then run vendor/bin/pint --dirty --format agent before closing the issue.

Progress Checklist

  • Add nullable rejection reason persistence for game requests
  • Add rejection reason field to the admin pending-request review form
  • Persist rejection reason when an admin rejects a pending request
  • Preserve pending-only restrictions for review/reject actions
  • Prevent rejected requests from creating live games
  • Show handled rejected requests and their reasons to the requester
  • Add focused feature coverage for rejection reasons and validation
  • Confirm focused GameRequestTest coverage passes
  • Run vendor/bin/pint --dirty --format agent before implementation closeout
  • Move the issue out of Codex review once verification is complete
Game request rejections should include a staff-written reason so requesters understand what to fix or where to look next. The request workflow already gives users a place to submit missing games and review recently handled requests. Rejections need to carry clear context from the admin review screen into the requester-facing handled-request summary, especially for cases like duplicate existing entries, incorrect titles, unsupported platform selections, weak source URLs, or missing details. ## Scope - Admin pending game request review UI includes a rejection reason textarea. - Rejection reasons are stored with rejected game requests. - Rejected requests remain separate from approved requests and do not create live games. - Requesters can see the reason for recently handled rejected requests on the request-game page. - Reason text is optional for staff, but validated and safely rendered when present. - Existing admin authorization and pending-only review restrictions still apply. ## Acceptance Criteria - Game DB admins can reject a pending game request and enter a short freeform reason. - Admins can reject without a reason when no explanation is needed. - Rejection reasons are trimmed, persisted, and bounded to a reasonable maximum length. - Rejected requests store the rejecting admin in the existing handled-by field. - Rejecting a request does not create a game record. - Non-admin users cannot reject pending requests or set rejection reasons. - Non-pending requests cannot be rejected through the pending-review workflow. - The requester can see rejected handled requests and their reason on the request-game page. - Rejection reasons render as text, not HTML. - The UI works in light and dark mode and follows the existing Laravel/Tailwind request/admin layouts. ## Test Coverage Required - Feature test for rejecting a pending game request with a reason. - Feature test for rejecting a pending game request without a reason. - Feature test that oversized reasons fail validation and leave the request pending. - Feature test that rejected requests with reasons appear in the requester-facing recently handled list. - Regression coverage that non-admin users cannot reject requests. - Regression coverage that non-pending requests cannot be rejected from the pending queue. - Run the focused game request tests, then run `vendor/bin/pint --dirty --format agent` before closing the issue. ## Progress Checklist - [x] Add nullable rejection reason persistence for game requests - [x] Add rejection reason field to the admin pending-request review form - [x] Persist rejection reason when an admin rejects a pending request - [x] Preserve pending-only restrictions for review/reject actions - [x] Prevent rejected requests from creating live games - [x] Show handled rejected requests and their reasons to the requester - [x] Add focused feature coverage for rejection reasons and validation - [ ] Confirm focused `GameRequestTest` coverage passes - [ ] Run `vendor/bin/pint --dirty --format agent` before implementation closeout - [ ] Move the issue out of Codex review once verification is complete
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MyVideoGameList/myvideogamelist.com#750
No description provided.