From dbeeb9b582bcc3b59c06da4ecedb52918408bdc8 Mon Sep 17 00:00:00 2001 From: netpro2k <netpro2k@gmail.com> Date: Wed, 8 Aug 2018 19:05:07 -0700 Subject: [PATCH] Add media index support to media-loader/reolsveMedia --- src/components/media-loader.js | 5 +++-- src/utils/media-utils.js | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/media-loader.js b/src/components/media-loader.js index eec6a12fd..2301d1563 100644 --- a/src/components/media-loader.js +++ b/src/components/media-loader.js @@ -5,6 +5,7 @@ AFRAME.registerComponent("media-loader", { schema: { src: { type: "string" }, token: { type: "string" }, + index: { type: "number" }, resize: { default: false } }, @@ -59,7 +60,7 @@ AFRAME.registerComponent("media-loader", { // TODO: correctly handle case where src changes async update(oldData) { try { - const { src, token } = this.data; + const { src, token, index } = this.data; if (src !== oldData.src && !this.showLoaderTimeout) { this.showLoaderTimeout = setTimeout(this.showLoader, 100); @@ -67,7 +68,7 @@ AFRAME.registerComponent("media-loader", { if (!src) return; - const { raw, images, contentType } = await resolveMedia(src, token); + const { raw, images, contentType } = await resolveMedia(src, token, false, index); if (token) { if (this.blobURL) { diff --git a/src/utils/media-utils.js b/src/utils/media-utils.js index dc7d57730..5175596be 100644 --- a/src/utils/media-utils.js +++ b/src/utils/media-utils.js @@ -17,9 +17,10 @@ const fetchContentType = async (url, token) => { }; const resolveMediaCache = new Map(); -export const resolveMedia = async (url, token, skipContentType) => { +export const resolveMedia = async (url, token, skipContentType, index) => { const parsedUrl = new URL(url); - if (resolveMediaCache.has(url)) return resolveMediaCache.get(url); + const cacheKey = `${url}|${index}`; + if (resolveMediaCache.has(cacheKey)) return resolveMediaCache.get(cacheKey); const isNotHttpOrHttps = parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:"; const resolved = @@ -28,7 +29,7 @@ export const resolveMedia = async (url, token, skipContentType) => { : await fetch(mediaAPIEndpoint, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ media: { url } }) + body: JSON.stringify({ media: { url, index } }) }).then(r => r.json()); if (!isNotHttpOrHttps && !skipContentType) { @@ -37,7 +38,7 @@ export const resolveMedia = async (url, token, skipContentType) => { resolved.contentType = contentType; } - resolveMediaCache.set(url, resolved); + resolveMediaCache.set(cacheKey, resolved); return resolved; }; -- GitLab