2
0
mirror of https://github.com/tenrok/vue-native-websocket.git synced 2026-06-06 06:02:25 +03:00

Check for Proxy before using it

This commit is contained in:
Alexander Mikhailian
2018-09-11 22:39:49 +02:00
parent b7f3a454b2
commit 379143d3c9
2 changed files with 28 additions and 22 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+27 -21
View File
@@ -29,38 +29,44 @@ export default {
observer = new Observer(connection, opts)
Vue.prototype.$socket = observer.WebSocket
}
const hasProxy = typeof Proxy !== 'undefined' && typeof Proxy === 'function' && /native code/.test(Proxy.toString())
Vue.mixin({
created () {
let vm = this
let sockets = this.$options['sockets']
this.$options.sockets = new Proxy({}, {
set (target, key, value) {
Emitter.addListener(key, value, vm)
target[key] = value
return true
},
deleteProperty (target, key) {
Emitter.removeListener(key, vm.$options.sockets[key], vm)
delete target.key
return true
}
})
if (sockets) {
Object.keys(sockets).forEach((key) => {
this.$options.sockets[key] = sockets[key]
if (hasProxy) {
this.$options.sockets = new Proxy({}, {
set (target, key, value) {
Emitter.addListener(key, value, vm)
target[key] = value
return true
},
deleteProperty (target, key) {
Emitter.removeListener(key, vm.$options.sockets[key], vm)
delete target.key
return true
}
})
if (sockets) {
Object.keys(sockets).forEach((key) => {
this.$options.sockets[key] = sockets[key]
})
}
} else {
Object.seal(this.$options.sockets)
}
},
beforeDestroy () {
let sockets = this.$options['sockets']
if (hasProxy) {
let sockets = this.$options['sockets']
if (sockets) {
Object.keys(sockets).forEach((key) => {
delete this.$options.sockets[key]
})
if (sockets) {
Object.keys(sockets).forEach((key) => {
delete this.$options.sockets[key]
})
}
}
}
})