hurricane/security_camera/resources/cloud_server/public/src/boot/firebase/mixin.js

import { MAX_STORED_IMAGES } from 'firebaseConfig/firebase-config'
export default {
data() {
return {
databaseReady: false
}
},
mounted() {
if(this.databaseIsReady) {
this._onDatabaseReady(true)
}
},
computed: {
databaseIsReady () {
return !this.registrationIsRequired && this.$store.getters['firebase/device'] !== null
},
registrationIsRequired () {
return !this.$store.getters['firebase/deviceId']
},
firebaseIsInitialized () {
return this.$store.getters['firebase/deviceId'] !== null
},
shouldWatchDevice () {
return !this.registrationIsRequired && this.$store.getters['firebase/device'] === null
},
device () {
return this.$store.getters['firebase/device'] || { settings: {} }
},
deviceUuid() {
return this.device.uuid
},
deviceCode() {
return this.device.code
},
newestImage() {
return this.$store.getters['firebase/newestImage'] || { timestamp: null }
},
quotaExceeded() {
return this.$store.getters['firebase/error'] === 'quota-exceeded'
}
},
watch: {
databaseIsReady (val) {
this._onDatabaseReady(val)
}
},
methods: {
startWatchingDevice () {
this.$backend.db.watchDevice()
},
registerDevice (code) {
return this.$backend.auth.register(code)
},
unregisterDevice () {
return this.$backend.auth.unregister()
},
watchImages(callback) {
return this.$backend.db.watchImages(callback)
},
retrieveImages() {
return this.$backend.db.retrieveImages(MAX_STORED_IMAGES)
},
syncDevice() {
return this.$backend.db.syncDevice()
},
_onDatabaseReady(val) {
if (val && !this.databaseReady) {
this.databaseReady = true
logger.debug('Database ready')
this.$root.$emit('database-ready')
} else if(!val && this.databaseReady) {
this.databaseReady = false
this.$root.$emit('logged-out')
}
}
}
}