Explorar el Código

Activity window title

luis hace 7 años
padre
commit
39e8bcbf08

+ 1 - 0
browser/vue-flow/src/store/chat/actions.js

@@ -1,5 +1,6 @@
 import m from './mutation-types'
 import flowService from '@/services/flowservice'
+import utils from '@/utils/utils'
 
 export default {
   [m.EVENT_SEND] (ctx, msg) {

+ 3 - 0
browser/vue-flow/src/store/flow/actions.js

@@ -1,5 +1,6 @@
 import m from './mutation-types'
 import flowService from '@/services/flowservice'
+import utils from '@/utils/utils'
 
 export default {
   [m.DOCUMENT_SYNC] (ctx) {
@@ -7,6 +8,7 @@ export default {
   },
   // Node update full document state somehow
   [m.DOCUMENT_UPDATE] ({commit}, nodeData) {
+    utils.activity()
     // flowService.documentUpdate(nodeData)
     // Map the nodes
     // WEBSOCKET
@@ -59,6 +61,7 @@ export default {
     ctx.dispatch(m.DOCUMENT_SYNC)
   },
   [m.NOTIFICATION_ADD] (ctx, notification) {
+    utils.activity()
     ctx.commit(m.NOTIFICATION_ADD, notification)
     clearTimeout(this.notificationTimeout)
     this.notificationTimeout = setTimeout(() => {

+ 8 - 3
browser/vue-flow/src/store/ws.js

@@ -2,6 +2,7 @@ import defRegistry from './flow/default-registry'
 import flowMut from './flow/mutation-types'
 import chatMut from './chat/mutation-types'
 import flowService from '@/services/flowservice'
+import utils from '@/utils/utils'
 
 let flow = {}
 let chat = {}
@@ -55,11 +56,11 @@ export default store => {
       flowService.sessionLoad(undefined, sessId)
     })
   })
-
   flowService.on('document', (v) => {
     store.commit(flow.DOCUMENT_UPDATE, v.data)
   })
   flowService.on('nodeUpdate', (v) => {
+    utils.activity()
     store.commit(flow.NODE_UPDATE, v.data)
   })
 
@@ -80,13 +81,15 @@ export default store => {
     store.commit(flow.REGISTRY_UPDATE, Object.assign({}, defRegistry, res))
   })
   flowService.on('nodeActivity', (v) => {
+    utils.activity()
     store.commit(flow.ACTIVITY_UPDATE, v.data || {nodes: {}})
   })
   flowService.on('sessionNotify', (v) => {
-    // ACTION
-    store.dispatch(flow.NOTIFICATION_ADD, v.data)
+    utils.activity()
+    store.commit(flow.NOTIFICATION_ADD, v.data)
   })
   flowService.on('sessionJoin', (v) => {
+    utils.activity()
     // store.dispatch(flow.NOTIFICATION_ADD, 'Connected')
     const sessId = v.id
     store.dispatch(chat.CHAT_JOIN, {
@@ -99,9 +102,11 @@ export default store => {
 
   /// // CHAT //////
   flowService.on('chatUserList', (v) => {
+    utils.activity()
     store.commit(chat.USERLIST_UPDATE, v.data)
   })
   flowService.on('chatEvent', (v) => {
+    utils.activity()
     store.commit(chat.EVENT_ADD, v.data)
   })
 }

+ 28 - 0
browser/vue-flow/src/utils/utils.js

@@ -1,4 +1,32 @@
+// HTML5 DOM
+let visible = document.hasFocus()
+let changed = false
+let title = document.title
+
+window.addEventListener('focus', () => {
+  changed = false
+  document.title = title
+  visible = true
+})
+window.addEventListener('blur', () => {
+  visible = false
+})
+
 module.exports = {
+  // window notification title
+  activity () {
+    if (!visible) {
+      if (!changed) {
+        document.title = '* ' + title
+        changed = true
+      }
+    } else {
+      if (changed) {
+        document.title = title
+        changed = false
+      }
+    }
+  },
   createDrag (obj) {
     const drag = (ev) => {
       obj && obj.drag && obj.drag(ev)