From f0c29e48324a2c5113e63beee9b2b2be160d26bc Mon Sep 17 00:00:00 2001 From: loveuer Date: Sun, 13 Sep 2026 18:58:19 -0700 Subject: [PATCH] fix: keep pickup available after login --- frontend/src/App.jsx | 48 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 0afe93a..1d41ae1 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -27,30 +27,42 @@ function Toast({ message, onClose }) { return
{message}
} -function Login() { - const login = useAppStore((s) => s.login) - const [form, setForm] = useState({ username: '', password: '' }) +function PickupPanel({ className = '' }) { + const [pickup, setPickup] = useState({ hash: '', code: '' }) const [error, setError] = useState('') const [busy, setBusy] = useState(false) - const [pickup, setPickup] = useState({ hash: '', code: '' }) - const [pickupError, setPickupError] = useState('') - const [pickupBusy, setPickupBusy] = useState(false) const retrieve = async () => { const hash = pickup.hash.trim() - setPickupError('') - if (hash.length !== 8) return setPickupError('请输入 8 位文件码') - if (pickup.code && pickup.code.length !== 6) return setPickupError('取件码必须是 6 位数字') + setError('') + if (hash.length !== 8) return setError('请输入 8 位文件码') + if (pickup.code && pickup.code.length !== 6) return setError('取件码必须是 6 位数字') const query = new URLSearchParams() if (pickup.code) query.set('code', pickup.code) - setPickupBusy(true) + setBusy(true) try { await api(`/api/pickup/${encodeURIComponent(hash)}${query.size ? `?${query}` : ''}`) const link = document.createElement('a') link.href = `/uf/${encodeURIComponent(hash)}${query.size ? `?${query}` : ''}` document.body.appendChild(link); link.click(); link.remove() - } catch (error) { setPickupError(error.message) } - finally { setPickupBusy(false) } + } catch (error) { setError(error.message) } + finally { setBusy(false) } } + return
{ event.preventDefault(); retrieve() }}> +
收到分享?直接取件
+
+ { setPickup({ ...pickup, hash: event.target.value }); setError('') }} /> + { setPickup({ ...pickup, code: event.target.value.replace(/\D/g, '') }); setError('') }} /> + +
+ {error &&

{error}

} +
+} + +function Login() { + const login = useAppStore((s) => s.login) + const [form, setForm] = useState({ username: '', password: '' }) + const [error, setError] = useState('') + const [busy, setBusy] = useState(false) const submit = async (event) => { event.preventDefault(); setBusy(true); setError('') try { await login(form.username, form.password) } @@ -63,15 +75,7 @@ function Login() {

Send less. Share better.

把文件交给链接,
把空间留给重要的事。

限时保存、下载次数与取件码,让每一次分享都清晰可控。

-
-
收到分享?直接取件
-
- { setPickup({ ...pickup, hash: e.target.value }); setPickupError('') }} /> - { setPickup({ ...pickup, code: e.target.value.replace(/\D/g, '') }); setPickupError('') }} /> - -
- {pickupError &&

{pickupError}

} -
+
@@ -232,7 +236,7 @@ function Dashboard() { const notify = (message) => setToast(message) return
ufile
{user.username}
{user.canManageFiles && }{user.canManageUsers && }
- {tab === 'files' ?
: tab === 'managed-files' ? : } + {tab === 'files' ?
: tab === 'managed-files' ? : }
{toast && setToast('')} />}
}