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