From c42e15cff085eb75000bfecfe577cc1577dcceba Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 2 Jan 2025 22:40:56 +0800 Subject: [PATCH] :sparkles: Other user profile page --- bun.lockb | Bin 188171 -> 199815 bytes next.config.ts | 9 ++- package.json | 1 + src/pages/users/[name].tsx | 114 +++++++++++++++++++++++++++++++++++++ src/pages/users/me.tsx | 34 ++++++++++- src/services/checkIn.ts | 10 ++++ src/services/user.ts | 8 +-- 7 files changed, 166 insertions(+), 10 deletions(-) create mode 100644 src/pages/users/[name].tsx create mode 100644 src/services/checkIn.ts diff --git a/bun.lockb b/bun.lockb index aa841f42169ee3eb5eb10119f229f9c498eb13ab..efe9f35bcea2506f7a95467e9c9d2338450bba44 100755 GIT binary patch delta 42572 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
  • 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�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 diff --git a/next.config.ts b/next.config.ts index 3915163..b441baf 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,8 +1,11 @@ -import type { NextConfig } from "next"; +import type { NextConfig } from 'next' const nextConfig: NextConfig = { /* config options here */ reactStrictMode: true, -}; + images: { + domains: ['raw.sn.solsynth.dev', 'api.sn.solsynth.dev'], + }, +} -export default nextConfig; +export default nextConfig diff --git a/package.json b/package.json index e3a10be..8777ac7 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@emotion/styled": "^11.14.0", "@mui/icons-material": "^6.3.0", "@mui/material": "^6.3.0", + "@mui/x-charts": "^7.23.2", "axios": "^1.7.9", "axios-case-converter": "^1.1.1", "cookies-next": "^5.0.2", diff --git a/src/pages/users/[name].tsx b/src/pages/users/[name].tsx new file mode 100644 index 0000000..604b531 --- /dev/null +++ b/src/pages/users/[name].tsx @@ -0,0 +1,114 @@ +import { SnCheckInRecord } from '@/services/checkIn' +import { getAttachmentUrl, sni } from '@/services/network' +import { SnAccount } from '@/services/user' +import { Avatar, Box, Card, CardContent, Container, Grid2 as Grid, Typography } from '@mui/material' +import { LineChart } from '@mui/x-charts' +import type { InferGetServerSidePropsType, GetServerSideProps } from 'next' +import Image from 'next/image' + +export const getServerSideProps = (async (context) => { + const name = context.params!.name as string + try { + const { data: user } = await sni.get('/cgi/id/users/' + name) + const { data: checkIn } = await sni.get<{ data: SnCheckInRecord[] }>('/cgi/id/users/' + name + '/check-in', { + params: { take: 14 }, + }) + return { props: { user, checkIn: checkIn.data } } + } catch (err) { + return { + notFound: true, + } + } +}) satisfies GetServerSideProps<{ user: SnAccount; checkIn: SnCheckInRecord[] }> + +export default function UserProfile({ user, checkIn }: InferGetServerSidePropsType) { + return ( + <> + {user.banner && ( + + account banner + + )} + + + + + {user && } + + {user.nick} + + @{user.name} + + + + + + + + + + + Fortune History + + { + const og = new Date(c.createdAt) + og.setHours(0, 0, 0, 0) + return og + }), + valueFormatter(value, _) { + return new Date(value).toLocaleDateString('en-US', { + month: '2-digit', + day: '2-digit', + }) + }, + }, + ]} + series={[ + { + data: checkIn.map((c) => c.resultTier), + valueFormatter(value, _) { + const resultTierList = ['大凶', '凶', '中平', '吉', '大吉'] + return resultTierList[value ?? 0] + }, + }, + ]} + height={300} + margin={{ top: 16, bottom: 24 }} + /> + + + + + + + + Information + + + + Born on {new Date(user.profile!.birthday!).toLocaleDateString()} + + Joined at {new Date(user.createdAt).toLocaleDateString()} + + + + + + + ) +} diff --git a/src/pages/users/me.tsx b/src/pages/users/me.tsx index c4f59dc..286ced3 100644 --- a/src/pages/users/me.tsx +++ b/src/pages/users/me.tsx @@ -1,12 +1,40 @@ import { checkAuthenticatedClient, redirectToLogin } from '@/services/auth' -import { Container } from '@mui/material' -import { useRouter } from 'next/router' +import { useUserStore } from '@/services/user' +import { Avatar, Box, Container, Typography } from '@mui/material' +import { getAttachmentUrl } from '@/services/network' import { useEffect } from 'react' +import Image from 'next/image' export default function UserItself() { useEffect(() => { if (!checkAuthenticatedClient()) redirectToLogin() }, []) - return + const userStore = useUserStore() + + return ( + <> + {userStore.account && ( + + account banner + + )} + + + + + {userStore.account && } + + {userStore.account?.nick} + + @{userStore.account?.name} + + + + + + + + + ) } diff --git a/src/services/checkIn.ts b/src/services/checkIn.ts new file mode 100644 index 0000000..aa7b8a5 --- /dev/null +++ b/src/services/checkIn.ts @@ -0,0 +1,10 @@ +export interface SnCheckInRecord { + id: number + createdAt: Date + updatedAt: Date + deletedAt?: Date | null + resultTier: number + resultExperience: number + resultModifiers: number[] + accountId: number +} diff --git a/src/services/user.ts b/src/services/user.ts index 1802329..62a7677 100644 --- a/src/services/user.ts +++ b/src/services/user.ts @@ -2,7 +2,7 @@ import { create } from 'zustand' import { sni } from './network' import { hasCookie } from 'cookies-next/client' -interface SnAccount { +export interface SnAccount { id: number createdAt: Date updatedAt: Date @@ -24,7 +24,7 @@ interface SnAccount { automatedId?: number | null } -interface SnAccountContact { +export interface SnAccountContact { accountId: number content: string createdAt: Date @@ -37,7 +37,7 @@ interface SnAccountContact { verifiedAt?: Date | null } -interface SnAccountProfile { +export interface SnAccountProfile { id: number accountId: number birthday?: Date | null @@ -50,7 +50,7 @@ interface SnAccountProfile { updatedAt: Date } -interface SnAccountBadge { +export interface SnAccountBadge { id: number createdAt: Date updatedAt: Date