Fix links to newly added addressbook

This commit is contained in:
Francis Lachapelle
2016-11-08 12:24:56 -05:00
parent 8e33794400
commit ea64046df2
5 changed files with 82 additions and 20 deletions
@@ -199,6 +199,31 @@
});
};
/**
* @memberof AddressBook
* @desc Reload the list of known addressbooks.
*/
AddressBook.$reloadAll = function() {
var _this = this;
return AddressBook.$$resource.fetch('addressbooksList').then(function(data) {
_.forEach(data.addressbooks, function(addressbookData) {
var group, addressbook;
if (addressbookData.isRemote)
group = _this.$remotes;
else if (addressbookData.owner != AddressBook.activeUser.login)
group = _this.$subscriptions;
else
group = _this.$addressbooks;
addressbook = _.find(group, function(o) { return o.id == addressbookData.id; });
if (addressbook)
addressbook.init(addressbookData);
});
});
};
/**
* @function init
* @memberof AddressBook.prototype
@@ -6,8 +6,8 @@
/**
* @ngInject
*/
AddressBooksController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$window', '$mdDialog', '$mdToast', '$mdMedia', '$mdSidenav', 'FileUploader', 'sgConstant', 'sgHotkeys', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];
function AddressBooksController($state, $scope, $rootScope, $stateParams, $timeout, $window, $mdDialog, $mdToast, $mdMedia, $mdSidenav, FileUploader, sgConstant, sgHotkeys, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {
AddressBooksController.$inject = ['$q', '$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$window', '$mdDialog', '$mdToast', '$mdMedia', '$mdSidenav', 'FileUploader', 'sgConstant', 'sgHotkeys', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'User', 'stateAddressbooks'];
function AddressBooksController($q, $state, $scope, $rootScope, $stateParams, $timeout, $window, $mdDialog, $mdToast, $mdMedia, $mdSidenav, FileUploader, sgConstant, sgHotkeys, focus, Card, AddressBook, Dialog, Settings, User, stateAddressbooks) {
var vm = this, hotkeys = [];
vm.activeUser = Settings.activeUser;
@@ -234,16 +234,24 @@
}
function showLinks(addressbook) {
$mdDialog.show({
parent: angular.element(document.body),
clickOutsideToClose: true,
escapeToClose: true,
templateUrl: addressbook.id + '/links',
controller: LinksDialogController,
controllerAs: 'links',
locals: {
addressbook: addressbook
}
var promise;
if (addressbook.urls)
promise = $q.when();
else
// Refresh list of addressbooks to fetch links associated to addressbook
promise = AddressBook.$reloadAll();
promise.then(function() {
$mdDialog.show({
parent: angular.element(document.body),
clickOutsideToClose: true,
escapeToClose: true,
templateUrl: addressbook.id + '/links',
controller: LinksDialogController,
controllerAs: 'links',
locals: {
addressbook: addressbook
}
});
});
/**