feat(game): add screenshot upload moderation back-end infra and demo page#4770
Conversation
Jamiras
left a comment
There was a problem hiding this comment.
I was going to add more feedback, but I think it's all related to this being a demo.
| <dd>{{ $screenshot->capturedBy?->display_name ?? 'Unknown' }}</dd> | ||
| </div> | ||
| <div> | ||
| <dt class="text-neutral-500">Created</dt> |
There was a problem hiding this comment.
I wonder if this would read better as "Uploaded" or "Submitted"?
| 'reviewed_by_user_id', | ||
| 'reviewed_at', | ||
| 'rejection_reason', | ||
| 'rejection_notes', |
There was a problem hiding this comment.
How are you planning to expose these? Once an image is rejected, it disappears of the approval page, and the media list just shows a "Rejected" tag. Maybe as a tooltip on that?
There was a problem hiding this comment.
Most rejection reasons will be exposed to the user via a notification. Rejection notes are internal-only.
Yeah, I very much phoned in this page. This is all purely to test drive the back-end actions. I'll delete this demo page in the next PR. |
Builds on #4739.
This PR adds the foundational back-end actions required for approving or rejecting player-uploaded screenshots, as well as a barebones demo page to test drive these actions. There is no Filament UI yet, that will be the next PR.
How to test this PR
In your .env:
Navigate to http://localhost:64000/demo/game-screenshot-moderation. This page is only accessible to users with
Role::ROOT.Assuming you have pending uploads from testing #4739, you'll see something that looks like this:

From here, you can approve or reject any of the pending screenshots. This page will be deleted in the next PR, it's just here for demo purposes to test the meat of the PR:
ApproveGameScreenshotActionandRejectGameScreenshotAction.On approve, you should observe:
game_screenshots, the screenshot markedapprovedand review metadata is recorded on its row.screenshotscollection, which triggers transforms in Horizon (PerformConversionsJob).replacedand no longer shown on the game page.replaced.On reject, you should observe:
rejectedand review metadata is recorded on its row.This is a sample of what I see in

game_screenshotsafter initiating some actions on the page: