支持学生头像设置与展示(上传/清除)

This commit is contained in:
JSR
2026-03-18 18:25:25 +08:00
parent f75e00f45e
commit 0d2a299b06
5 changed files with 338 additions and 37 deletions
+47
View File
@@ -0,0 +1,47 @@
export const getAvatarFromExtraJson = (extraJson?: string | null): string | null => {
if (!extraJson) return null
try {
const parsed = JSON.parse(extraJson)
if (!parsed || typeof parsed !== "object") return null
const avatar = (parsed as Record<string, unknown>).avatar
if (typeof avatar !== "string") return null
const trimmed = avatar.trim()
if (!trimmed) return null
if (trimmed.startsWith("data:image/")) return trimmed
if (trimmed.startsWith("http://") || trimmed.startsWith("https://")) return trimmed
return null
} catch {
return null
}
}
export const setAvatarInExtraJson = (
extraJson: string | null | undefined,
avatar: string | null
): string => {
let base: Record<string, unknown> = {}
if (extraJson) {
try {
const parsed = JSON.parse(extraJson)
if (parsed && typeof parsed === "object") {
base = parsed as Record<string, unknown>
}
} catch {
base = {}
}
}
if (avatar && avatar.trim()) {
base.avatar = avatar.trim()
} else {
delete base.avatar
}
return JSON.stringify(base)
}