From 2a8a5636f189b959a5f4563e751382d822b20b00 Mon Sep 17 00:00:00 2001 From: Greg Fodor <gfodor@gmail.com> Date: Fri, 2 Nov 2018 05:27:04 +0000 Subject: [PATCH] Use new attribution format --- src/assets/stylesheets/scene-ui.scss | 6 ++++ src/react-components/scene-ui.js | 45 ++++++++++++++++++++++++++-- src/scene.js | 2 +- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/assets/stylesheets/scene-ui.scss b/src/assets/stylesheets/scene-ui.scss index bd3abf0a6..42de9e2f1 100644 --- a/src/assets/stylesheets/scene-ui.scss +++ b/src/assets/stylesheets/scene-ui.scss @@ -95,6 +95,12 @@ :local(.attribution) { font-size: 1.0em; white-space: wrap; + + a { + font-size: 0.8em; + color: black; + pointer-events: auto; + } } :local(.screenshot) { diff --git a/src/react-components/scene-ui.js b/src/react-components/scene-ui.js index 2db97a04c..314f6bf91 100644 --- a/src/react-components/scene-ui.js +++ b/src/react-components/scene-ui.js @@ -20,7 +20,7 @@ class SceneUI extends Component { sceneId: PropTypes.string, sceneName: PropTypes.string, sceneDescription: PropTypes.string, - sceneAttribution: PropTypes.string, + sceneAttributions: PropTypes.object, sceneScreenshotURL: PropTypes.string }; @@ -73,6 +73,47 @@ class SceneUI extends Component { tweetText )}`; + let attributions; + + const toAttributionSpan = a => { + if (a.url) { + const source = a.url.indexOf("sketchfab.com") + ? "on Sketchfab" + : a.url.indexOf("poly.google.com") + ? "on Google Poly" + : ""; + + return ( + <span key={a.url}> + <a href={a.url} target="_blank" rel="noopener noreferrer"> + {a.name} by {a.author} {source} + </a> + </span> + ); + } else { + return ( + <span key={`${a.name} ${a.author}`}> + {a.name} by {a.author} + </span> + ); + } + }; + + if (this.props.sceneAttributions) { + if (!this.props.sceneAttributions.extras) { + attributions = ( + <span> + <span>by {this.props.sceneAttributions.creator}</span> + <br /> + {this.props.sceneAttributions.content && this.props.sceneAttributions.content.map(toAttributionSpan)} + </span> + ); + } else { + // Legacy + attributions = <span>{this.props.sceneAttributions.extras}</span>; + } + } + return ( <IntlProvider locale={lang} messages={messages}> <div className={styles.ui}> @@ -106,7 +147,7 @@ class SceneUI extends Component { </div> <div className={styles.info}> <div className={styles.name}>{this.props.sceneName}</div> - <div className={styles.attribution}>{this.props.sceneAttribution}</div> + <div className={styles.attribution}>{attributions}</div> </div> <div className={styles.spoke}> <div className={styles.madeWith}>made with</div> diff --git a/src/scene.js b/src/scene.js index 6f2f0732d..4172e6247 100644 --- a/src/scene.js +++ b/src/scene.js @@ -102,7 +102,7 @@ const onReady = async () => { remountUI({ sceneName: sceneInfo.name, sceneDescription: sceneInfo.description, - sceneAttribution: sceneInfo.attribution, + sceneAttributions: sceneInfo.attributions, sceneScreenshotURL: sceneInfo.screenshot_url }); }; -- GitLab