mirror of
https://github.com/2930134478/AI-CS.git
synced 2026-06-15 00:44:30 +08:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
// 头像工具函数
|
|
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();
|
|
}
|
|
|