2
0
mirror of https://github.com/tenrok/vue-native-websocket.git synced 2026-06-22 15:50:35 +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) observer = new Observer(connection, opts)
Vue.prototype.$socket = observer.WebSocket Vue.prototype.$socket = observer.WebSocket
} }
const hasProxy = typeof Proxy !== 'undefined' && typeof Proxy === 'function' && /native code/.test(Proxy.toString())
Vue.mixin({ Vue.mixin({
created () { created () {
let vm = this let vm = this
let sockets = this.$options['sockets'] let sockets = this.$options['sockets']
this.$options.sockets = new Proxy({}, { if (hasProxy) {
set (target, key, value) { this.$options.sockets = new Proxy({}, {
Emitter.addListener(key, value, vm) set (target, key, value) {
target[key] = value Emitter.addListener(key, value, vm)
return true target[key] = value
}, return true
deleteProperty (target, key) { },
Emitter.removeListener(key, vm.$options.sockets[key], vm) deleteProperty (target, key) {
delete target.key Emitter.removeListener(key, vm.$options.sockets[key], vm)
return true delete target.key
} return true
}) }
if (sockets) {
Object.keys(sockets).forEach((key) => {
this.$options.sockets[key] = sockets[key]
}) })
if (sockets) {
Object.keys(sockets).forEach((key) => {
this.$options.sockets[key] = sockets[key]
})
}
} else {
Object.seal(this.$options.sockets)
} }
}, },
beforeDestroy () { beforeDestroy () {
let sockets = this.$options['sockets'] if (hasProxy) {
let sockets = this.$options['sockets']
if (sockets) { if (sockets) {
Object.keys(sockets).forEach((key) => { Object.keys(sockets).forEach((key) => {
delete this.$options.sockets[key] delete this.$options.sockets[key]
}) })
}
} }
} }
}) })