Files
lotteryFront/src/features/player/player-session-bar.tsx
kang 7743c14e83 feat: 增强钱包 API 与玩家会话管理
- 新增钱包 API 函数:getWalletLogs(获取钱包日志)、postWalletTransferIn(充值)及 postWalletTransferOut(提现)
- 更新钱包相关类型定义,提升类型安全性
- 改进玩家会话管理:若当前无玩家资料,则自动拉取玩家信息
- 增强入口网关对过期会话的错误处理能力
- 更新 UI 组件,以适配新的结构与功能
2026-05-09 15:22:08 +08:00

48 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client";
import { UserRound } from "lucide-react";
import { cn } from "@/lib/utils";
import { usePlayerSessionStore } from "@/stores/player-session-store";
/**
* 顶栏:当前玩家称呼 + 默认币种(依赖入口或 Hydrate 拉取的 profile
*/
export function PlayerSessionBar({ className }: { className?: string }) {
const profile = usePlayerSessionStore((s) => s.profile);
const label =
profile?.nickname?.trim() ||
profile?.username?.trim() ||
(profile?.id != null ? `玩家 #${profile.id}` : null);
return (
<div
className={cn(
"flex min-w-0 max-w-[55%] items-center gap-1.5 sm:max-w-[60%]",
className,
)}
>
<span className="flex size-7 shrink-0 items-center justify-center rounded-full bg-muted">
<UserRound className="size-3.5 text-muted-foreground" aria-hidden />
</span>
<div className="min-w-0 leading-tight">
<p className="truncate text-xs font-medium text-foreground">
{label ?? "…"}
</p>
{profile?.default_currency ? (
<p className="truncate text-[10px] text-muted-foreground">
{profile.default_currency.toUpperCase()}
{profile.locale ? (
<span className="text-muted-foreground/80">
{" "}
· {profile.locale}
</span>
) : null}
</p>
) : null}
</div>
</div>
);
}