| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- // 头像工具函数
- import { API_BASE_URL } from "@/lib/config";
- /**
- * 获取完整的头像 URL
- * 如果 avatarUrl 已经是完整 URL(以 http:// 或 https:// 开头),直接返回
- * 否则拼接 API_BASE_URL
- */
- export function getAvatarUrl(avatarUrl: string | null | undefined): string | null {
- if (!avatarUrl) {
- return null;
- }
- // 如果已经是完整 URL,直接返回
- if (avatarUrl.startsWith("http://") || avatarUrl.startsWith("https://")) {
- return avatarUrl;
- }
- // 如果是相对路径,拼接 API_BASE_URL
- // 确保路径以 / 开头
- const path = avatarUrl.startsWith("/") ? avatarUrl : `/${avatarUrl}`;
- // 形态2(同域 /api)下,后端返回的头像通常是 /uploads/... 这类相对路径
- // 保持拼接行为不变:API_BASE_URL 为空则走同域
- return `${API_BASE_URL}${path}`;
- }
- /**
- * 根据用户信息生成头像颜色
- */
- export function getAvatarColor(seed: string | number): string {
- const value = typeof seed === "string" ? seed.length : seed;
- return `hsl(${(value * 137.5) % 360}, 70%, 50%)`;
- }
- /**
- * 获取头像显示文本(首字母或用户名)
- */
- export function getAvatarInitial(username: string, nickname?: string): string {
- const displayName = nickname || username || "?";
- return displayName.charAt(0).toUpperCase();
- }
|