Merge pull request #5070 from JDonadio/feat/address-view

Feat/address view
This commit is contained in:
Gustavo Maximiliano Cortez 2016-11-22 09:34:46 -03:00 committed by GitHub
commit 3b6926e463
15 changed files with 470 additions and 118 deletions

72
www/views/addresses.html Normal file
View file

@ -0,0 +1,72 @@
<ion-view hide-tabs id="addresses" class="addr">
<ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Wallet Addresses' | translate}}</ion-nav-title>
<ion-nav-back-button>
</ion-nav-back-button>
<ion-nav-buttons side="secondary">
<button class="button back-button" ng-click="showMenu(false, $event)">
<i class="icon ion-ios-more"></i>
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-content>
<div class="text-center banner-icon">
<i class="icon zero-state-icon">
<img src="img/tab-icons/ico-receive-selected.svg"/>
</i>
</div>
<div class="addr-list">
<div class="addr-explanation">
<div class="addr-description" translate>
Each bitcoin wallet can generate billions of addresses from your 12-word backup. A new address is automatically generated and shown each time your recive a payment. <a ng-click="showInformation()" ng-if="!showInfo" translate>Why?</a>
</div>
</div>
<div class="addr-explanation" ng-if="showInfo">
<div class="addr-description" translate>
It's a good idea to avoid reusing addresses-this both protects your privacy and keeps your bitcoins secure against hypothetical attacks by quantum computers. <a ng-click="showInformation()" translate>Hide</a>
</div>
</div>
<div class="list">
<div class="item item-divider item-icon-right" ng-click="newAddress()" translate>
Unused Addresses
<i class="icon ion-ios-plus-empty"></i>
</div>
<div ng-if="latestUnused[0]">
<div class="box-error" ng-if="gapReached">
<h5 translate>Unused Addresses Limit</h5>
<p translate>The maximum number of consecutive unused addresses (20) has been reached. When one of your unused addresses receives a payment, a new address will be generated and shown in your Receive tab. <a ng-click="readMore()" ng-if="!showMore" translate>Read more</a></p>
<p ng-if="showMore" translate>The restore process will stop when 20 addresses are generated in a row which contain no funds. To safely generate more addresses, make a payment to one of the unused addresses which has already been generated. <a ng-click="readMore()" translate>Read less</a></p>
</div>
<div class="item" ng-repeat="u in latestUnused track by $index" copy-to-clipboard="u.address">
{{u.address}}
<div class="addr-path">
{{u.path}} {{u.createdOn * 1000 | amDateFormat:'MMMM Do YYYY, hh:mm a'}}
</div>
</div>
</div>
<div ng-if="latestWithBalance[0]">
<div class="item item-divider" translate>
Addresses With Balance
</div>
<div class="item" ng-repeat="w in latestWithBalance track by $index" copy-to-clipboard="w.address">
{{w.address}}
<div class="addr-balance">{{w.balanceStr}}</div>
</div>
</div>
<div class="item item-icon-right view-all" ng-show="viewAll.value" ng-click="viewAllAddresses()">
<span translate>View All Addresses</span>
<i class="icon ion-ios-arrow-thin-right"></i>
</div>
</div>
</div>
</ion-content>
</ion-view>

View file

@ -0,0 +1,28 @@
<ion-view hide-tabs id="addresses" class="addr">
<ion-nav-bar class="bar-royal">
<ion-nav-title>{{'All Addresses' | translate}}</ion-nav-title>
<ion-nav-back-button>
</ion-nav-back-button>
<ion-nav-buttons side="secondary">
<button class="button back-button" ng-click="showMenu(true, $event)" ng-hide="!isCordova && allAddressesView">
<i class="icon ion-ios-more"></i>
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-content>
<div class="addr-list list">
<div class="item item-divider"></div>
<div class="item" ng-repeat="a in allAddresses track by $index" copy-to-clipboard="a.address">
{{a.address}}
<div class="addr-path" ng-if="!a.balanceStr">
{{a.path}} {{a.createdOn * 1000 | amDateFormat:'MMMM Do YYYY, hh:mm a'}}
</div>
<div class="addr-balance" ng-if="a.balanceStr">{{a.balanceStr}}</div>
</div>
<div class="item item-divider"></div>
</div>
</ion-content>
</ion-view>

View file

@ -0,0 +1,9 @@
<ion-popover-view ng-style="{'height': height + 'px'}" id="menu-popover">
<ion-content>
<div class="list">
<div class="item" ng-repeat="i in items track by $index" ng-click="i.action()">
{{i.text}}
</div>
</div>
</ion-content>
</ion-popover-view>

View file

@ -80,38 +80,11 @@
<div class="item" ng-repeat="pk in pubKeys" copy-to-clipboard="pk">
<span translate>Copayer {{$index}}</span>
<span class="item-note">
<span>Copayer {{$index}}</span>
<span>{{pk}}</span>
<span ng-if="$index == 0">({{basePath}})</span>
</span>
</div>
<div ng-show="addrs">
<div class="item item-divider" translate>
Latest Wallet Addresses
</div>
<div class="settings-explanation">
<div class="settings-description" translate>
Only &ldquo;main&rdquo; addresses are shown below. This excludes &ldquo;change&rdquo; address.
</div>
</div>
<div class="item" ng-repeat="a in addrs" class="oh" copy-to-clipboard="a.address">
<span>{{a.address}}</span>
<span class="item-note">{{a.path}} &middot; {{a.createdOn *1000 | amDateFormat:'MMMM Do YYYY, h:mm a' }}</span>
</div>
<div class="settings-explanation">
<div class="settings-description" translate>
Please note: due to resource constraints, this list of addresses is not verified locally. A compromised BWS node could return addresses which are not controlled by this wallet.
</div>
</div>
<button class="button button-standard button-primary" ng-click="scan()" translate>
Scan addresses for funds
</button>
<button class="button button-standard button-primary" ng-show="isCordova" ng-click="sendAddrs()" translate>
Send addresses by email
</button>
</div>
<div ng-show="wallet.balanceByAddress[0]">
<div class="item item-divider" translate>
Balance By Address

View file

@ -64,19 +64,14 @@
<i class="icon ion-ios-upload-outline"></i>
<span translate>Share</span>
</div>
<div ng-class="{'center-block': !isCordova || !addr}">
<div class="item item-icon-left" ng-click="setAddress(true)">
<i class="icon ion-ios-loop"></i>
<span translate>Next Address</span>
</div>
</div>
</div>
<div id="bit-address" class="row border-top">
<div id="bit-address" class="row border-top" ng-click="showAddresses()">
<div class="center-block bit-address text-center" ng-repeat="wallet in wallets track by $index" ng-class="walletPosition($index)">
<div class="item item-icon-left item-icon-right">
<i class="icon icon-svg receive-tab-bitcoin-icon"><img src="img/icon-bitcoin-symbol.svg"></i>
<span class="bit-address-gen-address" ng-if="generatingAddress">...</span>
<span class="bit-address-gen-address" ng-if="!generatingAddress" copy-to-clipboard="walletAddrs[wallet.id]">{{walletAddrs[wallet.id]}}</span>
<span class="bit-address-gen-address" ng-if="!generatingAddress" class="ellipsis">{{walletAddrs[wallet.id]}}</span>
<i class="icon ion-ios-arrow-right"></i>
</div>
</div>
</div>