sotlas-frontend/src/mixins/coverphoto.js

67 wiersze
1.6 KiB
JavaScript

import photos from '../mixins/photos.js'
import Wikipedia from '../wikipedia.js'
export default {
mixins: [photos],
computed: {
coverPhoto () {
if (this.summit.photos) {
let coverPhoto = this.summit.photos.find(photo => photo.isCover)
if (coverPhoto) {
return {
src: this.photoSrc(coverPhoto, 'thumb'),
mediaLink: this.photoSrc(coverPhoto, 'large'),
attribution: coverPhoto.author
}
}
}
if (this.wikipediaPhoto) {
return this.wikipediaPhoto
}
return null
}
},
watch: {
summit: {
handler (newSummit, oldSummit) {
if (!newSummit.code) {
return
}
if (newSummit && oldSummit && newSummit.code === oldSummit.code && this.wikipediaPhoto !== null) {
return
}
this.wikipediaPhoto = null
if (!this.alwaysLoadWikipedia && this.summit.photos && this.summit.photos.some(photo => photo.isCover)) {
// We have our own photo; no need to load
return
}
let loadingSummit = this.summit
Wikipedia.loadSummitPhoto(this.summit, 320)
.then(photo => {
if (!photo) {
return
}
let preloadImg = new Image()
preloadImg.onload = () => {
if (this.summit && loadingSummit.code === this.summit.code) {
this.wikipediaPhoto = photo
}
}
preloadImg.src = photo.src
})
},
immediate: true
}
},
data () {
return {
wikipediaPhoto: null
}
}
}