/**
 * Element for managing the applications authorized by a user.
 */
angular.module('quay').directive('externalLoginsManager', function () {
  var directiveDefinitionObject = {
    priority: 0,
    templateUrl: '/static/directives/external-logins-manager.html',
    replace: false,
    transclude: false,
    restrict: 'C',
    scope: {
      'user': '=user',
    },
    controller: function($scope, $element, ApiService, UserService, Features, Config, KeyService) {
      $scope.Features = Features;
      $scope.Config = Config;
      $scope.KeyService = KeyService;

      UserService.updateUserIn($scope, function(user) {
        $scope.cuser = jQuery.extend({}, user);

        if ($scope.cuser.logins) {
          for (var i = 0; i < $scope.cuser.logins.length; i++) {
            var login = $scope.cuser.logins[i];
            login.metadata = login.metadata || {};

            if (login.service == 'github') {
              $scope.hasGithubLogin = true;
              $scope.githubLogin = login.metadata['service_username'];
              $scope.githubEndpoint = KeyService['githubEndpoint'];
            }

            if (login.service == 'google') {
              $scope.hasGoogleLogin = true;
              $scope.googleLogin = login.metadata['service_username'];
            }
          }
        }
      });

      $scope.detachExternalLogin = function(kind) {
        var params = {
          'servicename': kind
        };

        ApiService.detachExternalLogin(null, params).then(function() {
          $scope.hasGithubLogin = false;
          $scope.hasGoogleLogin = false;
          UserService.load();
        }, ApiService.errorDisplay('Count not detach service'));
      };
    }
  };
  return directiveDefinitionObject;
});