avatar.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // 头像工具函数
  2. import { API_BASE_URL } from "@/lib/config";
  3. /**
  4. * 获取完整的头像 URL
  5. * 如果 avatarUrl 已经是完整 URL(以 http:// 或 https:// 开头),直接返回
  6. * 否则拼接 API_BASE_URL
  7. */
  8. export function getAvatarUrl(avatarUrl: string | null | undefined): string | null {
  9. if (!avatarUrl) {
  10. return null;
  11. }
  12. // 如果已经是完整 URL,直接返回
  13. if (avatarUrl.startsWith("http://") || avatarUrl.startsWith("https://")) {
  14. return avatarUrl;
  15. }
  16. // 如果是相对路径,拼接 API_BASE_URL
  17. // 确保路径以 / 开头
  18. const path = avatarUrl.startsWith("/") ? avatarUrl : `/${avatarUrl}`;
  19. return `${API_BASE_URL}${path}`;
  20. }
  21. /**
  22. * 根据用户信息生成头像颜色
  23. */
  24. export function getAvatarColor(seed: string | number): string {
  25. const value = typeof seed === "string" ? seed.length : seed;
  26. return `hsl(${(value * 137.5) % 360}, 70%, 50%)`;
  27. }
  28. /**
  29. * 获取头像显示文本(首字母或用户名)
  30. */
  31. export function getAvatarInitial(username: string, nickname?: string): string {
  32. const displayName = nickname || username || "?";
  33. return displayName.charAt(0).toUpperCase();
  34. }