module.exports = function ($scope, $element, $attrs, $transclude, socket, growl, gettext) { var hasFailedOnce = false socket.on('connect', function () { $scope.socketState = 'connect' }) socket.on('connecting', function () { $scope.socketState = 'connecting' }) socket.on('disconnect', function () { $scope.socketState = 'disconnect' hasFailedOnce = true }) socket.on('connect_failed', function () { $scope.socketState = 'connect_failed' hasFailedOnce = true }) socket.on('error', function () { $scope.socketState = 'error' hasFailedOnce = true }) socket.on('reconnect_failed', function () { $scope.socketState = 'reconnect_failed' hasFailedOnce = true }) socket.on('reconnect', function () { $scope.socketState = 'reconnect' hasFailedOnce = true }) socket.on('reconnecting', function () { $scope.socketState = 'reconnecting' hasFailedOnce = true }) $scope.$watch('socketState', function (newValue, oldValue) { console.log(newValue) if (newValue) { if (newValue === 'connecting' && oldValue) { growl.info(gettext('

WebSocket

Connecting...'), {ttl: 1000}) } else if (newValue === 'connect' && oldValue === 'connecting') { if (hasFailedOnce) { growl.success(gettext('

WebSocket

Connected successfully.'), {ttl: 2000}) } } else { switch (newValue) { case 'disconnect': growl.info(gettext('

WebSocket

Disconnected.'), {ttl: 2000}) break; case 'connect_failed': growl.error(gettext('

WebSocket

Error while connecting.'), {ttl: 2000}) break; case 'error': growl.error(gettext('

WebSocket

Error.'), {ttl: 2000}) break; case 'reconnect_failed': growl.error(gettext('

WebSocket

Error while reconnecting.'), {ttl: 2000}) break; case 'reconnect': growl.success(gettext('

WebSocket

Reconnected successfully.'), {ttl: 2000}) break; case 'reconnecting': growl.info(gettext('

WebSocket

Reconnecting...'), {ttl: 1000}) break; } } } }) }