From d3c5c47973ad84d9769f80139fabb881db9f67be Mon Sep 17 00:00:00 2001 From: 3dtours Date: Fri, 18 Sep 2026 21:02:30 +0700 Subject: [PATCH] =?UTF-8?q?web:=20the=20reel=20is=20curated,=20not=20crowd?= =?UTF-8?q?-sourced=20=E2=80=94=20no=20CONTRIBUTE=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/frontend/src/Landing.tsx | 45 +-------------------------------- docker/frontend/src/i18n/en.ts | 3 --- docker/frontend/src/i18n/vi.ts | 3 --- 3 files changed, 1 insertion(+), 50 deletions(-) diff --git a/docker/frontend/src/Landing.tsx b/docker/frontend/src/Landing.tsx index c1945dc..5aa7279 100644 --- a/docker/frontend/src/Landing.tsx +++ b/docker/frontend/src/Landing.tsx @@ -175,8 +175,6 @@ export function Landing() { const asked = new URLSearchParams(window.location.search).get('auth'); return asked === 'signup' ? 'signup' : asked ? 'login' : null; }); - const [uploading, setUploading] = useState(false); - const filePick = useRef(null); const toastTimer = useRef>(); // Marketing copy, picked by the workspace's language switch. @@ -206,19 +204,6 @@ export function Landing() { reload(); }, [reload]); - const contribute = useCallback(async (file: File) => { - setUploading(true); - try { - const { photo } = await api.uploadPhoto(file); - setPhotos((prev) => [photo, ...prev]); - showToast(t('photo.thanks')); - } catch (err) { - showToast(t('photo.failed', { msg: err instanceof Error ? err.message : String(err) })); - } finally { - setUploading(false); - } - }, [showToast, t]); - // One vote. The visitor may change their mind: the API upserts under the same // address hash, so a second click replaces the first rather than stacking. A // vote that never lands is silently dropped — it is not worth a toast. @@ -561,36 +546,8 @@ export function Landing() {
{c({ en: 'Community film strip', vi: 'Dải phim cộng đồng' })}

{c({ en: 'Shoot it, grade it, hang it on the reel', vi: 'Chụp, chỉnh màu, rồi treo lên dải phim' })}

-

{c({ en: 'Signed-in members can add a still of their own to the strip below, seen by everyone who lands here.', vi: 'Thành viên đã đăng nhập có thể thêm một khung ảnh của mình vào dải phim bên dưới, ai ghé trang cũng thấy.' })}

+

{c({ en: 'Every still here is picked and placed by the studio — this reel is curated, not crowd-sourced.', vi: 'Mọi khung ảnh ở đây đều do studio chọn và đặt — dải phim này được tuyển chọn, không phải ai cũng tự thêm được.' })}

- {user ? ( - - ) : ( - /* A guest gets the same button; it opens the sign-in dialog. */ - - )} - { - const file = e.target.files?.[0]; - e.target.value = ''; - if (file) void contribute(file); - }} - />
{[...reel, ...reel].map((look, i) => { diff --git a/docker/frontend/src/i18n/en.ts b/docker/frontend/src/i18n/en.ts index 8b9c34f..30d8d36 100644 --- a/docker/frontend/src/i18n/en.ts +++ b/docker/frontend/src/i18n/en.ts @@ -143,10 +143,7 @@ export const en: Dict = { 'del.confirm': 'DELETE PHOTO', 'del.cancel': 'CANCEL', - 'photo.contribute': 'CONTRIBUTE A PHOTO', 'photo.uploading': 'UPLOADING…', - 'photo.thanks': 'Your frame is in the strip.', - 'photo.failed': 'Upload failed: {msg}', 'photos.title': 'My photos', 'photos.hint': 'Each account keeps up to {max} photos. What the studio saves lives here and shows up on the community reel.', diff --git a/docker/frontend/src/i18n/vi.ts b/docker/frontend/src/i18n/vi.ts index abe4d1d..484e969 100644 --- a/docker/frontend/src/i18n/vi.ts +++ b/docker/frontend/src/i18n/vi.ts @@ -151,10 +151,7 @@ export const vi = { 'del.confirm': 'XOÁ ẢNH', 'del.cancel': 'HUỶ', - 'photo.contribute': 'ĐÓNG GÓP ẢNH', 'photo.uploading': 'ĐANG TẢI…', - 'photo.thanks': 'Ảnh của bạn đã vào dải phim.', - 'photo.failed': 'Không tải được ảnh: {msg}', 'photos.title': 'Ảnh của tôi', 'photos.hint': 'Mỗi tài khoản giữ tối đa {max} ảnh. Ảnh lưu từ studio nằm ở đây và xuất hiện trên dải phim cộng đồng.',