diff --git a/public/index.html b/public/index.html index ca09c8051..8a16947b8 100644 --- a/public/index.html +++ b/public/index.html @@ -20,6 +20,7 @@ + diff --git a/public/views/tab-receive.html b/public/views/tab-receive.html index 40380bc47..a7dc9a38e 100644 --- a/public/views/tab-receive.html +++ b/public/views/tab-receive.html @@ -1,5 +1,42 @@ - - - Welcome to Receive + + Receive + + + + + + + + + + + + Share address + + + + Next Address + + + + {{generatingAddress ? '...' : addr}} + + + + + + + + + {{item.name || item.id}} + + {{item.m}}-of-{{item.n}} + + + + + + + - + diff --git a/src/css/ionic-migration.css b/src/css/ionic-migration.css index ab7e5f347..130b0e3cd 100644 --- a/src/css/ionic-migration.css +++ b/src/css/ionic-migration.css @@ -28,6 +28,10 @@ display: none !important; } +.swiper-container-horizontal>.swiper-pagination{ + display: none; +} + .bar .title { font-size: 14px; line-height: 48px; diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js new file mode 100644 index 000000000..87c146516 --- /dev/null +++ b/src/js/controllers/tab-receive.js @@ -0,0 +1,112 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('tabReceiveController', function($scope, $ionicPopover, $timeout, platformInfo, nodeWebkit, addressService, profileService, configService, lodash) { + + $scope.init = function() { + $scope.index = 0; + $scope.isCordova = platformInfo.isCordova; + $scope.isNW = platformInfo.isNW; + $scope.setWallets(); + $scope.setAddress(false); + $scope.options = { + loop: false, + effect: 'flip', + speed: 500, + spaceBetween: 100 + } + + $scope.$on("$ionicSlides.sliderInitialized", function(event, data) { + // data.slider is the instance of Swiper + $scope.slider = data.slider; + }); + + $scope.$on("$ionicSlides.slideChangeStart", function(event, data) { + console.log('Slide change is beginning'); + }); + + $scope.$on("$ionicSlides.slideChangeEnd", function(event, data) { + $scope.index = data.slider.activeIndex; + $scope.setAddress(false); + }); + } + + $scope.copyToClipboard = function(addr, $event) { + + var showPopover = function() { + + $ionicPopover.fromTemplateUrl('views/includes/copyToClipboard.html', { + scope: $scope + }).then(function(popover) { + $scope.popover = popover; + $scope.popover.show($event); + }); + + $scope.close = function() { + $scope.popover.hide(); + } + + $timeout(function() { + $scope.popover.hide(); //close the popover after 0.7 seconds + }, 700); + + $scope.$on('$destroy', function() { + $scope.popover.remove(); + }); + }; + + if ($scope.isCordova) { + window.cordova.plugins.clipboard.copy(addr); + window.plugins.toast.showShortCenter(gettextCatalog.getString('Copied to clipboard')); + } else if ($scope.isNW) { + nodeWebkit.writeToClipboard(addr); + showPopover($event); + } + }; + + $scope.shareAddress = function(addr) { + if ($scope.isCordova) { + window.plugins.socialsharing.share('bitcoin:' + addr, null, null, null); + } + }; + + $scope.setAddress = function(forceNew) { + $scope.addrError = null; + $scope.generatingAddress = true; + $timeout(function() { + addressService.getAddress($scope.wallets[$scope.index].id, forceNew, function(err, addr) { + $scope.generatingAddress = false; + if (err) { + $scope.addrError = err; + } else { + if (addr) + $scope.addr = addr; + } + $scope.$digest(); + }); + }); + }; + + + $scope.setWallets = function() { + if (!profileService.profile) return; + + var config = configService.getSync(); + config.colorFor = config.colorFor || {}; + config.aliasFor = config.aliasFor || {}; + + // Sanitize empty wallets (fixed in BWC 1.8.1, and auto fixed when wallets completes) + var credentials = lodash.filter(profileService.profile.credentials, 'walletName'); + var ret = lodash.map(credentials, function(c) { + return { + m: c.m, + n: c.n, + name: config.aliasFor[c.walletId] || c.walletName, + id: c.walletId, + color: config.colorFor[c.walletId] || '#4A90E2', + }; + }); + + $scope.wallets = lodash.sortBy(ret, 'name'); + }; + +});