feat: implement real-time leaderboard system with XP and voice channel tracking features
This commit is contained in:
@@ -32,11 +32,13 @@ type LeaderboardBoardProps =
|
||||
| {
|
||||
kind: "xp";
|
||||
data: LeaderboardPage<XpLeaderboardRow>;
|
||||
searchQuery: string;
|
||||
channelId?: never;
|
||||
}
|
||||
| {
|
||||
kind: "vc";
|
||||
data: LeaderboardPage<VoiceLeaderboardRow>;
|
||||
searchQuery: string;
|
||||
channelId?: string;
|
||||
};
|
||||
|
||||
@@ -115,7 +117,7 @@ function Podium({ data }: LeaderboardBoardProps) {
|
||||
}
|
||||
|
||||
export function LeaderboardBoard(props: LeaderboardBoardProps) {
|
||||
const { kind, data, channelId } = props;
|
||||
const { kind, data, channelId, searchQuery } = props;
|
||||
const firstRow = data.totalRows === 0
|
||||
? 0
|
||||
: (data.page - 1) * data.pageSize + 1;
|
||||
@@ -133,7 +135,9 @@ export function LeaderboardBoard(props: LeaderboardBoardProps) {
|
||||
<CardDescription>
|
||||
{data.totalRows > 0
|
||||
? `แสดง ${firstRow}–${lastRow} จาก ${formatInteger(String(data.totalRows))} คน`
|
||||
: "ยังไม่มีข้อมูลในขอบเขตนี้"}
|
||||
: searchQuery
|
||||
? "ไม่พบสมาชิกที่ตรงกับคำค้นหานี้"
|
||||
: "ยังไม่มีข้อมูลในขอบเขตนี้"}
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="px-0">
|
||||
@@ -181,6 +185,7 @@ export function LeaderboardBoard(props: LeaderboardBoardProps) {
|
||||
page={data.page}
|
||||
totalPages={data.totalPages}
|
||||
channelId={channelId}
|
||||
searchQuery={searchQuery}
|
||||
/>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
|
||||
Reference in New Issue
Block a user