sotlas-frontend/src/mixins/sotadb.js

85 wiersze
3.2 KiB
JavaScript

import axios from 'axios'
import ssoauth from './ssoauth.js'
import utils from './utils.js'
export default {
mixins: [ssoauth, utils],
methods: {
loadActivations (callsign) {
return axios.get(process.env.VUE_APP_API_URL + '/activations/' + callsign)
.then(response => {
return response.data
})
},
loadActivationDetails (activationId) {
return this.axiosAuth.get('https://api-db.sota.org.uk/admin/secure/my_activator_log_detailed', { params: { id: this.activationId } })
.then(response => {
return response.data[0]
})
},
loadS2SLog (userId, year) {
return this.axiosAuth.get('https://api-db.sota.org.uk/admin/secure/s2s_log_by_id', { params: { id: userId, year } })
.then(response => {
return response.data
})
},
loadMyChaserUniques () {
if (this.$store.state.myChasedSummits) {
return Promise.resolve(this.$store.state.myChasedSummits)
} else {
return this._loadMore('https://api-db.sota.org.uk/admin/secure/my_chaser_uniques', [], 1)
.then(myChaserUniques => {
let myChasedSummits = new Set()
myChaserUniques.forEach(ent => {
myChasedSummits.add(ent.Summit.substring(0, ent.Summit.indexOf(' ')))
})
this.$store.commit('setMyChasedSummits', myChasedSummits)
return myChasedSummits
})
}
},
loadMyActivatorUniques () {
if (this.$store.state.myActivatedSummits) {
return Promise.resolve(this.$store.state.myActivatedSummits)
} else {
return this._loadMore('https://api-db.sota.org.uk/admin/secure/my_activator_uniques', [], 1)
.then(myActivatorUniques => {
let myActivatedSummits = new Set()
myActivatorUniques.forEach(ent => {
myActivatedSummits.add(ent.Summit.substring(0, ent.Summit.indexOf(' ')))
})
this.$store.commit('setMyActivatedSummits', myActivatedSummits)
return myActivatedSummits
})
}
},
loadMyActivatorUniquesThisYear () {
if (this.$store.state.myActivatedSummitsThisYear) {
return Promise.resolve(this.$store.state.myActivatedSummitsThisYear)
} else {
return this.axiosAuth.get('https://api-db.sota.org.uk/admin/secure/my_activator_log', { params: { year: new Date().getUTCFullYear() } })
.then(response => {
let myActivatedSummitsThisYear = new Set()
response.data.forEach(ent => {
myActivatedSummitsThisYear.add(ent.Summit.substring(0, ent.Summit.indexOf(' ')))
})
this.$store.commit('setMyActivatedSummitsThisYear', myActivatedSummitsThisYear)
return myActivatedSummitsThisYear
})
}
},
_loadMore (url, data, start) {
return this.axiosAuth.get(url, { params: { start } })
.then(response => {
data = data.concat(response.data)
if (response.data.length > 0) {
// more data to be expected
return this._loadMore(url, data, start + response.data.length)
} else {
return data
}
})
}
}
}