always remove websocket listeners

This commit is contained in:
Jake McDermott
2018-05-11 16:42:55 -04:00
parent 2f5eefe809
commit f3343f780c

View File

@@ -9,6 +9,7 @@ let engine;
let status; let status;
let vm; let vm;
let listeners = [];
function JobsIndexController ( function JobsIndexController (
_resource_, _resource_,
@@ -89,21 +90,32 @@ function init () {
status.setJobStatus('running'); status.setJobStatus('running');
}, },
onStop () { onStop () {
stopListening();
status.updateStats(); status.updateStats();
status.dispatch(); status.dispatch();
} }
}); });
if (!status.state.running) { if (!status.state.running) {
return next(); next();
return;
} }
$scope.$on(resource.ws.events, (scope, data) => handleJobEvent(data)); resource.model.get(`related.${resource.related}.results`)
$scope.$on(resource.ws.status, (scope, data) => handleStatusEvent(data));
return resource.model
.get(`related.${resource.related}.results`)
.forEach(handleJobEvent); .forEach(handleJobEvent);
startListening();
}
function stopListening () {
listeners.forEach(deregister => deregister());
listeners = [];
}
function startListening () {
stopListening();
listeners.push($scope.$on(resource.ws.events, (scope, data) => handleJobEvent(data)));
listeners.push($scope.$on(resource.ws.status, (scope, data) => handleStatusEvent(data)));
} }
function handleStatusEvent (data) { function handleStatusEvent (data) {
@@ -115,9 +127,8 @@ function handleJobEvent (data) {
status.pushJobEvent(data); status.pushJobEvent(data);
} }
function devClear (pageMode) { function devClear () {
init(pageMode); render.clear().then(() => init());
render.clear();
} }
function next () { function next () {