Spaces:
Paused
Paused
| // This file needs the thumbnail fix added before the final closing | |
| // Add this before the last line: | |
| const THUMB_KEY = "avatar.thumbs"; | |
| const avatarThumbPreview = document.getElementById("avatar-thumb-preview"); | |
| function loadThumbs() { | |
| try { return JSON.parse(localStorage.getItem(THUMB_KEY) || "{}"); } | |
| catch { return {}; } | |
| } | |
| function saveThumbs(map) { localStorage.setItem(THUMB_KEY, JSON.stringify(map)); } | |
| function serverThumbUrl(name) { | |
| if (!name) return ""; | |
| return `/avatars/${name}.thumb.png`; | |
| } | |
| function updateAvatarThumbPreview() { | |
| if (!avatarThumbPreview) return; | |
| const name = chatAvatarSelect.value || settings.avatar || ""; | |
| const map = loadThumbs(); | |
| const local = map[name] || ""; | |
| if (local) { | |
| avatarThumbPreview.src = local; | |
| avatarThumbPreview.hidden = false; | |
| return; | |
| } | |
| const srv = serverThumbUrl(name); | |
| if (srv) { | |
| avatarThumbPreview.src = srv; | |
| avatarThumbPreview.hidden = false; | |
| } else { | |
| avatarThumbPreview.hidden = true; | |
| } | |
| } | |
| if (chatAvatarSelect) chatAvatarSelect.addEventListener("change", updateAvatarThumbPreview); | |
| // Snap button handler: | |
| const snapBtn = document.getElementById("snap-btn"); | |
| if (snapBtn) { | |
| snapBtn.addEventListener("click", () => { | |
| if (!stage.head) { setCaption("AVATAR CHUA SAN SANG", "error"); return; } | |
| const url = stage.capturePNG(); | |
| if (!url) { setCaption("KHONG CHUP DUOC ANH", "error"); return; } | |
| // TODO: send to /api/avatar-thumbnail | |
| }); | |
| } |