From e65c20d37365cf6f15c548644cb6be319dfa3359 Mon Sep 17 00:00:00 2001 From: Robert Long <robert@robertlong.me> Date: Tue, 24 Apr 2018 21:05:04 -0700 Subject: [PATCH] Resolve relative thumbnail images --- src/react-components/hub-create-panel.js | 22 ++++++++++++++++++---- src/utils/resolveURL.js | 8 ++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/react-components/hub-create-panel.js b/src/react-components/hub-create-panel.js index 0b74d55b2..f925d6ae5 100644 --- a/src/react-components/hub-create-panel.js +++ b/src/react-components/hub-create-panel.js @@ -6,6 +6,7 @@ import classNames from "classnames"; import faAngleLeft from "@fortawesome/fontawesome-free-solid/faAngleLeft"; import faAngleRight from "@fortawesome/fontawesome-free-solid/faAngleRight"; import FontAwesomeIcon from "@fortawesome/react-fontawesome"; +import { resolveURL, extractUrlBase } from "../utils/resolveURL"; import default_scene_preview_thumbnail from "../assets/images/default_thumbnail.png"; @@ -42,11 +43,24 @@ class HubCreatePanel extends Component { _getEnvironmentThumbnail = environmentIndex => { const environment = this.props.environments[environmentIndex]; const meta = environment.meta || {}; - return ( - (meta.images || []).find(i => i.type === "preview-thumbnail") || { - srcset: default_scene_preview_thumbnail + + let environmentThumbnail = { + srcset: default_scene_preview_thumbnail + }; + + if (meta.images) { + const thumbnailImage = meta.images.find(i => i.type === "preview-thumbnail"); + + if (thumbnailImage) { + const baseURL = new URL(extractUrlBase(environment.bundle_url), window.location.href); + + environmentThumbnail = { + srcset: resolveURL(thumbnailImage.srcset, baseURL) + }; } - ); + } + + return environmentThumbnail; }; createHub = async e => { diff --git a/src/utils/resolveURL.js b/src/utils/resolveURL.js index ddc6c8680..35ccc3150 100644 --- a/src/utils/resolveURL.js +++ b/src/utils/resolveURL.js @@ -15,3 +15,11 @@ export function resolveURL(url, path) { // Relative URL return path + url; } + +export function extractUrlBase(url) { + const index = url.lastIndexOf("/"); + + if (index === -1) return "./"; + + return url.substr(0, index + 1); +} -- GitLab