2
0
mirror of https://github.com/tenrok/vue-native-websocket.git synced 2026-06-23 21:40: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
+7 -1
View File
@@ -29,12 +29,14 @@ 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']
if (hasProxy) {
this.$options.sockets = new Proxy({}, { this.$options.sockets = new Proxy({}, {
set (target, key, value) { set (target, key, value) {
Emitter.addListener(key, value, vm) Emitter.addListener(key, value, vm)
@@ -47,14 +49,17 @@ export default {
return true return true
} }
}) })
if (sockets) { if (sockets) {
Object.keys(sockets).forEach((key) => { Object.keys(sockets).forEach((key) => {
this.$options.sockets[key] = sockets[key] this.$options.sockets[key] = sockets[key]
}) })
} }
} else {
Object.seal(this.$options.sockets)
}
}, },
beforeDestroy () { beforeDestroy () {
if (hasProxy) {
let sockets = this.$options['sockets'] let sockets = this.$options['sockets']
if (sockets) { if (sockets) {
@@ -63,6 +68,7 @@ export default {
}) })
} }
} }
}
}) })
} }
} }