diff --git a/src/assets/gltf-model-import.ts b/src/assets/gltf-model-import.ts index 7e3d7e5a..ea48b572 100644 --- a/src/assets/gltf-model-import.ts +++ b/src/assets/gltf-model-import.ts @@ -335,21 +335,27 @@ export async function importModelAssetFromFile( const metadata = extractModelAssetMetadata(gltf, format); const asset = createModelAssetRecord(sourceName, mimeType, bytes, metadata); - await storage.putAsset(asset.storageKey, { - bytes, - mimeType - } satisfies ProjectAssetStorageRecord); - const modelInstance = createModelInstance({ - assetId: asset.id, - name: undefined - }); + try { + await storage.putAsset(asset.storageKey, { + bytes, + mimeType + } satisfies ProjectAssetStorageRecord); - return { - asset, - modelInstance, - loadedAsset: createLoadedModelAsset(asset, cloneTemplateScene(gltf.scene)) - }; + const modelInstance = createModelInstance({ + assetId: asset.id, + name: undefined + }); + + return { + asset, + modelInstance, + loadedAsset: createLoadedModelAsset(asset, cloneTemplateScene(gltf.scene)) + }; + } catch (error) { + await storage.deleteAsset(asset.storageKey).catch(() => undefined); + throw error; + } } export async function loadModelAssetFromStorage(