@@ -6,6 +6,7 @@ let polyHavenAPI = null;
66let svgDataUrl = null ;
77let codeMirrorEditor = null ;
88const materialPackageCache = { } ;
9+ const materialContentCache = { } ;
910
1011// DOM elements
1112const materialsContainer = document . getElementById ( 'materialsContainer' ) ;
@@ -185,12 +186,15 @@ async function previewMaterial() {
185186 const cacheKey = `${ currentSelectedMaterial . id } _${ resolution } ` ;
186187 let zipBlob = materialPackageCache [ cacheKey ] ;
187188 if ( ! zipBlob ) {
189+ // Reuse cached content if available
190+ let contentData = materialContentCache [ cacheKey ] ;
191+ if ( ! contentData ) {
192+ contentData = await polyHavenAPI . getMaterialContent ( currentSelectedMaterial . id , resolution ) ;
193+ materialContentCache [ cacheKey ] = contentData ;
194+ }
188195 zipBlob = await polyHavenAPI . createMaterialXPackage ( currentSelectedMaterial , resolution ) ;
189196 materialPackageCache [ cacheKey ] = zipBlob ;
190197 }
191-
192- // Create the MaterialX package using the API class
193- //const zipBlob = await polyHavenAPI.createMaterialXPackage(currentSelectedMaterial, resolution);
194198
195199 // Convert Blob to ArrayBuffer
196200 const arrayBuffer = await zipBlob . arrayBuffer ( ) ;
@@ -334,9 +338,12 @@ async function loadMaterialContent(materialId) {
334338
335339 try {
336340 const resolution = document . getElementById ( 'materialResolution' ) . value ;
337-
338- // Get material content using the API class
339- const contentData = await polyHavenAPI . getMaterialContent ( materialId , resolution ) ;
341+ const cacheKey = `${ materialId } _${ resolution } ` ;
342+ let contentData = materialContentCache [ cacheKey ] ;
343+ if ( ! contentData ) {
344+ contentData = await polyHavenAPI . getMaterialContent ( materialId , resolution ) ;
345+ materialContentCache [ cacheKey ] = contentData ;
346+ }
340347
341348 // Create preview content
342349 const previewContainer = document . getElementById ( 'contentPreview' ) ;
@@ -408,7 +415,6 @@ async function loadMaterialContent(materialId) {
408415 return card ;
409416 } ;
410417
411-
412418 // Create gallery items
413419 for ( const [ path , fileData ] of Object . entries ( textureFiles ) ) {
414420 const textureURI = path . split ( '/' ) . pop ( ) ;
0 commit comments