Merge branch 'ref/design' of https://github.com/bitpay/bitpay-wallet into feature/onboarding_push_notifications

# Conflicts:
#	public/views/onboarding/notifications.html
#	src/js/controllers/onboarding/collectEmail.js
This commit is contained in:
Jamal Jackson 2016-09-14 11:42:33 -04:00
commit fdb5e467b9
28 changed files with 150 additions and 59 deletions

View file

@ -9,6 +9,7 @@ var modules = [
'angular-clipboard',
'ngLodash',
'ngCsv',
'angular-md5',
'bwcModule',
'pbkdf2Module',
'copayApp.filters',

View file

@ -50,6 +50,7 @@ angular.module('copayApp.controllers').controller('amountController', function($
$scope.toAddress = $stateParams.toAddress;
$scope.toName = $stateParams.toName;
$scope.toEmail = $stateParams.toEmail;
var config = configService.getSync().wallet.settings;
$scope.unitName = config.unitName;
@ -191,6 +192,7 @@ angular.module('copayApp.controllers').controller('amountController', function($
toAmount: amount * unitToSatoshi,
toAddress: $scope.toAddress,
toName: $scope.toName,
toEmail: $scope.toEmail
});
};
});

View file

@ -102,6 +102,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
$scope.toAddress = $stateParams.toAddress;
$scope.toName = $stateParams.toName;
$scope.toEmail = $stateParams.toEmail;
$scope.description = $stateParams.description;
$scope.paypro = $stateParams.paypro;
@ -119,12 +120,14 @@ angular.module('copayApp.controllers').controller('confirmController', function(
lodash.each(wallets, function(w) {
walletService.getStatus(w, {}, function(err, status) {
if (err) $log.error(err);
if (!status.availableBalanceSat) $log.debug('No balance available in: ' + w.name);
if (status.availableBalanceSat > amount) filteredWallets.push(w);
if (err || !status) {
$log.error(err);
} else {
if (!status.availableBalanceSat) $log.debug('No balance available in: ' + w.name);
if (status.availableBalanceSat > amount) filteredWallets.push(w);
}
if (++index == wallets.length) {
if (!lodash.isEmpty(filteredWallets)) {
$scope.wallets = lodash.clone(filteredWallets);
$scope.notAvailable = false;
@ -135,7 +138,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
$timeout(function() {
$scope.$apply();
}, 10);
});
return;
}
});

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $stateParams, $ionicPopup, profileService) {
angular.module('copayApp.controllers').controller('backupWarningController', function($scope, $state, $timeout, $stateParams, $ionicPopup, profileService) {
$scope.walletId = $stateParams.walletId;
$scope.openPopup = function() {
@ -11,7 +11,10 @@ angular.module('copayApp.controllers').controller('backupWarningController', fun
$scope.close = function() {
backupWarningPopup.close();
$state.go('onboarding.backup', {walletId: $stateParams.walletId, fromOnboarding: true});
$state.go('onboarding.backup', {
walletId: $stateParams.walletId,
fromOnboarding: true
});
};
}
});

View file

@ -4,7 +4,8 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
var isCordova = platformInfo.isCordova;
var isWP = platformInfo.isWP;
var usePushNotifications = true;
var usePushNotifications = isCordova && !isWP;
var requiresOptIn = platformInfo.isIOS;
var wallet = profileService.getWallet($stateParams.walletId);
var walletId = wallet.credentials.walletId;
@ -21,16 +22,29 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
if (err) $log.warn(err);
configService.set(opts, function(err) {
if (err) $log.warn(err);
if (!usePushNotifications) $state.go('onboarding.backupRequest', {
walletId: walletId
});
else $state.go('onboarding.notifications', {
walletId: walletId
});
$scope.goNextView();
});
});
};
$scope.goNextView = function() {
if (!usePushNotifications) {
$state.go('onboarding.backupRequest', {
walletId: walletId
});
}
else if (requiresOptIn) {
$state.go('onboarding.notifications', {
walletId: walletId
});
} else {
profileService.pushNotificationsInit();
$state.go('onboarding.backupRequest', {
walletId: walletId
});
}
};
$scope.confirm = function(emailForm) {
if (emailForm.$invalid) return;
$scope.confirmation = true;
@ -44,9 +58,4 @@ angular.module('copayApp.controllers').controller('collectEmailController', func
}, 1);
};
$scope.onboardingMailSkip = function() {
$state.go('onboarding.backupRequest', {
walletId: walletId
});
};
});

View file

