diff options
Diffstat (limited to 'src/features/announcements/components/AnnouncementScreen.js')
-rw-r--r-- | src/features/announcements/components/AnnouncementScreen.js | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js index 38de2dbc8..2f25e7139 100644 --- a/src/features/announcements/components/AnnouncementScreen.js +++ b/src/features/announcements/components/AnnouncementScreen.js | |||
@@ -192,6 +192,11 @@ class AnnouncementScreen extends Component { | |||
192 | stores: PropTypes.shape({ | 192 | stores: PropTypes.shape({ |
193 | ui: PropTypes.instanceOf(UIStore).isRequired, | 193 | ui: PropTypes.instanceOf(UIStore).isRequired, |
194 | }).isRequired, | 194 | }).isRequired, |
195 | actions: PropTypes.shape({ | ||
196 | app: PropTypes.shape({ | ||
197 | openExternalUrl: PropTypes.func.isRequired, | ||
198 | }).isRequired, | ||
199 | }).isRequired, | ||
195 | }; | 200 | }; |
196 | 201 | ||
197 | static contextTypes = { | 202 | static contextTypes = { |
@@ -199,7 +204,7 @@ class AnnouncementScreen extends Component { | |||
199 | }; | 204 | }; |
200 | 205 | ||
201 | render() { | 206 | render() { |
202 | const { classes, stores } = this.props; | 207 | const { classes, stores, actions } = this.props; |
203 | const { intl } = this.context; | 208 | const { intl } = this.context; |
204 | const { changelog, announcement } = announcementsStore; | 209 | const { changelog, announcement } = announcementsStore; |
205 | const themeImage = stores.ui.isDarkThemeActive ? 'dark' : 'light'; | 210 | const themeImage = stores.ui.isDarkThemeActive ? 'dark' : 'light'; |
@@ -223,14 +228,23 @@ class AnnouncementScreen extends Component { | |||
223 | __html: marked(announcement.main.text, markedOptions), | 228 | __html: marked(announcement.main.text, markedOptions), |
224 | }} | 229 | }} |
225 | /> | 230 | /> |
226 | <div className={classes.mainCtaButton}> | 231 | {(announcement.main.cta.label || announcement.main.cta.href) && ( |
227 | <Button | 232 | <div className={classes.mainCtaButton}> |
228 | label={announcement.main.cta.label} | 233 | <Button |
229 | onClick={() => { | 234 | label={announcement.main.cta.label} |
230 | window.location.href = `#${announcement.main.cta.href}`; | 235 | onClick={() => { |
231 | }} | 236 | const { |
232 | /> | 237 | href, |
233 | </div> | 238 | } = announcement.main.cta; |
239 | if (announcement.main.cta.href.startsWith('http')) { | ||
240 | actions.app.openExternalUrl({ url: href }); | ||
241 | } else { | ||
242 | window.location.href = `#${href}`; | ||
243 | } | ||
244 | }} | ||
245 | /> | ||
246 | </div> | ||
247 | )} | ||
234 | </div> | 248 | </div> |
235 | </div> | 249 | </div> |
236 | </div> | 250 | </div> |
@@ -250,7 +264,14 @@ class AnnouncementScreen extends Component { | |||
250 | <Button | 264 | <Button |
251 | label={announcement.spotlight.cta.label} | 265 | label={announcement.spotlight.cta.label} |
252 | onClick={() => { | 266 | onClick={() => { |
253 | window.location.href = `#${announcement.spotlight.cta.href}`; | 267 | const { |
268 | href, | ||
269 | } = announcement.spotlight.cta; | ||
270 | if (announcement.spotlight.cta.href.startsWith('http')) { | ||
271 | actions.app.openExternalUrl({ url: href }); | ||
272 | } else { | ||
273 | window.location.href = `#${href}`; | ||
274 | } | ||
254 | }} | 275 | }} |
255 | /> | 276 | /> |
256 | </div> | 277 | </div> |