{
headMap.set(headKey, headUrl)
try {
+ // @ts-expect-error - skinPreviewStorage.store expects a RenderResult, but we are storing a string url.
await skinPreviewStorage.store(headKey, headUrl)
} catch (error) {
console.warn('Failed to store head render in persistent storage:', error)
@@ -335,7 +334,7 @@ export async function generateSkinPreviews(skins: Skin[], capes: Cape[]): Promis
await get_normalized_skin_texture(skin),
modelUrl,
cape?.texture,
- capeModelUrl,
+ CapeModel,
)
map.set(key, renderResult)
diff --git a/apps/app-frontend/src/pages/Skins.vue b/apps/app-frontend/src/pages/Skins.vue
index 7613ae8f4..c2760e7ac 100644
--- a/apps/app-frontend/src/pages/Skins.vue
+++ b/apps/app-frontend/src/pages/Skins.vue
@@ -43,10 +43,6 @@ import { handleSevereError } from '@/store/error'
import { trackEvent } from '@/helpers/analytics'
import type AccountsCard from '@/components/ui/AccountsCard.vue'
import { arrayBufferToBase64 } from '@modrinth/utils'
-import capeModelUrl from '@/assets/models/cape.gltf?url'
-import wideModelUrl from '@/assets/models/classic_player.gltf?url'
-import slimModelUrl from '@/assets/models/slim_player.gltf?url'
-
const editSkinModal = useTemplateRef('editSkinModal')
const selectCapeModal = useTemplateRef('selectCapeModal')
const uploadSkinModal = useTemplateRef('uploadSkinModal')
@@ -320,9 +316,6 @@ await Promise.all([loadCapes(), loadSkins(), loadCurrentUser()])
- props.variant === 'SLIM' ? props.slimModelSrc : props.wideModelSrc,
+ props.variant === 'SLIM' ? SlimPlayerModel : ClassicPlayerModel,
)
const scene = shallowRef(null)
@@ -421,14 +418,9 @@ async function loadModel(src: string) {
}
}
-async function loadCape(src: string) {
- if (!src) {
- capeScene.value = null
- return
- }
-
+async function loadCape() {
try {
- const { scene: loadedCape } = await useGLTF(src)
+ const { scene: loadedCape } = await useGLTF(CapeModel)
capeScene.value = markRaw(loadedCape)
applyCapeTexture(capeScene.value, capeTexture.value, transparentTexture)
@@ -581,10 +573,6 @@ watch(capeScene, (newCapeScene) => {
})
watch(selectedModelSrc, (src) => loadModel(src))
-watch(
- () => props.capeModelSrc,
- (src) => src && loadCape(src),
-)
watch(
() => props.textureSrc,
async (newSrc) => {
@@ -599,6 +587,7 @@ watch(
watch(
() => props.capeSrc,
async (newCapeSrc) => {
+ await loadCape()
await loadAndApplyCapeTexture(newCapeSrc)
},
)
@@ -631,9 +620,7 @@ onBeforeMount(async () => {
await loadAndApplyCapeTexture(props.capeSrc)
}
- if (props.capeModelSrc) {
- await loadCape(props.capeModelSrc)
- }
+ await loadCape()
} catch (error) {
console.error('Failed to initialize skin preview:', error)
}