@ -5,7 +5,9 @@ angular.module('copayApp.controllers').controller('notificationsController', fun
$scope.walletId = $stateParams.walletId;
$scope.allowNotif = function() {
profileService.pushNotificationsInit();
$state.go('onboarding.backupRequest');
$state.go('onboarding.backupRequest', {
walletId: $scope.walletId
});
}
});

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('tabSendController', function($scope, $log, $timeout, addressbookService, profileService, lodash, $state, walletService, incomingData ) {
angular.module('copayApp.controllers').controller('tabSendController', function($scope, $log, $timeout, addressbookService, profileService, lodash, $state, walletService, incomingData) {
var originalList;
@ -30,6 +30,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
contacts.push({
name: lodash.isObject(v) ? v.name : v,
address: k,
email: lodash.isObject(v) ? v.email : null,
getAddress: function(cb) {
return cb(null, k);
},
@ -76,7 +77,8 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
$log.debug('Got toAddress:' + addr + ' | ' + item.name);
return $state.transitionTo('send.amount', {
toAddress: addr,
toName: item.name
toName: item.name,
toEmail: item.email
})
});
};

View file

@ -113,15 +113,16 @@ angular.module('copayApp.directives')
}
}
})
.directive('contact', ['addressbookService',
function(addressbookService) {
.directive('contact', ['addressbookService', 'lodash',
function(addressbookService, lodash) {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var addr = attrs.address;
addressbookService.getLabel(addr, function(label) {
if (label) {
element.append(label);
addressbookService.get(addr, function(err, ab) {
if (ab) {
var name = lodash.isObject(ab) ? ab.name : ab;
element.append(name);
} else {
element.append(addr);
}

View file

@ -0,0 +1,20 @@
'use strict';
angular.module('copayApp.directives')
.directive('gravatar', function(md5) {
return {
restrict: 'AE',
replace: true,
scope: {
name: '@',
height: '@',
width: '@',
email: '@'
},
link: function(scope, el, attr) {
scope.emailHash = md5.createHash(scope.email || '');
},
template: '<img class="gravatar" alt="{{ name }}" height="{{ height }}" width="{{ width }}" src="https://secure.gravatar.com/avatar/{{ emailHash }}.jpg?s={{ width }}&d=mm">'
}
});

View file

@ -235,7 +235,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
template: '<ion-nav-view name="send"></ion-nav-view>'
})
.state('send.amount', {
url: '/amount/:toAddress/:toName',
url: '/amount/:toAddress/:toName/:toEmail',
views: {
'send': {
templateUrl: 'views/amount.html'
@ -243,7 +243,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
})
.state('send.confirm', {
url: '/confirm/:toAddress/:toName/:toAmount/:description/:paypro',
url: '/confirm/:toAddress/:toName/:toAmount/:toEmail/:description/:paypro',
views: {
'send': {
templateUrl: 'views/confirm.html'
@ -490,14 +490,14 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
})
/*
*
* Addressbook
*
*/
/*
*
* Addressbook
*
*/
.state('tabs.addressbook', {
.state('tabs.addressbook', {
url: '/addressbook',
views: {
'tab-settings': {
@ -769,6 +769,9 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
$ionicPlatform.ready(function() {
if (platformInfo.isCordova) {
if (screen.width < 768)
screen.lockOrientation('portrait');
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
@ -877,6 +880,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
var state = {};
state.name = toState.name;
state.toParams = toParams;
storageService.setLastState(JSON.stringify(state), function() {});
if (state.name != 'starting') storageService.setLastState(JSON.stringify(state), function() {});
});
});

View file

@ -268,9 +268,6 @@ angular.module('copayApp.services')
if (!val) {
return cb(new Error('NONAGREEDDISCLAIMER: Non agreed disclaimer'));
}
if (usePushNotifications)
root.pushNotificationsInit();
$rootScope.$emit('disclaimerAccepted');
return cb();
});
});
@ -873,12 +870,15 @@ angular.module('copayApp.services')
if (err) {
$log.warn('Error updating notifications:' + err);
} else {
var n = lodash.filter(wallet.cachedActivity.n, function(x) {
var n;
n = lodash.filter(wallet.cachedActivity.n, function(x) {
return !typeFilter1[x.type];
});
if (wallet.n == 1) {
var n = lodash.filter(n, function(x) {
if (wallet.m == 1) {
n = lodash.filter(n, function(x) {
return !typeFilter2[x.type];
});
}

View file

@ -937,6 +937,27 @@ input[type=number] {
}
}
/** Gravatar **/
.gravatar {
border-radius: 50%;
}
.gravatar-content {
position: relative;
height: 70px;
border-color: #172565;
background-color: #1e3186;
background-image: linear-gradient(0deg, #172565, #172565 0%, transparent 0%);
color: #fff;
margin-bottom: 50px;
.gravatar {
position: absolute;
bottom: -30px;
left: 41%;
}
}
/* Spinner */
.item-icon-left ion-spinner {
@ -961,6 +982,7 @@ input[type=number] {
@import 'mixins/mixins';
@import "views/add";
@import "views/amount";
@import "views/confirm";
@import "views/tab-home";
@import "views/tab-receive";
@import "views/tab-send";

View file

@ -9,7 +9,11 @@
padding-left: 48px;
}
}
.send-gravatar {
left: 11px;
position: absolute;
top: 10px;
}
.amount-pane {
position: absolute;
top: 125px;

View file

@ -0,0 +1,7 @@
#view-confirm {
.send-gravatar {
left: 11px;
position: absolute;
top: 10px;
}
}

View file

@ -11,4 +11,9 @@
padding-bottom: 1px;
}
}
.send-gravatar {
left: 11px;
position: absolute;
top: 10px;
}
}