From 2537b9fe755230f2611be69952fe82b35eb0df74 Mon Sep 17 00:00:00 2001 From: goddonebianu Date: Fri, 6 Feb 2026 03:22:20 +0800 Subject: [PATCH] ... --- messages/en-US.json | 11 ++++- messages/zh-CN.json | 11 ++++- src/app/users/[username]/page.tsx | 60 ++++++++++++++++++++++++- src/modules/folder/folder-repository.ts | 4 ++ 4 files changed, 83 insertions(+), 3 deletions(-) diff --git a/messages/en-US.json b/messages/en-US.json index 14c0474..83ae7eb 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -242,6 +242,15 @@ "username": "Username", "displayName": "Display Name", "notSet": "Not Set", - "memberSince": "Member Since" + "memberSince": "Member Since", + "folders": { + "title": "Folders", + "noFolders": "No folders yet", + "folderName": "Folder Name", + "totalPairs": "Total Pairs", + "createdAt": "Created At", + "actions": "Actions", + "view": "View" + } } } diff --git a/messages/zh-CN.json b/messages/zh-CN.json index 7aac43a..68172f2 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -242,6 +242,15 @@ "username": "用户名", "displayName": "显示名称", "notSet": "未设置", - "memberSince": "注册时间" + "memberSince": "注册时间", + "folders": { + "title": "文件夹", + "noFolders": "还没有文件夹", + "folderName": "文件夹名称", + "totalPairs": "文本对数量", + "createdAt": "创建时间", + "actions": "操作", + "view": "查看" + } } } diff --git a/src/app/users/[username]/page.tsx b/src/app/users/[username]/page.tsx index f6628b5..943f929 100644 --- a/src/app/users/[username]/page.tsx +++ b/src/app/users/[username]/page.tsx @@ -1,6 +1,8 @@ import Image from "next/image"; +import Link from "next/link"; import { Container } from "@/components/ui/Container"; import { actionGetUserProfileByUsername } from "@/modules/auth/auth-action"; +import { repoGetFoldersWithTotalPairsByUserId } from "@/modules/folder/folder-repository"; import { notFound } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { auth } from "@/auth"; @@ -27,6 +29,9 @@ export default async function UserPage({ params }: UserPageProps) { const user = result.data; + // Get user's folders + const folders = await repoGetFoldersWithTotalPairsByUserId(user.id); + // Check if viewing own profile const isOwnProfile = session?.user?.username === username || session?.user?.email === username; @@ -106,7 +111,7 @@ export default async function UserPage({ params }: UserPageProps) { {/* Account Info */} -
+

{t("accountInfo")}

@@ -133,6 +138,59 @@ export default async function UserPage({ params }: UserPageProps) {
+ + {/* Folders Section */} +
+

{t("folders.title")}

+ {folders.length === 0 ? ( +

{t("folders.noFolders")}

+ ) : ( +
+ + + + + + + + + + + {folders.map((folder) => ( + + + + + + + ))} + +
+ {t("folders.folderName")} + + {t("folders.totalPairs")} + + {t("folders.createdAt")} + + {t("folders.actions")} +
+
{folder.name}
+
ID: {folder.id}
+
+
{folder.total}
+
+ {new Date(folder.createdAt).toLocaleDateString()} + + + {t("folders.view")} + +
+
+ )} +
); diff --git a/src/modules/folder/folder-repository.ts b/src/modules/folder/folder-repository.ts index 66f8506..97b3ac9 100644 --- a/src/modules/folder/folder-repository.ts +++ b/src/modules/folder/folder-repository.ts @@ -87,12 +87,16 @@ export async function repoGetFoldersWithTotalPairsByUserId(userId: string) { select: { pairs: true }, }, }, + orderBy: { + createdAt: 'desc', + }, }); return folders.map(folder => ({ id: folder.id, name: folder.name, userId: folder.userId, total: folder._count?.pairs ?? 0, + createdAt: folder.createdAt, })); }