module.exports =
  function FatalMessageServiceFactory($uibModal, $location, $route, $interval,
    StateClassesService) {
    var FatalMessageService = {}

    var intervalDeviceInfo

    var ModalInstanceCtrl = function($scope, $uibModalInstance, device,
      tryToReconnect) {
      $scope.ok = function() {
        $uibModalInstance.close(true)
        $route.reload()
      }

      function update() {
        $scope.device = device
        $scope.stateColor = StateClassesService.stateColor(device.state)
      }

      update()

      // TODO: remove this please
      intervalDeviceInfo = $interval(update, 750)

      if (tryToReconnect) {
        // TODO: this is ugly, find why its not updated correctly (also on the device list)
        intervalDeviceInfo = $interval(function() {
          update()

          if (device.usable) {
            // Try to reconnect
            $scope.ok()
          }
        }, 1000, 500)
      }

      $scope.second = function() {
        $uibModalInstance.dismiss()
        $location.path('/devices/')
      }

      $scope.cancel = function() {
        $uibModalInstance.dismiss('cancel')
      }

      var destroyInterval = function() {
        if (angular.isDefined(intervalDeviceInfo)) {
          $interval.cancel(intervalDeviceInfo)
          intervalDeviceInfo = undefined
        }
      }

      $scope.$on('$destroy', function() {
        destroyInterval()
      })
    }

    FatalMessageService.open = function(device, tryToReconnect) {
      var modalInstance = $uibModal.open({
        template: require('./fatal-message.pug'),
        controller: ModalInstanceCtrl,
        resolve: {
          device: function() {
            return device
          },
          tryToReconnect: function() {
            return tryToReconnect
          }
        }
      })

      modalInstance.result.then(function() {
      }, function() {

      })
    }


    return FatalMessageService
  }
