From e74fccb49dc4f2d51ed9358bd49e8754a1967964 Mon Sep 17 00:00:00 2001 From: Vegaslon Date: Sat, 1 Feb 2020 08:54:06 -0500 Subject: [PATCH] Allow users to set avatar thumbnails that show in avatar app. --- .../qml/hifi/avatarapp/AvatarsModel.qml | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml index bfd66f1a30..d65e8e21ae 100644 --- a/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml +++ b/interface/resources/qml/hifi/avatarapp/AvatarsModel.qml @@ -20,18 +20,48 @@ ListModel { .split('%marketId%').join(extractMarketId(avatarUrl)); return marketItemUrl; + } + + function makeMarketThumbnailUrl(marketId) { + var avatarThumbnailUrl = "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/%marketId%/large/hifi-mp-%marketId%.jpg" + .split('%marketId%').join(marketId); + + return avatarThumbnailUrl; + } + + function trimFileExtension(url) { + url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); + url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); + url = url.substring(0, url.lastIndexOf(".")); + + return url; + } + + function imageExists(image_url){ + + var http = new XMLHttpRequest(); + + http.open('HEAD', image_url, false); + http.send(); + + return http.status != 404; + } function makeThumbnailUrl(avatarUrl) { var marketId = extractMarketId(avatarUrl); - if (marketId === '') { + if (marketId !== '') { + return makeMarketThumbnailUrl(marketId); + } + + var avatarThumbnailFileUrl = trimFileExtension(avatarUrl)+".jpg"; + var exists= imageExists(avatarThumbnailFileUrl); + + if (!exists) { return ''; } - - var avatarThumbnailUrl = "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/%marketId%/large/hifi-mp-%marketId%.jpg" - .split('%marketId%').join(marketId); - - return avatarThumbnailUrl; + + return avatarThumbnailFileUrl; } function makeAvatarObject(avatar, avatarName) {