From 5d703b8da4be2061fc9e9f901865a107203898e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20Klev=C5=BEe?= Date: Sun, 20 Sep 2026 14:50:39 +0200 Subject: [PATCH] Warn newer creators that uploads go through review first. Show a level-based notice on /upload without revealing the internal approved-artwork threshold, and mention the usual 48-hour review window. --- .../components/upload/UploadReviewNotice.jsx | 20 ++++++ .../Uploads/UploadReviewNoticeTest.php | 63 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 resources/js/components/upload/UploadReviewNotice.jsx create mode 100644 tests/Feature/Uploads/UploadReviewNoticeTest.php diff --git a/resources/js/components/upload/UploadReviewNotice.jsx b/resources/js/components/upload/UploadReviewNotice.jsx new file mode 100644 index 00000000..127d2a82 --- /dev/null +++ b/resources/js/components/upload/UploadReviewNotice.jsx @@ -0,0 +1,20 @@ +import React from 'react' + +export default function UploadReviewNotice({ visible = false }) { + if (!visible) { + return null + } + + return ( +
+

New creator uploads are reviewed first

+

+ Because your account is still at a newer creator level, this upload will be reviewed before it appears on Skinbase. + If it meets our guidelines, it is usually published within 48 hours. +

+
+ ) +} diff --git a/tests/Feature/Uploads/UploadReviewNoticeTest.php b/tests/Feature/Uploads/UploadReviewNoticeTest.php new file mode 100644 index 00000000..61d48b5e --- /dev/null +++ b/tests/Feature/Uploads/UploadReviewNoticeTest.php @@ -0,0 +1,63 @@ +create([ + 'role' => 'user', + 'level' => 1, + 'created_at' => now()->subYear(), + ]); + + $this->actingAs($user) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', true) + ->missing('approved_uploads') + ->missing('reasons')) + ->assertDontSee('insufficient_approved_uploads', false) + ->assertDontSee('minimum_approved_uploads', false); +}); + +it('does not show the new-creator review warning for trusted uploaders', function (): void { + $user = User::factory()->create([ + 'role' => 'user', + 'level' => 1, + 'created_at' => now()->subYear(), + ]); + + Artwork::factory()->for($user)->count(5)->create([ + 'is_approved' => true, + 'is_public' => true, + 'artwork_status' => 'published', + 'published_at' => now()->subDay(), + 'approval_source' => null, + ]); + + $this->actingAs($user) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', false)); +}); + +it('does not show the new-creator review warning for admins', function (): void { + $admin = User::factory()->create(['role' => 'admin']); + + $this->actingAs($admin) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', false)); +});