From f875d65ef74a197eedd7e23626538268c7e73961 Mon Sep 17 00:00:00 2001 From: Jared Tabor Date: Tue, 13 Sep 2016 12:43:41 -0700 Subject: [PATCH] Adding unsubscribe method for non-socket-enabled routes with the idea that we only want to unsubscribe directly following a subscribe (no need to unsubscribe if we're already unsubscribed). --- .../src/shared/socket/socket.service.js | 30 +++++++++++++++++-- .../src/shared/stateExtender.provider.js | 4 +-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/awx/ui/client/src/shared/socket/socket.service.js b/awx/ui/client/src/shared/socket/socket.service.js index 75b3281c2e..738f615e3a 100644 --- a/awx/ui/client/src/shared/socket/socket.service.js +++ b/awx/ui/client/src/shared/socket/socket.service.js @@ -100,8 +100,34 @@ export default }, 2000); }, subscribe: function(state){ - console.log(state.name); + console.log("Next state: " + state.name); this.emit(JSON.stringify(state.socket)); + this.setLast(state); + }, + unsubscribe: function(state){ + if(this.requiresNewSubscribe(state)){ + this.emit(JSON.stringify(state.socket)); + } + this.setLast(state); + }, + setLast: function(state){ + this.last = state; + }, + getLast: function(){ + return this.last; + }, + requiresNewSubscribe(state){ + if (this.getLast() !== undefined){ + if( _.isEmpty(state.socket.groups) && _.isEmpty(this.getLast().socket.groups)){ + return false; + } + else { + return true; + } + } + else { + return true; + } }, checkStatus: function() { @@ -140,7 +166,7 @@ export default }, emit: function(data, callback) { var self = this; - $log.debug('Sent to Server: ' + data); + $log.debug('Sent to Websocket Server: ' + data); $rootScope.socketPromise.promise.then(function(){ self.socket.send(data, function () { var args = arguments; diff --git a/awx/ui/client/src/shared/stateExtender.provider.js b/awx/ui/client/src/shared/stateExtender.provider.js index 54f292a659..a04d5c214b 100644 --- a/awx/ui/client/src/shared/stateExtender.provider.js +++ b/awx/ui/client/src/shared/stateExtender.provider.js @@ -11,6 +11,7 @@ export default function($stateProvider) { $rootScope.socketPromise.promise.then(function(){ if(!state.socket){ state.socket = {groups: {}}; + SocketService.unsubscribe(state); } else{ if(state.socket.groups.hasOwnProperty( "job_events")){ @@ -19,9 +20,8 @@ export default function($stateProvider) { if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){ state.socket.groups.job_events = [$stateParams.id]; } + SocketService.subscribe(state); } - - SocketService.subscribe(state); return true; }); }];