Merge branch 'ref/design' of https://github.com/bitpay/bitpay-wallet into feature/home_views_polish
# Conflicts: # public/views/tab-home.html
This commit is contained in:
commit
fda7e641a1
60 changed files with 288 additions and 166 deletions
|
|
@ -2,11 +2,8 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>Recent Activity</ion-nav-title>
|
<ion-nav-title>Recent Activity</ion-nav-title>
|
||||||
<ion-nav-buttons side="primary">
|
<ion-nav-back-button>
|
||||||
<button class="button back-button" ui-sref="tabs.home">
|
</ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</button>
|
|
||||||
</ion-nav-buttons>
|
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content class="padding" ng-controller="activityController" ng-init="init()">
|
<ion-content class="padding" ng-controller="activityController" ng-init="init()">
|
||||||
|
|
||||||
|
|
@ -19,7 +16,7 @@
|
||||||
|
|
||||||
<div ng-if="!fetchingNotifications">
|
<div ng-if="!fetchingNotifications">
|
||||||
<div class="list card">
|
<div class="list card">
|
||||||
<div class="item" ng-repeat="x in notifications" ng-click="x.action()">
|
<div class="item" ng-repeat="notification in notifications" ng-click="openNotificationModal(notification)">
|
||||||
<span ng-include="'views/includes/walletActivity.html'"></span>
|
<span ng-include="'views/includes/walletActivity.html'"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Add wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Add wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>
|
<ion-nav-title>
|
||||||
<span translate>Add entry</span>
|
<span translate>Add entry</span>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>
|
<ion-nav-title>
|
||||||
<span translate>Addressbook</span>
|
<span translate>Addressbook</span>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>
|
<ion-nav-title>
|
||||||
<span translate>Addressbook</span>
|
<span translate>Addressbook</span>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Amazon.com Gift Cards</ion-nav-title>
|
<ion-nav-title>Amazon.com Gift Cards</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view id="view-amount">
|
<ion-view id="view-amount">
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Buy</ion-nav-title>
|
<ion-nav-title>Buy</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
@ -45,6 +44,7 @@
|
||||||
max="500"
|
max="500"
|
||||||
ng-model="fiat"
|
ng-model="fiat"
|
||||||
ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/"
|
ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/"
|
||||||
|
step="0.01"
|
||||||
autocomplete="off" ignore-mouse-wheel required>
|
autocomplete="off" ignore-mouse-wheel required>
|
||||||
<a class="postfix">USD</a>
|
<a class="postfix">USD</a>
|
||||||
</label>
|
</label>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Buy</ion-nav-title>
|
<ion-nav-title>Buy</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-buttons side="primary">
|
<ion-nav-back-button>
|
||||||
<button class="button back-button" ui-sref="tabs.home">
|
</ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</button>
|
|
||||||
</ion-nav-buttons>
|
|
||||||
<ion-nav-title translate>Buy and sell</ion-nav-title>
|
<ion-nav-title translate>Buy and sell</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content>
|
<ion-content>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view id="view-confirm" ng-controller="confirmController" ng-init="init()">
|
<ion-view id="view-confirm" ng-controller="confirmController" ng-init="init()">
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Export wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Export wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Glidera</ion-nav-title>
|
<ion-nav-title>Glidera</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-buttons side="primary">
|
<ion-nav-back-button>
|
||||||
<button class="button back-button" ui-sref="tabs.home">
|
</ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</button>
|
|
||||||
</ion-nav-buttons>
|
|
||||||
<ion-nav-title>Glidera</ion-nav-title>
|
<ion-nav-title>Glidera</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Import Wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Import Wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,65 @@
|
||||||
<span class="wallet-activity">
|
<span class="wallet-activity">
|
||||||
<div ng-if="x.type == 'NewCopayer' && x.wallet.n>1" translate>
|
<div ng-if="notification.type == 'NewCopayer' && notification.wallet.n>1" translate>
|
||||||
Copayer joined
|
Copayer joined
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="x.type == 'NewCopayer' && x.wallet.n==1" translate>
|
<div ng-if="notification.type == 'NewCopayer' && notification.wallet.n==1" translate>
|
||||||
Wallet created
|
Wallet created
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="x.type == 'NewOutgoingTx'">
|
<div ng-if="notification.type == 'NewOutgoingTx'">
|
||||||
<span translate>Payment Sent </span>
|
<span translate>Payment Sent </span>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}
|
{{notification.amountStr}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div ng-if="x.type == 'NewIncomingTx'">
|
<div ng-if="notification.type == 'NewIncomingTx'">
|
||||||
<span translate>Payment Received</span>
|
<span translate>Payment Received</span>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}
|
{{notification.amountStr}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="x.type == 'TxProposalRemoved'">
|
<div ng-if="notification.type == 'TxProposalRemoved'">
|
||||||
<span translate>Proposal Deleted</span>:
|
<span translate>Proposal Deleted</span>:
|
||||||
<b>{{x.message}}</b>
|
<b>{{notification.message}}</b>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}:
|
{{notification.amountStr}}:
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="x.type == 'TxProposalRejectedBy'">
|
<div ng-if="notification.type == 'TxProposalRejectedBy'">
|
||||||
<span translate>Proposal Rejected</span>:
|
<span translate>Proposal Rejected</span>:
|
||||||
<b>{{x.message}}</b>
|
<b>{{notification.message}}</b>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}:
|
{{notification.amountStr}}:
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span ng-if="x.type == 'NewTxProposal'">
|
<span ng-if="notification.type == 'NewTxProposal'">
|
||||||
<span translate>New Proposal</span>:
|
<span translate>New Proposal</span>:
|
||||||
<b>{{x.message}}</b>
|
<b>{{notification.message}}</b>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}
|
{{notification.amountStr}}
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span ng-if="x.type == 'TxProposalAcceptedBy'">
|
<span ng-if="notification.type == 'TxProposalAcceptedBy'">
|
||||||
<span translate>Proposal Accepted</span>:
|
<span translate>Proposal Accepted</span>:
|
||||||
<b>{{x.message}}</b>
|
<b>{{notification.message}}</b>
|
||||||
<div class="wallet-activity-amount">
|
<div class="wallet-activity-amount">
|
||||||
{{x.amountStr}}
|
{{notification.amountStr}}
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<p class="wallet-activity-note">
|
<p class="wallet-activity-note">
|
||||||
<!-- {{x.types}} -->
|
<!-- {{notification.types}} -->
|
||||||
<i class="icon ion-record wallet-activity-note-child" ng-style="{'color':x.wallet.color}"></i>
|
<i class="icon ion-record wallet-activity-note-child" ng-style="{'color':notification.wallet.color}"></i>
|
||||||
<span ng-if="x.creatorName" class="wallet-activity-note-child">{{ x.creatorName}}@</span>
|
<span ng-if="notification.creatorName" class="wallet-activity-note-child">{{ notification.creatorName}}@</span>
|
||||||
<span class="wallet-activity-note-child">{{x.wallet.name}}</span>
|
<span class="wallet-activity-note-child">{{notification.wallet.name}}</span>
|
||||||
<time class="wallet-activity-note-child">{{ x.createdOn * 1000 | amTimeAgo}}</time>
|
<time class="wallet-activity-note-child">{{ notification.createdOn * 1000 | amTimeAgo}}</time>
|
||||||
</p>
|
</p>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>{{'Join shared wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Join shared wallet' | translate}}</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<ion-modal-view ng-controller="txDetailsController" ng-init="init()" id="tx-details">
|
<ion-modal-view ng-controller="txDetailsController" ng-init="init()" id="tx-details">
|
||||||
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color':color}">
|
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color': color}">
|
||||||
<button class="button button-clear" ng-click="cancel()">
|
<button class="button button-clear" ng-click="cancel()">
|
||||||
{{'Close' | translate}}
|
{{'Close' | translate}}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -9,11 +9,11 @@
|
||||||
</ion-header-bar>
|
</ion-header-bar>
|
||||||
|
|
||||||
<ion-content>
|
<ion-content>
|
||||||
<div class="header-modal text-center" ng-init="getAlternativeAmount(btx); showRate = false">
|
<div class="header-modal text-center" ng-init="showRate = false">
|
||||||
<div ng-show="btx.action != 'invalid'">
|
<div ng-show="btx.action != 'invalid'">
|
||||||
|
|
||||||
<i class="icon big-icon-svg">
|
<i class="icon big-icon-svg">
|
||||||
<img src="img/icon-wallet.svg" ng-style="{'background-color': wallet.color}" class="bg"/>
|
<img src="img/icon-wallet.svg" ng-style="{'background-color': color}" class="bg"/>
|
||||||
</i>
|
</i>
|
||||||
|
|
||||||
<div class="size-36" copy-to-clipboard="btx.amountStr">
|
<div class="size-36" copy-to-clipboard="btx.amountStr">
|
||||||
|
|
@ -30,23 +30,23 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-show="btx.action == 'sent'">
|
<div ng-show="btx.action == 'sent'">
|
||||||
<span translate>Sent from</span> {{wallet.credentials.walletName}}
|
<span translate>Sent from</span> {{wallet.credentials.walletName}}
|
||||||
<div class="padding-vertical">
|
<div class="padding-vertical">
|
||||||
<i class="icon ion-ios-arrow-thin-down size-24"></i>
|
<i class="icon ion-ios-arrow-thin-down size-24"></i>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-show="btx.action == 'received'">
|
<div ng-show="btx.action == 'received'">
|
||||||
<div class="padding-vertical">
|
<div class="padding-vertical">
|
||||||
<i class="icon ion-ios-arrow-thin-up size-24"></i>
|
<i class="icon ion-ios-arrow-thin-up size-24"></i>
|
||||||
</div>
|
|
||||||
<span translate>Received Funds</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
<span translate>Received Funds</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-show="btx.action == 'moved'">
|
<div ng-show="btx.action == 'moved'">
|
||||||
<span translate>Moved Funds</span>
|
<span translate>Moved Funds</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-show="btx.action == 'invalid'">
|
<div ng-show="btx.action == 'invalid'">
|
||||||
-
|
-
|
||||||
|
|
@ -75,14 +75,22 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div translate>Created by</div>
|
<div ng-if="btx.action == 'received'">
|
||||||
<span>{{btx.creatorName}}</span>
|
<span translate>Date</span>
|
||||||
<span class="item-note">
|
<span class="item-note">
|
||||||
<time>{{ btx.createdOn * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
|
<time>{{ btx.time * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div ng-if="btx.action == 'sent'">
|
||||||
|
<div translate>Created by</div>
|
||||||
|
<span>{{btx.creatorName}}</span>
|
||||||
|
<span class="item-note">
|
||||||
|
<time>{{ btx.createdOn * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item" ng-show="btx.action != 'received'" copy-to-clipboard="btx.feeStr">
|
<div class="item" ng-if="btx.action != 'received' && btx.feeLevel" copy-to-clipboard="btx.feeStr">
|
||||||
<div translate>Fee</div>
|
<div translate>Fee</div>
|
||||||
<span class="enable_text_select">{{btx.feeLevel}} ({{btx.feeStr}})</span>
|
<span class="enable_text_select">{{btx.feeLevel}} ({{btx.feeStr}})</span>
|
||||||
<span class="right">
|
<span class="right">
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Sweep paper wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Sweep paper wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesController" ng-init="init()">
|
<ion-content ng-controller="preferencesController" ng-init="init()">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesAbout">
|
<ion-content ng-controller="preferencesAbout">
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Advanced Preferences' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Advanced Preferences' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesAdvancedController">
|
<ion-content ng-controller="preferencesAdvancedController">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesAliasController" >
|
<ion-content ng-controller="preferencesAliasController" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesAltCurrencyController" ng-init="init()" >
|
<ion-content ng-controller="preferencesAltCurrencyController" ng-init="init()" >
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-buttons side="primary">
|
<ion-nav-back-button>
|
||||||
<button class="button back-button" ui-sref="bitpayCard.main">
|
</ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</button>
|
|
||||||
</ion-nav-buttons>
|
|
||||||
<ion-nav-title>Preferences</ion-nav-title>
|
<ion-nav-title>Preferences</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesBwsUrlController">
|
<ion-content ng-controller="preferencesBwsUrlController">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesColorController" >
|
<ion-content ng-controller="preferencesColorController" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesDeleteWalletController" >
|
<ion-content ng-controller="preferencesDeleteWalletController" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesDeleteWordsController" >
|
<ion-content ng-controller="preferencesDeleteWordsController" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesEmailController" >
|
<ion-content ng-controller="preferencesEmailController" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Preferences</ion-nav-title>
|
<ion-nav-title>Preferences</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesHistory" ng-init="csvHistory()">
|
<ion-content ng-controller="preferencesHistory" ng-init="csvHistory()">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesInformation" ng-init="init()">
|
<ion-content ng-controller="preferencesInformation" ng-init="init()">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesLanguageController" ng-init="init()" >
|
<ion-content ng-controller="preferencesLanguageController" ng-init="init()" >
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesLogs" ng-init="init()">
|
<ion-content ng-controller="preferencesLogs" ng-init="init()">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="preferencesUnitController" ng-init="init()" >
|
<ion-content ng-controller="preferencesUnitController" ng-init="init()" >
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
|
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>Pending Proposals</ion-nav-title>
|
<ion-nav-title>
|
||||||
<ion-nav-buttons side="primary">
|
{{'Pending Proposals'|translate}}
|
||||||
<button class="button back-button" ui-sref="tabs.home">
|
</ion-nav-title>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
<ion-nav-back-button>
|
||||||
</button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-buttons>
|
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content class="padding" ng-controller="proposalsController" ng-init="init()">
|
<ion-content class="padding" ng-controller="proposalsController" ng-init="init()">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-title>Sell</ion-nav-title>
|
<ion-nav-title>Sell</ion-nav-title>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
<h1> Starting... </h1>
|
|
||||||
|
|
||||||
Splash screen me...
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Create Personal Wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Create Personal Wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Create Shared Wallet' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Create Shared Wallet' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,12 @@
|
||||||
<span class="badge badge-assertive" ng-show="txpsN>3" translate> {{txpsN}}</span>
|
<span class="badge badge-assertive" ng-show="txpsN>3" translate> {{txpsN}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a ng-repeat="tx in txps" class="item" ng-click="openTxpModal(tx)">
|
<a ng-repeat="tx in txps" class="item" ng-click="openTxpModal(tx)">
|
||||||
<span ng-include="'views/includes/txp.html'"></span>
|
<span ng-include="'views/includes/txp.html'"></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="list card" ng-if="notifications.length > 0">
|
<div class="list card" ng-if="notifications[0]">
|
||||||
<a class="item item-icon-right item-heading" ui-sref="tabs.activity" translate>
|
<a class="item item-icon-right item-heading" ui-sref="tabs.activity" translate>
|
||||||
Recent Activity
|
Recent Activity
|
||||||
<i class="icon nav-item-arrow-right"></i>
|
<i class="icon nav-item-arrow-right"></i>
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
<ion-spinner icon="lines"></ion-spinner>
|
<ion-spinner icon="lines"></ion-spinner>
|
||||||
<div translate>Updating activity. Please stand by</div>
|
<div translate>Updating activity. Please stand by</div>
|
||||||
</span>
|
</span>
|
||||||
<a class="item activity" ng-repeat="x in notifications" ng-click="x.action()">
|
<a class="item activity" ng-repeat="notification in notifications" ng-click="openNotificationModal(notification)">
|
||||||
<span ng-include="'views/includes/walletActivity.html'"></span>
|
<span ng-include="'views/includes/walletActivity.html'"></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<ion-view>
|
<ion-view>
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar class="bar-royal">
|
<ion-nav-bar class="bar-royal">
|
||||||
<ion-nav-title>{{'Translators' | translate}}</ion-nav-title>
|
<ion-nav-title>{{'Translators' | translate}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
</ion-nav-bar>
|
</ion-nav-bar>
|
||||||
<ion-content ng-controller="translatorsController">
|
<ion-content ng-controller="translatorsController">
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<ion-nav-bar ng-style="{'background-color': walletDetailsColor}">
|
<ion-nav-bar ng-style="{'background-color': walletDetailsColor}">
|
||||||
<ion-nav-title>{{walletDetailsName}}</ion-nav-title>
|
<ion-nav-title>{{walletDetailsName}}</ion-nav-title>
|
||||||
<ion-nav-back-button>
|
<ion-nav-back-button>
|
||||||
<i class="icon ion-ios-arrow-thin-left"></i>
|
|
||||||
</ion-nav-back-button>
|
</ion-nav-back-button>
|
||||||
<ion-nav-buttons side="secondary">
|
<ion-nav-buttons side="secondary">
|
||||||
<button class="button back-button" ng-click="startSearch(); openSearchModal()">
|
<button class="button back-button" ng-click="startSearch(); openSearchModal()">
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('activityController',
|
angular.module('copayApp.controllers').controller('activityController',
|
||||||
function($rootScope, $timeout, $scope, $state, lodash, profileService, walletService, configService, txFormatService, $ionicModal, $log, platformInfo) {
|
function($timeout, $scope, $log, $ionicModal, lodash, txpModalService, profileService, walletService, ongoingProcess, popupService, gettextCatalog) {
|
||||||
var self = this;
|
$scope.openTxpModal = txpModalService.open;
|
||||||
|
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.fetchingNotifications = true;
|
$scope.fetchingNotifications = true;
|
||||||
|
|
@ -14,9 +13,57 @@ angular.module('copayApp.controllers').controller('activityController',
|
||||||
}
|
}
|
||||||
$scope.fetchingNotifications = false;
|
$scope.fetchingNotifications = false;
|
||||||
$scope.notifications = n;
|
$scope.notifications = n;
|
||||||
$timeout(function() {
|
|
||||||
$scope.$apply();
|
profileService.getTxps({}, function(err, txps, n) {
|
||||||
}, 1);
|
if (err) $log.error(err);
|
||||||
|
$scope.txps = txps;
|
||||||
|
$timeout(function() {
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
|
$scope.openNotificationModal = function(n) {
|
||||||
|
if (n.txid) {
|
||||||
|
openTxModal(n);
|
||||||
|
} else {
|
||||||
|
var txp = lodash.find($scope.txps, {
|
||||||
|
id: n.txpId
|
||||||
|
});
|
||||||
|
if (txp) txpModalService.open(txp);
|
||||||
|
else {
|
||||||
|
$log.warn('No txp found');
|
||||||
|
return popupService.showAlert(null, gettextCatalog.getString('Transaction not found'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var openTxModal = function(n) {
|
||||||
|
var wallet = profileService.getWallet(n.walletId);
|
||||||
|
|
||||||
|
ongoingProcess.set('loadingTxInfo', true);
|
||||||
|
walletService.getTx(wallet, n.txid, function(err, tx) {
|
||||||
|
ongoingProcess.set('loadingTxInfo', false);
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
$log.error(err);
|
||||||
|
return popupService.showAlert(gettextCatalog.getString('Error'), err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tx) {
|
||||||
|
$log.warn('No tx found');
|
||||||
|
return popupService.showAlert(null, gettextCatalog.getString('Transaction not found'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.wallet = wallet;
|
||||||
|
$scope.btx = lodash.cloneDeep(tx);
|
||||||
|
$ionicModal.fromTemplateUrl('views/modals/tx-details.html', {
|
||||||
|
scope: $scope
|
||||||
|
}).then(function(modal) {
|
||||||
|
$scope.txDetailsModal = modal;
|
||||||
|
$scope.txDetailsModal.show();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ angular.module('copayApp.controllers').controller('buyAmazonController',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.confirm = function() {
|
this.confirm = function() {
|
||||||
var title = gettextCatalog.getString('Confirm Amazon.com Gift Card purchase for ${{amount}} USD', {amount: $scope.fiat});
|
var message = gettextCatalog.getString('Amazon.com Gift Card purchase for ${{amount}} USD', {amount: $scope.fiat});
|
||||||
var ok = gettextCatalog.getString('Buy');
|
var ok = gettextCatalog.getString('Buy');
|
||||||
popupService.showConfirm(title, null, ok, null, function(res) {
|
popupService.showConfirm(null, message, ok, null, function(res) {
|
||||||
if (res) self.createTx();
|
if (res) self.createTx();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,18 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('txDetailsController', function($log, $timeout, $scope, $filter, $stateParams, lodash, gettextCatalog, profileService, configService, txFormatService, externalLinkService, popupService) {
|
angular.module('copayApp.controllers').controller('txDetailsController', function($log, $timeout, $scope, $filter, $stateParams, ongoingProcess, walletService, lodash, gettextCatalog, profileService, configService, txFormatService, externalLinkService, popupService) {
|
||||||
var self = $scope.self;
|
|
||||||
var wallet = profileService.getWallet($stateParams.walletId);
|
|
||||||
var config = configService.getSync();
|
var config = configService.getSync();
|
||||||
var configWallet = config.wallet;
|
var configWallet = config.wallet;
|
||||||
var walletSettings = configWallet.settings;
|
var walletSettings = configWallet.settings;
|
||||||
|
var wallet;
|
||||||
|
$scope.title = gettextCatalog.getString('Transaction');
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
|
wallet = $scope.wallet;
|
||||||
$scope.alternativeIsoCode = walletSettings.alternativeIsoCode;
|
$scope.alternativeIsoCode = walletSettings.alternativeIsoCode;
|
||||||
$scope.color = wallet.color;
|
$scope.color = wallet.color;
|
||||||
$scope.copayerId = wallet.credentials.copayerId;
|
$scope.copayerId = wallet.credentials.copayerId;
|
||||||
$scope.isShared = wallet.credentials.n > 1;
|
$scope.isShared = wallet.credentials.n > 1;
|
||||||
|
|
||||||
$scope.btx.amountStr = txFormatService.formatAmount($scope.btx.amount, true) + ' ' + walletSettings.unitName;
|
|
||||||
$scope.btx.feeStr = txFormatService.formatAmount($scope.btx.fees, true) + ' ' + walletSettings.unitName;
|
|
||||||
$scope.btx.feeLevel = walletSettings.feeLevel;
|
$scope.btx.feeLevel = walletSettings.feeLevel;
|
||||||
|
|
||||||
if ($scope.btx.action != 'invalid') {
|
if ($scope.btx.action != 'invalid') {
|
||||||
|
|
@ -22,7 +20,30 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
|
||||||
if ($scope.btx.action == 'received') $scope.title = gettextCatalog.getString('Received Funds');
|
if ($scope.btx.action == 'received') $scope.title = gettextCatalog.getString('Received Funds');
|
||||||
if ($scope.btx.action == 'moved') $scope.title = gettextCatalog.getString('Moved Funds');
|
if ($scope.btx.action == 'moved') $scope.title = gettextCatalog.getString('Moved Funds');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateMemo();
|
||||||
initActionList();
|
initActionList();
|
||||||
|
getAlternativeAmount();
|
||||||
|
|
||||||
|
$timeout(function() {
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function updateMemo() {
|
||||||
|
wallet.getTxNote({
|
||||||
|
txid: $scope.btx.txid
|
||||||
|
}, function(err, note) {
|
||||||
|
if (err || !note) {
|
||||||
|
$log.debug(gettextCatalog.getString('Could not fetch transaction note'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.note = note;
|
||||||
|
$timeout(function() {
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function initActionList() {
|
function initActionList() {
|
||||||
|
|
@ -60,12 +81,12 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.showCommentPopup = function() {
|
$scope.showCommentPopup = function() {
|
||||||
popupService.showPrompt(gettextCatalog.getString('Memo'), ' ', {}, function(res) {
|
popupService.showPrompt(gettextCatalog.getString('Memo'), ' ', {}, function(text) {
|
||||||
$log.debug('Saving memo');
|
$log.debug('Saving memo');
|
||||||
|
|
||||||
var args = {
|
var args = {
|
||||||
txid: $scope.btx.txid,
|
txid: $scope.btx.txid,
|
||||||
body: res
|
body: text
|
||||||
};
|
};
|
||||||
|
|
||||||
wallet.editTxNote(args, function(err) {
|
wallet.editTxNote(args, function(err) {
|
||||||
|
|
@ -77,7 +98,7 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
|
||||||
$scope.btx.note = null;
|
$scope.btx.note = null;
|
||||||
if (args.body) {
|
if (args.body) {
|
||||||
$scope.btx.note = {};
|
$scope.btx.note = {};
|
||||||
$scope.btx.note.body = res;
|
$scope.btx.note.body = text;
|
||||||
$scope.btx.note.editedByName = wallet.credentials.copayerName;
|
$scope.btx.note.editedByName = wallet.credentials.copayerName;
|
||||||
$scope.btx.note.editedOn = Math.floor(Date.now() / 1000);
|
$scope.btx.note.editedOn = Math.floor(Date.now() / 1000);
|
||||||
}
|
}
|
||||||
|
|
@ -85,12 +106,12 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
|
||||||
|
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
$scope.$apply();
|
$scope.$apply();
|
||||||
}, 200);
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.getAlternativeAmount = function() {
|
var getAlternativeAmount = function() {
|
||||||
var satToBtc = 1 / 100000000;
|
var satToBtc = 1 / 100000000;
|
||||||
|
|
||||||
wallet.getFiatRate({
|
wallet.getFiatRate({
|
||||||
|
|
@ -123,5 +144,4 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
|
||||||
$scope.cancel = function() {
|
$scope.cancel = function() {
|
||||||
$scope.txDetailsModal.hide();
|
$scope.txDetailsModal.hide();
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('tabHomeController',
|
angular.module('copayApp.controllers').controller('tabHomeController',
|
||||||
function($rootScope, $timeout, $scope, $state, $stateParams, $ionicScrollDelegate, lodash, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window) {
|
function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, gettextCatalog, lodash, popupService, ongoingProcess, profileService, walletService, configService, $log, platformInfo, storageService, txpModalService, $window) {
|
||||||
$scope.externalServices = {};
|
$scope.externalServices = {};
|
||||||
$scope.bitpayCardEnabled = true; // TODO
|
$scope.bitpayCardEnabled = true; // TODO
|
||||||
$scope.openTxpModal = txpModalService.open;
|
$scope.openTxpModal = txpModalService.open;
|
||||||
|
|
@ -16,6 +16,49 @@ angular.module('copayApp.controllers').controller('tabHomeController',
|
||||||
$scope.coinbaseEnabled = config.coinbase.enabled && !isWindowsPhoneApp;
|
$scope.coinbaseEnabled = config.coinbase.enabled && !isWindowsPhoneApp;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$scope.openNotificationModal = function(n) {
|
||||||
|
if (n.txid) {
|
||||||
|
openTxModal(n);
|
||||||
|
} else {
|
||||||
|
var txp = lodash.find($scope.txps, {
|
||||||
|
id: n.txpId
|
||||||
|
});
|
||||||
|
if (txp) txpModalService.open(txp);
|
||||||
|
else {
|
||||||
|
$log.warn('No txp found');
|
||||||
|
return popupService.showAlert(null, gettextCatalog.getString('Transaction not found'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var openTxModal = function(n) {
|
||||||
|
var wallet = profileService.getWallet(n.walletId);
|
||||||
|
|
||||||
|
ongoingProcess.set('loadingTxInfo', true);
|
||||||
|
walletService.getTx(wallet, n.txid, function(err, tx) {
|
||||||
|
ongoingProcess.set('loadingTxInfo', false);
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
$log.error(err);
|
||||||
|
return popupService.showAlert(gettextCatalog.getString('Error'), err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tx) {
|
||||||
|
$log.warn('No tx found');
|
||||||
|
return popupService.showAlert(null, gettextCatalog.getString('Transaction not found'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.wallet = wallet;
|
||||||
|
$scope.btx = lodash.cloneDeep(tx);
|
||||||
|
$ionicModal.fromTemplateUrl('views/modals/tx-details.html', {
|
||||||
|
scope: $scope
|
||||||
|
}).then(function(modal) {
|
||||||
|
$scope.txDetailsModal = modal;
|
||||||
|
$scope.txDetailsModal.show();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$scope.openWallet = function(wallet) {
|
$scope.openWallet = function(wallet) {
|
||||||
if (!wallet.isComplete()) {
|
if (!wallet.isComplete()) {
|
||||||
return $state.go('tabs.copayers', {
|
return $state.go('tabs.copayers', {
|
||||||
|
|
@ -112,7 +155,9 @@ angular.module('copayApp.controllers').controller('tabHomeController',
|
||||||
$scope.hideHomeTip = function() {
|
$scope.hideHomeTip = function() {
|
||||||
$scope.homeTip = null;
|
$scope.homeTip = null;
|
||||||
$state.transitionTo($state.current, null, {
|
$state.transitionTo($state.current, null, {
|
||||||
reload: false, inherit: false, notify: false
|
reload: false,
|
||||||
|
inherit: false,
|
||||||
|
notify: false
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -152,18 +152,13 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
|
||||||
$scope.close = function() {
|
$scope.close = function() {
|
||||||
$scope.searchModal.hide();
|
$scope.searchModal.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.openTxModal = function(btx) {
|
$scope.openTxModal = function(btx) {
|
||||||
var self = this;
|
|
||||||
|
|
||||||
$scope.btx = lodash.cloneDeep(btx);
|
$scope.btx = lodash.cloneDeep(btx);
|
||||||
$scope.self = self;
|
$scope.walletId = wallet.id;
|
||||||
|
|
||||||
$ionicModal.fromTemplateUrl('views/modals/tx-details.html', {
|
$ionicModal.fromTemplateUrl('views/modals/tx-details.html', {
|
||||||
scope: $scope,
|
scope: $scope
|
||||||
hideDelay: 500
|
|
||||||
}).then(function(modal) {
|
}).then(function(modal) {
|
||||||
$scope.txDetailsModal = modal;
|
$scope.txDetailsModal = modal;
|
||||||
$scope.txDetailsModal.show();
|
$scope.txDetailsModal.show();
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
|
||||||
$ionicConfigProvider.navBar.positionSecondaryButtons('right');
|
$ionicConfigProvider.navBar.positionSecondaryButtons('right');
|
||||||
|
|
||||||
// NAV BACK-BUTTON TEXT/ICON
|
// NAV BACK-BUTTON TEXT/ICON
|
||||||
$ionicConfigProvider.backButton.icon('ion-arrow-left-c').text('');
|
$ionicConfigProvider.backButton.icon('icon ion-ios-arrow-thin-left').text('');
|
||||||
$ionicConfigProvider.backButton.previousTitleText(false);
|
$ionicConfigProvider.backButton.previousTitleText(false);
|
||||||
|
|
||||||
$logProvider.debugEnabled(true);
|
$logProvider.debugEnabled(true);
|
||||||
|
|
@ -106,7 +106,11 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
|
||||||
|
|
||||||
.state('starting', {
|
.state('starting', {
|
||||||
url: '/starting',
|
url: '/starting',
|
||||||
templateUrl: 'views/starting.html'
|
template: '<ion-view id="starting"><ion-content>{{starting}}</ion-content></ion-view>',
|
||||||
|
controller: function($scope, $log, gettextCatalog) {
|
||||||
|
$log.info('Starting...');
|
||||||
|
$scope.starting = gettextCatalog.getString('Starting...');
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
angular.module('copayApp.services')
|
angular.module('copayApp.services')
|
||||||
.factory('logHeader', function($log, platformInfo) {
|
.factory('logHeader', function($window, $log, platformInfo) {
|
||||||
$log.info('Starting Copay v' + window.version + ' #' + window.commitHash);
|
$log.info($window.appConfig.nameCase + ' v' + window.version + ' #' + window.commitHash);
|
||||||
$log.info('Client: '+ JSON.stringify(platformInfo) );
|
$log.info('Client: '+ JSON.stringify(platformInfo) );
|
||||||
return {};
|
return {};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ angular.module('copayApp.services').factory('ongoingProcess', function($log, $ti
|
||||||
'sweepingWallet': gettext('Sweeping Wallet...'),
|
'sweepingWallet': gettext('Sweeping Wallet...'),
|
||||||
'validatingWallet': gettext('Validating wallet integrity...'),
|
'validatingWallet': gettext('Validating wallet integrity...'),
|
||||||
'validatingWords': gettext('Validating recovery phrase...'),
|
'validatingWords': gettext('Validating recovery phrase...'),
|
||||||
|
'loadingTxInfo': gettext('Loading transaction info...'),
|
||||||
};
|
};
|
||||||
|
|
||||||
root.clear = function() {
|
root.clear = function() {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.services').service('popupService', function($log, $ionicPopup, platformInfo) {
|
angular.module('copayApp.services').service('popupService', function($log, $ionicPopup, platformInfo, gettextCatalog) {
|
||||||
|
|
||||||
var isCordova = platformInfo.isCordova;
|
var isCordova = platformInfo.isCordova;
|
||||||
|
|
||||||
|
|
@ -10,7 +10,7 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
if (!cb) cb = function() {};
|
if (!cb) cb = function() {};
|
||||||
$ionicPopup.alert({
|
$ionicPopup.alert({
|
||||||
title: title,
|
title: title,
|
||||||
template: message,
|
subTitle: message,
|
||||||
okType: 'button-clear button-positive'
|
okType: 'button-clear button-positive'
|
||||||
}).then(cb);
|
}).then(cb);
|
||||||
};
|
};
|
||||||
|
|
@ -18,7 +18,7 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
var _ionicConfirm = function(title, message, okText, cancelText, cb) {
|
var _ionicConfirm = function(title, message, okText, cancelText, cb) {
|
||||||
$ionicPopup.confirm({
|
$ionicPopup.confirm({
|
||||||
title: title,
|
title: title,
|
||||||
template: message,
|
subTitle: message,
|
||||||
cancelText: cancelText,
|
cancelText: cancelText,
|
||||||
cancelType: 'button-clear button-positive',
|
cancelType: 'button-clear button-positive',
|
||||||
okText: okText,
|
okText: okText,
|
||||||
|
|
@ -53,6 +53,8 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
if (buttonIndex == 1) return cb(true);
|
if (buttonIndex == 1) return cb(true);
|
||||||
else return cb(false);
|
else return cb(false);
|
||||||
}
|
}
|
||||||
|
okText = okText || gettextCatalog.getString('OK');
|
||||||
|
cancelText = cancelText || gettextCatalog.getString('Cancel');
|
||||||
navigator.notification.confirm(message, onConfirm, title, [okText, cancelText]);
|
navigator.notification.confirm(message, onConfirm, title, [okText, cancelText]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -67,8 +69,8 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
/**
|
/**
|
||||||
* Show a simple alert popup
|
* Show a simple alert popup
|
||||||
*
|
*
|
||||||
* @param {String} Title
|
* @param {String} Title (optional)
|
||||||
* @param {String} Message (optional)
|
* @param {String} Message
|
||||||
* @param {Callback} Function (optional)
|
* @param {Callback} Function (optional)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -85,10 +87,10 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
/**
|
/**
|
||||||
* Show a simple confirm popup
|
* Show a simple confirm popup
|
||||||
*
|
*
|
||||||
* @param {String} Title
|
* @param {String} Title (optional)
|
||||||
* @param {String} Message
|
* @param {String} Message
|
||||||
* @param {String} okText
|
* @param {String} okText (optional)
|
||||||
* @param {String} cancelText
|
* @param {String} cancelText (optional)
|
||||||
* @param {Callback} Function
|
* @param {Callback} Function
|
||||||
* @returns {Callback} OK: true, Cancel: false
|
* @returns {Callback} OK: true, Cancel: false
|
||||||
*/
|
*/
|
||||||
|
|
@ -105,7 +107,7 @@ angular.module('copayApp.services').service('popupService', function($log, $ioni
|
||||||
/**
|
/**
|
||||||
* Show a simple prompt popup
|
* Show a simple prompt popup
|
||||||
*
|
*
|
||||||
* @param {String} Title
|
* @param {String} Title (optional)
|
||||||
* @param {String} Message
|
* @param {String} Message
|
||||||
* @param {Object} Object{ inputType, inputPlaceholder, defaultText } (optional)
|
* @param {Object} Object{ inputType, inputPlaceholder, defaultText } (optional)
|
||||||
* @param {Callback} Function
|
* @param {Callback} Function
|
||||||
|
|
|
||||||
|
|
@ -822,11 +822,11 @@ angular.module('copayApp.services')
|
||||||
|
|
||||||
x.action = function() {
|
x.action = function() {
|
||||||
// TODO?
|
// TODO?
|
||||||
$state.go('tabs.details', {
|
// $state.go('tabs.details', {
|
||||||
walletId: x.walletId,
|
// walletId: x.walletId,
|
||||||
txpId: x.txpId,
|
// txpId: x.txpId,
|
||||||
txid: x.txid,
|
// txid: x.txid,
|
||||||
});
|
// });
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -502,6 +502,32 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
root.getTx = function(wallet, txid, cb) {
|
||||||
|
var tx;
|
||||||
|
|
||||||
|
if (wallet.completeHistory && wallet.completeHistory.isValid) {
|
||||||
|
tx = lodash.find(wallet.completeHistory, {
|
||||||
|
txid: txid
|
||||||
|
});
|
||||||
|
|
||||||
|
finish();
|
||||||
|
} else {
|
||||||
|
root.getTxHistory(wallet, {}, function(err, txHistory) {
|
||||||
|
if (err) return cb(err);
|
||||||
|
|
||||||
|
tx = lodash.find(txHistory, {
|
||||||
|
txid: txid
|
||||||
|
});
|
||||||
|
|
||||||
|
finish();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function finish() {
|
||||||
|
if (tx) return cb(null, tx);
|
||||||
|
else return cb();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
root.getTxHistory = function(wallet, opts, cb) {
|
root.getTxHistory = function(wallet, opts, cb) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@ $royal: #1e3186;
|
||||||
$soft-blue: rgb(100,124,232);
|
$soft-blue: rgb(100,124,232);
|
||||||
$base-background-color: #f5f5f5;
|
$base-background-color: #f5f5f5;
|
||||||
|
|
||||||
|
/* Ionic Workaround */
|
||||||
|
|
||||||
|
ion-nav-bar.hide { display: block !important; }
|
||||||
|
|
||||||
|
|
||||||
@import "../../bower_components/ionic/scss/ionic";
|
@import "../../bower_components/ionic/scss/ionic";
|
||||||
|
|
|
||||||
|
|
@ -955,6 +955,30 @@ input[type=number] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Starting */
|
||||||
|
|
||||||
|
#starting {
|
||||||
|
background: rgba(30, 49, 134, 1);
|
||||||
|
background: -moz-linear-gradient(top, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%);
|
||||||
|
background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(30, 49, 134, 1)), color-stop(100%, rgba(17, 27, 73, 1)));
|
||||||
|
background: -webkit-linear-gradient(top, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%);
|
||||||
|
background: -o-linear-gradient(top, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%);
|
||||||
|
background: -ms-linear-gradient(top, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%);
|
||||||
|
background: linear-gradient(to bottom, rgba(30, 49, 134, 1) 0%, rgba(17, 27, 73, 1) 100%);
|
||||||
|
color: #fff;
|
||||||
|
height: 100%;
|
||||||
|
.scroll-content {
|
||||||
|
display: table !important;
|
||||||
|
width: 100% !important;
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
|
.scroll {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@import "ionic";
|
@import "ionic";
|
||||||
@import "common";
|
@import "common";
|
||||||
@import "forms";
|
@import "forms";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue