From f02ff9342f03871e61620519c2f2a7e102f71997 Mon Sep 17 00:00:00 2001 From: yoyuzh Date: Thu, 2 Apr 2026 17:31:28 +0800 Subject: [PATCH] Add offline transfer history and mobile app support --- .../page-2026-04-02T08-52-19-684Z.yml | 25 + .../page-2026-04-02T08-53-25-621Z.png | Bin 0 -> 82195 bytes docs/architecture.md | 8 + front/src/MobileApp.tsx | 83 +++ front/src/lib/app-shell.test.ts | 10 + front/src/lib/app-shell.ts | 5 + front/src/main.tsx | 21 +- .../mobile-components/MobileLayout.test.ts | 11 + front/src/mobile-components/MobileLayout.tsx | 424 ++++++++++++ front/src/mobile-pages/GamePlayerMobile.tsx | 51 ++ front/src/mobile-pages/MobileFileShare.tsx | 165 +++++ front/src/mobile-pages/MobileFiles.tsx | 609 ++++++++++++++++++ front/src/mobile-pages/MobileGames.tsx | 113 ++++ front/src/mobile-pages/MobileLogin.tsx | 250 +++++++ front/src/mobile-pages/MobileOverview.tsx | 260 ++++++++ front/src/mobile-pages/MobileTransfer.tsx | 564 ++++++++++++++++ memory.md | 3 + 17 files changed, 2600 insertions(+), 2 deletions(-) create mode 100644 .playwright-cli/page-2026-04-02T08-52-19-684Z.yml create mode 100644 .playwright-cli/page-2026-04-02T08-53-25-621Z.png create mode 100644 front/src/MobileApp.tsx create mode 100644 front/src/lib/app-shell.test.ts create mode 100644 front/src/lib/app-shell.ts create mode 100644 front/src/mobile-components/MobileLayout.test.ts create mode 100644 front/src/mobile-components/MobileLayout.tsx create mode 100644 front/src/mobile-pages/GamePlayerMobile.tsx create mode 100644 front/src/mobile-pages/MobileFileShare.tsx create mode 100644 front/src/mobile-pages/MobileFiles.tsx create mode 100644 front/src/mobile-pages/MobileGames.tsx create mode 100644 front/src/mobile-pages/MobileLogin.tsx create mode 100644 front/src/mobile-pages/MobileOverview.tsx create mode 100644 front/src/mobile-pages/MobileTransfer.tsx diff --git a/.playwright-cli/page-2026-04-02T08-52-19-684Z.yml b/.playwright-cli/page-2026-04-02T08-52-19-684Z.yml new file mode 100644 index 0000000..f4367ed --- /dev/null +++ b/.playwright-cli/page-2026-04-02T08-52-19-684Z.yml @@ -0,0 +1,25 @@ +- generic [ref=e3]: + - generic [ref=e6]: + - generic [ref=e8]: "Y" + - heading "优立云盘" [level=1] [ref=e9] + - paragraph [ref=e10]: 集中管理网盘文件,跨设备快传,随时体验轻游戏。 + - generic [ref=e13]: + - generic [ref=e14]: + - heading "登录" [level=3] [ref=e15]: + - img [ref=e16] + - text: 登录 + - paragraph [ref=e19]: 登入您的账号以继续 + - generic [ref=e21]: + - generic [ref=e22]: + - generic [ref=e23]: + - img [ref=e24] + - textbox "账号 / 用户名 / 学号" [ref=e27] + - generic [ref=e28]: + - img [ref=e29] + - textbox "••••••••" [ref=e32] + - generic [ref=e33]: + - button "进入系统" [ref=e34] + - button "直接进入快传" [ref=e35]: + - img [ref=e36] + - text: 直接进入快传 + - button "还没有账号?立即注册" [ref=e40] \ No newline at end of file diff --git a/.playwright-cli/page-2026-04-02T08-53-25-621Z.png b/.playwright-cli/page-2026-04-02T08-53-25-621Z.png new file mode 100644 index 0000000000000000000000000000000000000000..c274c9764856aefa3c7333d73d0095ed453ec510 GIT binary patch literal 82195 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 e21!IgR09C|`9o}a{NzUf0000; +} + +function MobileAppRoutes() { + const { ready, session } = useAuth(); + const location = useLocation(); + const isPublicTransferRoute = location.pathname === PUBLIC_TRANSFER_ROUTE || location.pathname === LEGACY_PUBLIC_TRANSFER_ROUTE; + const isPublicFileShareRoute = location.pathname.startsWith(`${FILE_SHARE_ROUTE_PREFIX}/`); + + if (!ready && !isPublicTransferRoute && !isPublicFileShareRoute) { + return ( +
+ + 正在检查登录状态... +
+ ); + } + + const isAuthenticated = Boolean(session?.token); + + return ( + + : } + /> + } /> + } /> + : } + /> + : } + > + } /> + } /> + } /> + } /> + + + } /> + + {/* Admin dashboard is not mobile-optimized in this phase yet, redirect to overview or login */} + : } + /> + + } + /> + + ); +} + +export default function MobileApp() { + const Router = getTransferRouterMode() === 'hash' ? HashRouter : BrowserRouter; + + return ( + + + + ); +} diff --git a/front/src/lib/app-shell.test.ts b/front/src/lib/app-shell.test.ts new file mode 100644 index 0000000..c517c9c --- /dev/null +++ b/front/src/lib/app-shell.test.ts @@ -0,0 +1,10 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { MOBILE_APP_MAX_WIDTH, shouldUseMobileApp } from './app-shell'; + +test('shouldUseMobileApp enables the mobile shell below the width breakpoint', () => { + assert.equal(shouldUseMobileApp(MOBILE_APP_MAX_WIDTH - 1), true); + assert.equal(shouldUseMobileApp(MOBILE_APP_MAX_WIDTH), false); + assert.equal(shouldUseMobileApp(1280), false); +}); diff --git a/front/src/lib/app-shell.ts b/front/src/lib/app-shell.ts new file mode 100644 index 0000000..6f3cabb --- /dev/null +++ b/front/src/lib/app-shell.ts @@ -0,0 +1,5 @@ +export const MOBILE_APP_MAX_WIDTH = 768; + +export function shouldUseMobileApp(width: number) { + return width < MOBILE_APP_MAX_WIDTH; +} diff --git a/front/src/main.tsx b/front/src/main.tsx index 4b899c2..f005b93 100644 --- a/front/src/main.tsx +++ b/front/src/main.tsx @@ -1,13 +1,30 @@ -import {StrictMode} from 'react'; +import {StrictMode, useEffect, useState} from 'react'; import {createRoot} from 'react-dom/client'; import App from './App.tsx'; +import MobileApp from './MobileApp.tsx'; import {AuthProvider} from './auth/AuthProvider.tsx'; +import {shouldUseMobileApp} from './lib/app-shell.ts'; import './index.css'; +function ResponsiveApp() { + const [isMobileApp, setIsMobileApp] = useState(() => shouldUseMobileApp(window.innerWidth)); + + useEffect(() => { + function syncAppShell() { + setIsMobileApp(shouldUseMobileApp(window.innerWidth)); + } + + window.addEventListener('resize', syncAppShell); + return () => window.removeEventListener('resize', syncAppShell); + }, []); + + return isMobileApp ? : ; +} + createRoot(document.getElementById('root')!).render( - + , ); diff --git a/front/src/mobile-components/MobileLayout.test.ts b/front/src/mobile-components/MobileLayout.test.ts new file mode 100644 index 0000000..8704b8b --- /dev/null +++ b/front/src/mobile-components/MobileLayout.test.ts @@ -0,0 +1,11 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; + +import { getVisibleNavItems } from './MobileLayout'; + +test('mobile navigation hides the games entry', () => { + const visiblePaths = getVisibleNavItems(false).map((item) => item.path as string); + + assert.equal(visiblePaths.includes('/games'), false); + assert.deepEqual(visiblePaths, ['/overview', '/files', '/transfer']); +}); diff --git a/front/src/mobile-components/MobileLayout.tsx b/front/src/mobile-components/MobileLayout.tsx new file mode 100644 index 0000000..fc97ed2 --- /dev/null +++ b/front/src/mobile-components/MobileLayout.tsx @@ -0,0 +1,424 @@ +import React, { ReactNode, useEffect, useMemo, useRef, useState } from 'react'; +import { NavLink, Outlet, useNavigate } from 'react-router-dom'; +import { + FolderOpen, + Key, + LayoutDashboard, + LogOut, + Mail, + Send, + Settings, + Shield, + Smartphone, + X, + Menu, +} from 'lucide-react'; +import { AnimatePresence, motion } from 'motion/react'; + +import { useAuth } from '@/src/auth/AuthProvider'; +import { apiBinaryUploadRequest, apiDownload, apiRequest, apiUploadRequest } from '@/src/lib/api'; +import { createSession, readStoredSession, saveStoredSession } from '@/src/lib/session'; +import type { AuthResponse, InitiateUploadResponse, UserProfile } from '@/src/lib/types'; +import { cn } from '@/src/lib/utils'; +import { Button } from '@/src/components/ui/button'; +import { Input } from '@/src/components/ui/input'; + +import { buildAccountDraft, getRoleLabel, shouldLoadAvatarWithAuth } from '@/src/components/layout/account-utils'; +import { UploadProgressPanel } from '@/src/components/layout/UploadProgressPanel'; + +const NAV_ITEMS = [ + { name: '总览', path: '/overview', icon: LayoutDashboard }, + { name: '网盘', path: '/files', icon: FolderOpen }, + { name: '快传', path: '/transfer', icon: Send }, +] as const; + +type ActiveModal = 'security' | 'settings' | null; + +export function getVisibleNavItems(isAdmin: boolean) { + // 底部导航栏容量有限,后台页面可通过顶部头像菜单或者折叠菜单进入 + return NAV_ITEMS; +} + +interface LayoutProps { + children?: ReactNode; +} + +export function MobileLayout({ children }: LayoutProps = {}) { + const navigate = useNavigate(); + const { isAdmin, logout, refreshProfile, user } = useAuth(); + const navItems = getVisibleNavItems(isAdmin); + const fileInputRef = useRef(null); + + const [isDropdownOpen, setIsDropdownOpen] = useState(false); + const [activeModal, setActiveModal] = useState(null); + const [avatarPreviewUrl, setAvatarPreviewUrl] = useState(null); + const [selectedAvatarFile, setSelectedAvatarFile] = useState(null); + const [avatarSourceUrl, setAvatarSourceUrl] = useState(user?.avatarUrl ?? null); + const [profileDraft, setProfileDraft] = useState(() => + buildAccountDraft( + user ?? { + id: 0, + username: '', + email: '', + createdAt: '', + }, + ), + ); + + // States related to modales and profile editing (Same as original) + const [currentPassword, setCurrentPassword] = useState(''); + const [newPassword, setNewPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); + const [profileMessage, setProfileMessage] = useState(''); + const [passwordMessage, setPasswordMessage] = useState(''); + const [profileError, setProfileError] = useState(''); + const [passwordError, setPasswordError] = useState(''); + const [profileSubmitting, setProfileSubmitting] = useState(false); + const [passwordSubmitting, setPasswordSubmitting] = useState(false); + + useEffect(() => { + if (!user) return; + setProfileDraft(buildAccountDraft(user)); + }, [user]); + + useEffect(() => { + if (!avatarPreviewUrl) return undefined; + return () => URL.revokeObjectURL(avatarPreviewUrl); + }, [avatarPreviewUrl]); + + useEffect(() => { + let active = true; + let objectUrl: string | null = null; + async function syncAvatar() { + if (!user?.avatarUrl) { + if (active) setAvatarSourceUrl(null); + return; + } + if (!shouldLoadAvatarWithAuth(user.avatarUrl)) { + if (active) setAvatarSourceUrl(user.avatarUrl); + return; + } + try { + const response = await apiDownload(user.avatarUrl); + const blob = await response.blob(); + objectUrl = URL.createObjectURL(blob); + if (active) setAvatarSourceUrl(objectUrl); + } catch { + if (active) setAvatarSourceUrl(null); + } + } + void syncAvatar(); + return () => { + active = false; + if (objectUrl) URL.revokeObjectURL(objectUrl); + }; + }, [user?.avatarUrl]); + + const displayName = useMemo(() => user?.displayName || user?.username || '账户', [user]); + const email = user?.email || '暂无邮箱'; + const phoneNumber = user?.phoneNumber || '未设置手机号'; + const roleLabel = getRoleLabel(user?.role); + const avatarFallback = (displayName || 'Y').charAt(0).toUpperCase(); + const displayedAvatarUrl = avatarPreviewUrl || avatarSourceUrl; + + const handleLogout = () => { + logout(); + navigate('/login'); + }; + + const handleAvatarClick = () => fileInputRef.current?.click(); + + const handleFileChange = (event: React.ChangeEvent) => { + const file = event.target.files?.[0]; + if (!file) return; + setSelectedAvatarFile(file); + setAvatarPreviewUrl((current) => { + if (current) URL.revokeObjectURL(current); + return URL.createObjectURL(file); + }); + }; + + const handleProfileDraftChange = (field: keyof typeof profileDraft, value: string) => { + setProfileDraft((current) => ({ ...current, [field]: value })); + }; + + const closeModal = () => { + setActiveModal(null); + setProfileMessage(''); setProfileError(''); + setPasswordMessage(''); setPasswordError(''); + }; + + const persistSessionUser = (nextProfile: UserProfile) => { + const currentSession = readStoredSession(); + if (!currentSession) return; + saveStoredSession({ ...currentSession, user: nextProfile }); + }; + + const uploadAvatar = async (file: File) => { + const initiated = await apiRequest('/user/avatar/upload/initiate', { + method: 'POST', + body: { filename: file.name, contentType: file.type || 'image/png', size: file.size }, + }); + if (initiated.direct) { + try { + await apiBinaryUploadRequest(initiated.uploadUrl, { method: initiated.method, headers: initiated.headers, body: file }); + } catch { + const formData = new FormData(); + formData.append('file', file); + await apiUploadRequest(`/user/avatar/upload?storageName=${encodeURIComponent(initiated.storageName)}`, { body: formData }); + } + } else { + const formData = new FormData(); + formData.append('file', file); + await apiUploadRequest(initiated.uploadUrl, { body: formData, method: initiated.method === 'PUT' ? 'PUT' : 'POST', headers: initiated.headers }); + } + const nextProfile = await apiRequest('/user/avatar/upload/complete', { + method: 'POST', + body: { filename: file.name, contentType: file.type || 'image/png', size: file.size, storageName: initiated.storageName }, + }); + persistSessionUser(nextProfile); + return nextProfile; + }; + + const handleSaveProfile = async () => { + setProfileSubmitting(true); setProfileMessage(''); setProfileError(''); + try { + if (selectedAvatarFile) await uploadAvatar(selectedAvatarFile); + const nextProfile = await apiRequest('/user/profile', { + method: 'PUT', + body: { + displayName: profileDraft.displayName.trim(), email: profileDraft.email.trim(), + phoneNumber: profileDraft.phoneNumber.trim(), bio: profileDraft.bio, + preferredLanguage: profileDraft.preferredLanguage, + }, + }); + persistSessionUser(nextProfile); + await refreshProfile(); + setSelectedAvatarFile(null); + setAvatarPreviewUrl((current) => { if (current) URL.revokeObjectURL(current); return null; }); + setProfileMessage('资料已保存'); + } catch (error) { + setProfileError(error instanceof Error ? error.message : '保存失败'); + } finally { + setProfileSubmitting(false); + } + }; + + const handleChangePassword = async () => { + setPasswordMessage(''); setPasswordError(''); + if (newPassword !== confirmPassword) { setPasswordError('密码不一致'); return; } + setPasswordSubmitting(true); + try { + const auth = await apiRequest('/user/password', { + method: 'POST', body: { currentPassword, newPassword }, + }); + const currentSession = readStoredSession(); + if (currentSession) { + saveStoredSession({ ...currentSession, ...createSession(auth), user: auth.user }); + } + setCurrentPassword(''); setNewPassword(''); setConfirmPassword(''); + setPasswordMessage('密码已更新'); + } catch (error) { + setPasswordError(error instanceof Error ? error.message : '修改失败'); + } finally { + setPasswordSubmitting(false); + } + }; + + return ( +
+ {/* Background Animated Blobs */} +
+
+
+
+ + {/* Top App Bar */} +
+
+
+
+ Y +
+ 优立云盘 +
+ +
+ +
+
+
+ + + {isDropdownOpen && ( + <> + setIsDropdownOpen(false)} + /> + +
+ +
+
+ {displayedAvatarUrl ? :
{avatarFallback}
} +
+
+
{displayName}
+
{email}
+
{roleLabel}
+
+
+ +
+ + + {isAdmin && ( + + )} + +
+ + + )} + + + {/* Main Content Area */} +
+ {children ?? } +
+ + {/* Upload Panel (Floating above bottom bar) */} +
+
+ +
+
+ + {/* Bottom Navigation Bar */} + + + {/* Support Modals (Settings & Security) */} + + {activeModal === 'security' && ( +
+
+
安全中心
+ +
+
+ {/* Similar to original but vertically stacked without hover constraints */} +
+
+ 修改密码 +
+ setCurrentPassword(e.target.value)} className="bg-black/20" /> + setNewPassword(e.target.value)} className="bg-black/20" /> + setConfirmPassword(e.target.value)} className="bg-black/20" /> + + {passwordError &&

{passwordError}

} + {passwordMessage &&

{passwordMessage}

} +
+ +
+
手机绑定
+
{phoneNumber}
+
+
+
+ )} + + {activeModal === 'settings' && ( +
+
+
账户设置
+ +
+
+
+
+ {displayedAvatarUrl ? :
{avatarFallback}
} +
更换
+ +
+
+
{displayName}
+
{roleLabel}
+
+
+ +
+
+ + handleProfileDraftChange('displayName', e.target.value)} className="bg-black/20 mt-1" /> +
+
+ + handleProfileDraftChange('email', e.target.value)} className="bg-black/20 mt-1" /> +
+
+ + handleProfileDraftChange('phoneNumber', e.target.value)} className="bg-black/20 mt-1" /> +
+
+ +