Skip to content

Commit c9b9f78

Browse files
committed
Add content caching in addition to current package caching.
1 parent 89c2af6 commit c9b9f78

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

javascript/JsPolyHaven/main.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ let polyHavenAPI = null;
66
let svgDataUrl = null;
77
let codeMirrorEditor = null;
88
const materialPackageCache = {};
9+
const materialContentCache = {};
910

1011
// DOM elements
1112
const 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

Comments
 (0)