linagora/openpaas-esn

View on GitHub
modules/linagora.esn.contact/frontend/app/addressbook/settings/main/contact-addressbook-settings-main.controller.js

Summary

Maintainability
B
5 hrs
Test Coverage
(function(angular) {
  'use strict';

  angular.module('linagora.esn.contact')
    .controller('contactAddressbookSettingsMainController', contactAddressbookSettingsMainController);

  function contactAddressbookSettingsMainController(
    _,
    contactAddressbookService,
    CONTACT_ADDRESSBOOK_PUBLIC_RIGHT,
    CONTACT_SHARING_SHARE_ACCESS,
    CONTACT_SHARING_SUBSCRIPTION_TYPE,
    CONTACT_SHARING_SHARE_ACCESS_CHOICES,
    CONTACT_ADDRESSBOOK_MEMBERS_RIGHTS
  ) {
    var self = this;

    self.$onInit = $onInit;
    self.canUpdatePublicRight = canUpdatePublicRight;
    self.canUpdateMembersRight = canUpdateMembersRight;

    function $onInit() {
      contactAddressbookService.getAddressbookUrl(self.addressbook).then(function(url) {
        self.cardDAVUrl = url;
      });
      self.publicRights = Object.keys(CONTACT_ADDRESSBOOK_PUBLIC_RIGHT).map(function(right) {
        return {
          value: CONTACT_ADDRESSBOOK_PUBLIC_RIGHT[right].value,
          title: CONTACT_ADDRESSBOOK_PUBLIC_RIGHT[right].longLabel
        };
      });
      self.membersRights = Object.keys(CONTACT_ADDRESSBOOK_MEMBERS_RIGHTS).map(function(right) {
        return {
          value: CONTACT_ADDRESSBOOK_MEMBERS_RIGHTS[right].label,
          title: CONTACT_ADDRESSBOOK_MEMBERS_RIGHTS[right].longLabel
        };
      });

      if (self.addressbook.subscriptionType === CONTACT_SHARING_SUBSCRIPTION_TYPE.delegation) {
        _initShareOwner();
        _initShareAccess();
      }
    }

    function canUpdatePublicRight() {
      return self.addressbook.canShareAddressbook;
    }

    function canUpdateMembersRight() {
      return self.addressbook.canShareAddressbook;
    }

    function _initShareOwner() {
      var shareOwner = _getShareOwner(self.addressbook.source.sharees);

      shareOwner && shareOwner.getUser()
        .then(function(user) {
          self.shareOwner = user;
        });
    }

    function _initShareAccess() {
      self.shareAccess = _.find(
        CONTACT_SHARING_SHARE_ACCESS_CHOICES, {
          value: self.addressbook.shareAccess
        });
    }

    function _getShareOwner(sharees) {
      return _.find(sharees, { access: CONTACT_SHARING_SHARE_ACCESS.SHAREDOWNER });
    }
  }
})(angular);