feat(account): implement initial skin loading in profile
This commit is contained in:
@@ -71,23 +71,49 @@ const onSkinUpload = async () => {
|
||||
if (skinViewer) {
|
||||
skinViewer.loadSkin(URL.createObjectURL(selectedFile.value));
|
||||
}
|
||||
await authStore.fetchUserProfile();
|
||||
} catch (e: any) {
|
||||
uploadError.value = e.response?.data || "Ошибка при загрузке файла.";
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
};
|
||||
// --- Логика для 3D-вьювера ---
|
||||
const skinCanvas = ref<HTMLCanvasElement | null>(null);
|
||||
let skinViewer: SkinViewer | null = null;
|
||||
|
||||
// Инициализация 3D-вьювера при монтировании компонента
|
||||
onMounted(() => {
|
||||
if (skinCanvas.value) {
|
||||
const setupSkinViewer = () => {
|
||||
if (skinCanvas.value && !skinViewer) {
|
||||
skinViewer = new SkinViewer({
|
||||
canvas: skinCanvas.value,
|
||||
width: 300,
|
||||
height: 400,
|
||||
skin: "/default_skin.png",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Следим за изменением URL скина в сторе и обновляем вьювер
|
||||
watch(
|
||||
() => authStore.skinUrl,
|
||||
(newUrl) => {
|
||||
if (skinViewer) {
|
||||
if (newUrl) {
|
||||
skinViewer.loadSkin(newUrl);
|
||||
} else {
|
||||
// Если у пользователя нет скина, показываем скин по умолчанию
|
||||
skinViewer.loadSkin("/default_skin.png");
|
||||
}
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
);
|
||||
|
||||
// Инициализация 3D-вьювера при монтировании компонента
|
||||
onMounted(() => {
|
||||
setupSkinViewer();
|
||||
if (!authStore.skinUrl && authStore.isAuthenticated) {
|
||||
authStore.fetchUserProfile();
|
||||
}
|
||||
});
|
||||
|
||||
// Очистка ресурсов при размонтировании
|
||||
|
||||
Reference in New Issue
Block a user