Wallet/src/js/controllers/modals/addressbook.js
2016-08-09 09:57:40 -03:00

162 lines
4.2 KiB
JavaScript

'use strict';
angular.module('copayApp.controllers').controller('addressbookController', function($rootScope, $scope, $timeout, lodash, profileService, addressService, addressbookService, bwcError) {
var self = $scope.self;
var fc = profileService.focusedClient;
self.lockAddress = false;
self._address = null;
$scope.editAddressbook = false;
$scope.addAddressbookEntry = false;
$scope.selectedAddressbook = {};
$scope.newAddress = address;
$scope.walletName = fc.credentials.walletName;
$scope.color = fc.backgroundColor;
$scope.addressbook = {
'address': ($scope.newAddress || ''),
'label': ''
};
$scope.checkClipboard = function() {
if (!$scope.newAddress) {
getClipboard(function(value) {
$scope.newAddress = value;
});
}
};
$scope.beforeQrCodeScann = function() {
$scope.error = null;
$scope.addAddressbookEntry = true;
$scope.editAddressbook = false;
};
$scope.onQrCodeScanned = function(data, addressbookForm) {
$timeout(function() {
var form = addressbookForm;
if (data && form) {
data = data.replace('bitcoin:', '');
form.address.$setViewValue(data);
form.address.$isValid = true;
form.address.$render();
}
$scope.$digest();
}, 100);
};
$scope.toggleEditAddressbook = function() {
$scope.editAddressbook = !$scope.editAddressbook;
$scope.selectedAddressbook = {};
$scope.addAddressbookEntry = false;
};
$scope.selectAddressbook = function(addr) {
self.setForm(addr);
$scope.cancel();
};
$scope.toggleSelectAddressbook = function(addr) {
$scope.selectedAddressbook[addr] = $scope.selectedAddressbook[addr] ? false : true;
};
$scope.toggleAddAddressbookEntry = function() {
$scope.error = null;
$scope.addressbook = {
'address': '',
'label': ''
};
$scope.addAddressbookEntry = !$scope.addAddressbookEntry;
};
$scope.contactList = function() {
$scope.error = null;
addressbookService.list(function(err, ab) {
if (err) {
$scope.error = err;
return;
}
$scope.list = ab;
$scope.isEmptyList = lodash.isEmpty($scope.list);
$timeout(function() {
$scope.$digest();
});
});
};
$scope.setSelectedWalletsOpt = function(val) {
$scope.selectedWalletsOpt = val;
};
$scope.add = function(addressbook) {
$scope.error = null;
$timeout(function() {
addressbookService.add(addressbook, function(err, ab) {
if (err) {
$scope.error = err;
return;
}
$rootScope.$emit('Local/AddressbookUpdated', ab);
$scope.list = ab;
$scope.isEmptyList = lodash.isEmpty($scope.list);
$scope.editAddressbook = true;
$scope.toggleEditAddressbook();
$scope.$digest();
});
}, 100);
};
$scope.remove = function(addr) {
$scope.error = null;
$timeout(function() {
addressbookService.remove(addr, function(err, ab) {
if (err) {
$scope.error = err;
return;
}
$rootScope.$emit('Local/AddressbookUpdated', ab);
$scope.list = ab;
$scope.isEmptyList = lodash.isEmpty($scope.list);
if ($scope.isEmptyList)
$scope.editAddressbook = false;
$scope.$digest();
});
}, 100);
};
$scope.selectWallet = function(walletId, walletName) {
var client = profileService.getClient(walletId);
$scope.errorSelectedWallet = {};
profileService.isReady(client, function(err) {
if (err) $scope.errorSelectedWallet[walletId] = bwcError.msg(err);
else {
$scope.gettingAddress = true;
$scope.selectedWalletName = walletName;
addressService.getAddress(walletId, false, function(err, addr) {
$scope.gettingAddress = false;
if (err) {
self.error = err;
$scope.cancelAddress();
return;
}
self.setForm(addr);
$scope.cancel();
});
}
$timeout(function() {
$scope.$apply();
});
});
};
$scope.cancelAddress = function() {
self.resetForm();
$scope.cancel();
};
$scope.cancel = function() {
$scope.addressbookModal.hide();
};
});