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

Merge pull request #68 from mikhailian/master

Check for Proxy before using it
This commit is contained in:
Viktor
2018-09-12 15:56:28 +03:00
committed by GitHub
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]
})
}
}
}
})