commit
151cb7cf7a
107 changed files with 3177 additions and 2378 deletions
|
|
@ -1,133 +1,229 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Backup'; goBackToState = 'preferences'">
|
||||
</div>
|
||||
<div class="backup" ng-controller="backupController as wordsC">
|
||||
<nav class="tab-bar">
|
||||
<section class="left-small" ng-show="(wordsC.step != 1 && wordsC.step != 4)">
|
||||
<a ng-click="wordsC.goToStep(1);">
|
||||
<i class="icon-arrow-left3 icon-back"></i>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<section class="middle tab-bar-section">
|
||||
</section>
|
||||
|
||||
<div class="content preferences" ng-controller="wordsController as wordsC">
|
||||
<h4></h4>
|
||||
|
||||
<div class="box-notification" ng-show="wordsC.error">
|
||||
<span class="text-warning">
|
||||
{{wordsC.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div ng-show="wordsC.mnemonicWords || (wordsC.credentialsEncrypted && !wordsC.deleted)">
|
||||
<div class="row" ng-show="index.n==1">
|
||||
<div class="m10t columns size-14 text-gray">
|
||||
<span translate>
|
||||
You need the wallet seed to restore this personal wallet.
|
||||
<section class="right-small">
|
||||
<a class="p10" ng-click="$root.go(index.prevState);">
|
||||
<span class="text-close">
|
||||
<i class="fi-x size-24"></i>
|
||||
</span>
|
||||
<span translate class="text-bold">
|
||||
Write it down and keep them somewhere safe.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="(index.n>1 && index.m != index.n )">
|
||||
<div class="m10t columns size-14 text-gray">
|
||||
<span translate>
|
||||
To restore this {{index.m}}-{{index.n}} <b>shared</b> wallet you will need
|
||||
</span>:
|
||||
<ol class="m10t columns size-14 text-gray">
|
||||
<li translate>Your wallet seed and access to the server that coordinated the initial wallet creation. You still need {{index.m}} keys to spend.</li>
|
||||
<li translate><b>OR</b> the wallet seed of <b>all</b> copayers in the wallet</li>
|
||||
<li translate><b>OR</b> 1 wallet export file and the remaining quorum of wallet seeds (e.g. in a 3-5 wallet: 1 wallet export file + 2 wallet seeds of any of the other copayers).</li>
|
||||
</ol>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="(index.n>1 && index.m == index.n )">
|
||||
<div class="m10t columns size-14 text-gray">
|
||||
<span translate>
|
||||
To restore this {{index.m}}-{{index.n}} <b>shared</b> wallet you will need
|
||||
</span>:
|
||||
<ol class="m10t columns size-14 text-gray">
|
||||
<li translate>Your wallet seed and access to the server that coordinated the initial wallet creation. You still need {{index.m}} keys to spend.</li>
|
||||
<li translate><b>OR</b> the wallet seeds of <b>all</b> copayers in the wallet</li>
|
||||
</ol>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</section>
|
||||
</nav>
|
||||
|
||||
<div class="row m20t" ng-show="wordsC.deleted">
|
||||
<div class="columns size-14 text-gray text-center" translate>
|
||||
Wallet seed not available. You can still export it from Advanced > Export.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="wordsC.mnemonicWords || (wordsC.credentialsEncrypted && !wordsC.deleted)">
|
||||
<div class="row">
|
||||
<div class="m10t columns">
|
||||
<a class="button outline light-gray expand tiny" ng-click="wordsC.toggle()">
|
||||
<i class="fi-widget m3r"></i>
|
||||
<span translate ng-hide="wordsC.show">Show Wallet Seed</span>
|
||||
<span translate ng-hide="!wordsC.show">Hide Wallet Seed</span>
|
||||
<i ng-if="!wordsC.show" class="icon-arrow-down4"></i>
|
||||
<i ng-if="wordsC.show" class="icon-arrow-up4"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="content preferences">
|
||||
<div class="box-notification" ng-show="wordsC.error">
|
||||
<span class="text-warning">
|
||||
{{wordsC.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
## STEP 1
|
||||
-->
|
||||
|
||||
<div class="row m10t m10b" ng-show="wordsC.show">
|
||||
<div class="small-centered text-gray columns size-14 text-center" translate>
|
||||
Your Wallet Seed
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="wordsC.show">
|
||||
<div class="columns">
|
||||
<div class="p10" style="background:white" ng-class="{'enable_text_select': index.network == 'testnet'}">
|
||||
<span ng-repeat="word in wordsC.mnemonicWords track by $index"><span style="white-space:nowrap">{{word}}</span><span ng-show="wordsC.useIdeograms"> </span> </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m10t m20b" ng-show="wordsC.show">
|
||||
<div class="columns" ng-show="wordsC.mnemonicHasPassphrase">
|
||||
<span class="size-12">
|
||||
<i class="fi-alert"></i>
|
||||
<span translate>
|
||||
WARNING: This seed was created with a passphrase. To recover this wallet both the mnemonic and passphrase are needed.
|
||||
</span>
|
||||
<div ng-show="wordsC.step == 1">
|
||||
<div ng-show="wordsC.mnemonicWords || (wordsC.credentialsEncrypted && !wordsC.deleted)">
|
||||
<h5 class="text-center" translate>Write your wallet seed</h5>
|
||||
<div class="size-14 text-gray" ng-show="(index.n>1 && index.m != index.n )">
|
||||
<span translate>
|
||||
To restore this {{index.m}}-{{index.n}} <b>shared</b> wallet you will need
|
||||
</span>:
|
||||
<ol class="m10t columns size-14 text-gray">
|
||||
<li translate>Your wallet seed and access to the server that coordinated the initial wallet creation. You still need {{index.m}} keys to spend.</li>
|
||||
<li translate><b>OR</b> the wallet seed of <b>all</b> copayers in the wallet</li>
|
||||
<li translate><b>OR</b> 1 wallet export file and the remaining quorum of wallet seeds (e.g. in a 3-5 wallet: 1 wallet export file + 2 wallet seeds of any of the other copayers).</li>
|
||||
</ol>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="size-14 text-gray" ng-show="(index.n>1 && index.m == index.n )">
|
||||
<span translate>
|
||||
To restore this {{index.m}}-{{index.n}} <b>shared</b> wallet you will need
|
||||
</span>:
|
||||
<ol class="m10t columns size-14 text-gray">
|
||||
<li translate>Your wallet seed and access to the server that coordinated the initial wallet creation. You still need {{index.m}} keys to spend.</li>
|
||||
<li translate><b>OR</b> the wallet seeds of <b>all</b> copayers in the wallet</li>
|
||||
</ol>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="wordsC.show">
|
||||
<div class="m10t text-center columns">
|
||||
<div class="size-12 text-gray">
|
||||
<span translate>
|
||||
Once you have copied your wallet seed down, it is recommended to delete it from this device.
|
||||
</span>
|
||||
<div class="row m20t" ng-show="wordsC.deleted">
|
||||
<div class="columns size-14 text-gray text-center" translate>
|
||||
Wallet seed not available. You can still export it from Advanced > Export.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="wordsC.mnemonicWords || (wordsC.credentialsEncrypted && !wordsC.deleted)">
|
||||
<p class="text-center columns text-gray" ng-show="index.n==1 && wordsC.step == 1">
|
||||
<span translate>
|
||||
You need the wallet seed to restore this personal wallet. Write it down and keep them somewhere safe.
|
||||
</span>
|
||||
</p>
|
||||
<div class="row" ng-show="wordsC.credentialsEncrypted">
|
||||
<div class="m10t columns">
|
||||
<a class="button outline light-gray expand tiny" ng-click="wordsC.toggle()">
|
||||
<i class="fi-widget m3r"></i>
|
||||
<span translate ng-hide="wordsC.show">Show Wallet Seed</span>
|
||||
</a>
|
||||
</div>
|
||||
<button class="button outline m10t round dark-gray tiny" ng-click="wordsC.delete()">
|
||||
<i class="fi-trash"></i>
|
||||
<span translate>
|
||||
DELETE WORDS
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="!wordsC.credentialsEncrypted">
|
||||
<div class="columns">
|
||||
<div class="panel" ng-class="{'enable_text_select': index.network == 'testnet'}">
|
||||
<span ng-repeat="word in wordsC.mnemonicWords track by $index"><span style="white-space:nowrap">{{word}}</span><span ng-show="wordsC.useIdeograms"> </span> </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- hide this in multisig just to show less text -->
|
||||
<div class="row m20t" ng-show="index.n==1">
|
||||
<div class="columns size-12 text-gray">
|
||||
<div class="p10t" style="border-top:1px solid #ccc">
|
||||
<span translate>You can safely install your wallet on another device and use it from multiple devices at the same time.</span>
|
||||
<a href="#" ng-click="$root.openExternalLink('https://github.com/bitpay/copay/blob/master/README.md#copay-backups-and-recovery')" translate>
|
||||
Learn more about Copay backups
|
||||
</a>
|
||||
<div class="columns extra-padding-bottom" ng-show="!wordsC.credentialsEncrypted">
|
||||
<div class="line-t p10 size-10 text-gray text-center" ng-show="wordsC.mnemonicHasPassphrase">
|
||||
<i class="fi-alert"></i>
|
||||
<span translate>
|
||||
This seed was created with a passphrase. To recover this wallet both the mnemonic and passphrase are needed.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="button-box">
|
||||
<button
|
||||
ng-show="!wordsC.deleted"
|
||||
ng-disabled="wordsC.credentialsEncrypted"
|
||||
class="round expand m0"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-click="wordsC.goToStep(2);"
|
||||
translate>Continue
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!--
|
||||
## STEP 2
|
||||
-->
|
||||
|
||||
<div ng-show="wordsC.step == 2">
|
||||
<div class="columns text-center extra-padding-bottom">
|
||||
<h5 translate>Confirm your wallet seed</h5>
|
||||
<p class="text-gray m0" translate>
|
||||
Please tap the words in order to confirm your backup phrase is correctly written.
|
||||
</p>
|
||||
<div class="panel words text-left" ng-class="{'enable_text_select': index.network == 'testnet'}">
|
||||
<div id="addWord"></div>
|
||||
</div>
|
||||
<div class="text-left" ng-class="{'enable_text_select': index.network == 'testnet'}" id="buttons">
|
||||
<span ng-repeat="word in wordsC.shuffledMnemonicWords track by $index">
|
||||
<button class="button radius tiny words" ng-if="$index > 9" ng-click="wordsC.disableButton($index, word)" id="{{$index + word}}">{{word}}</button>
|
||||
<button class="button radius tiny words" ng-if="$index <= 9" ng-click="wordsC.disableButton('0' + $index, word)" id="{{'0' + $index + word}}">{{word}}</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="button-box">
|
||||
<button
|
||||
ng-disabled="!wordsC.selectComplete"
|
||||
class="round expand m0"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-click="wordsC.goToStep(3);"
|
||||
translate>Continue
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
## STEP 3
|
||||
-->
|
||||
|
||||
<div ng-show="wordsC.step == 3">
|
||||
<div class="columns text-center">
|
||||
<h5 translate>Enter your passphrase</h5>
|
||||
<p class="text-gray m0" translate>
|
||||
In order to verify your wallet backup, please type your passphrase:
|
||||
</p>
|
||||
<div class="m20v">
|
||||
<input type="text" id="passphrase" ng-model="passphrase" autocapitalize="off" spellcheck="false" autofocus/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="button-box">
|
||||
<button
|
||||
ng-disabled="!passphrase"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
class="button round expand m0"
|
||||
ng-click="wordsC.goToStep(4);"
|
||||
translate>Continue
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
## STEP 4
|
||||
-->
|
||||
|
||||
<div ng-show="wordsC.step == 4">
|
||||
<div class="row m10t m10b text-center" ng-show="!wordsC.backupError">
|
||||
<div class="circle-icon">
|
||||
<i class="fi-like size-48"></i>
|
||||
</div>
|
||||
<h5 translate>Congratulations!</h5>
|
||||
<p class="text-gray columns" translate>
|
||||
You backed up your wallet. You can now restore this wallet at any time.
|
||||
</p>
|
||||
|
||||
<div class="columns text-center m20t">
|
||||
<button
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
class="button round expand"
|
||||
ng-click="$root.go('walletHome');"
|
||||
translate>Finish
|
||||
</button>
|
||||
<!-- hide this in multisig just to show less text -->
|
||||
<div class="row m20t" ng-show="index.n==1">
|
||||
<div class="columns size-10 text-gray">
|
||||
<div class="p10t line-t">
|
||||
<span translate>You can safely install your wallet on another device and use it from multiple devices at the same time.</span>
|
||||
<a href="#" ng-click="$root.openExternalLink('https://github.com/bitpay/copay/blob/master/README.md#copay-backups-and-recovery')" translate>
|
||||
Learn more about Copay backups
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m10t m10b text-center" ng-show="wordsC.backupError">
|
||||
<div class="circle-icon">
|
||||
<i class="fi-dislike size-48"></i>
|
||||
</div>
|
||||
<h5 translate>Backup failed</h5>
|
||||
<p class="text-gray columns" translate>
|
||||
Failed to verify backup. Please check your information
|
||||
</p>
|
||||
<div class="columns size-10 text-gray extra-padding-bottom" ng-show="index.n==1">
|
||||
<div class="p10t line-t">
|
||||
<span translate>You can safely install your wallet on another device and use it from multiple devices at the same time.</span>
|
||||
<a href="#" ng-click="$root.openExternalLink('https://github.com/bitpay/copay/blob/master/README.md#copay-backups-and-recovery')" translate>
|
||||
Learn more about Copay backups
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="button-box">
|
||||
<button
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
class="button round expand m0"
|
||||
ng-click="wordsC.goToStep(1);"
|
||||
translate>Try again
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="extra-margin-bottom"></div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Buy'; goBackToState = 'glidera'">
|
||||
ng-init="titleSection='Buy'; goBackToState = 'glidera'; noColor = true">
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -21,27 +21,22 @@
|
|||
</div>
|
||||
|
||||
<div ng-show="index.glideraLimits && !buy.show2faCodeInput && !buy.success">
|
||||
<h4 class="title m0">
|
||||
<div class="left">
|
||||
<i class="fi-info size-24 m10r"></i>
|
||||
</div>
|
||||
<div class="size-10">
|
||||
<span class="text-light">Daily buy limit</span>:
|
||||
{{index.glideraLimits.dailyBuy|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.dailyBuyRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
<br>
|
||||
<span class="text-light">Monthly buy limit</span>:
|
||||
{{index.glideraLimits.monthlyBuy|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.monthlyBuyRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
</div>
|
||||
<h4 class="title m0 text-left">
|
||||
<span class="text-light">Daily buy limit</span>:
|
||||
{{index.glideraLimits.dailyBuy|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.dailyBuyRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
<br>
|
||||
<span class="text-light">Monthly buy limit</span>:
|
||||
{{index.glideraLimits.monthlyBuy|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.monthlyBuyRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div class="row m20t">
|
||||
<div class="columns">
|
||||
|
||||
<div class="box-notification" ng-show="index.glideraLimits.transactDisabledPendingFirstTransaction">
|
||||
<span class="text-warning size-14">
|
||||
<div class="box-notification m20b" ng-show="index.glideraLimits.transactDisabledPendingFirstTransaction">
|
||||
<span class="text-warning">
|
||||
This operation was disabled because you have a pending first transaction
|
||||
</span>
|
||||
</div>
|
||||
|
|
@ -122,8 +117,8 @@
|
|||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-notification" ng-show="buy.error && !buy.success">
|
||||
<span class="text-warning size-14">
|
||||
<div class="box-notification m20b" ng-show="buy.error && !buy.success">
|
||||
<span class="text-warning">
|
||||
{{buy.error}}
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
|
||||
|
||||
<div class="content p20v" ng-controller="createController as create" ng-init="create.setTotalCopayers(1)">
|
||||
<div class="content p20b" ng-controller="createController as create" ng-init="create.setTotalCopayers(1)">
|
||||
|
||||
<div class="onGoingProcess" ng-show="create.loading && !create.hwWallet">
|
||||
<div class="onGoingProcess-content" ng-style="{'background-color':'#222'}">
|
||||
|
|
@ -49,13 +49,13 @@
|
|||
</div>
|
||||
|
||||
<form name="setupForm" ng-submit="create.create(setupForm)" novalidate>
|
||||
<div class="box-notification m20b" ng-show="create.error">
|
||||
<span class="text-warning">
|
||||
{{create.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<div class="box-notification" ng-show="create.error">
|
||||
<span class="text-warning size-14">
|
||||
{{create.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
|
||||
<div ng-hide="create.hideWalletName">
|
||||
<label><span translate>Wallet name</span>
|
||||
|
|
@ -134,7 +134,7 @@
|
|||
<div ng-show="create.seedSourceId=='new' ">
|
||||
<label for="createPassphrase" ><span translate>Add a Seed Passphrase</span> <small translate>Add an optional passphrase to secure the seed</small>
|
||||
<div class="input">
|
||||
<input type="text" class="form-control"
|
||||
<input type="text" class="form-control" autocapitalize="off"
|
||||
name="createPassphrase" ng-model="createPassphrase">
|
||||
</div>
|
||||
</label>
|
||||
|
|
@ -145,6 +145,7 @@
|
|||
<span translate>Wallet Seed</span>
|
||||
<small translate>Enter the seed words (BIP39)</small>
|
||||
<input id="ext-master"
|
||||
autocapitalize="off"
|
||||
type="text"
|
||||
name="privateKey" ng-model="privateKey">
|
||||
</label>
|
||||
|
|
@ -153,7 +154,7 @@
|
|||
<div ng-show="create.seedSourceId=='set'">
|
||||
<label for="passphrase"> <span translate>Seed Passphrase</span> <small translate>The seed could require a passphrase to be imported</small>
|
||||
<div class="input">
|
||||
<input type="text" class="form-control" name="passphrase" ng-model="passphrase">
|
||||
<input type="text" autocapitalize="off" class="form-control" name="passphrase" ng-model="passphrase">
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,47 +1,51 @@
|
|||
<div ng-controller="disclaimerController" ng-init="init()">
|
||||
<div
|
||||
ng-if="agreed && index.hasProfile"
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Terms of Use'; goBackToState = 'about'; noColor = true">
|
||||
</div>
|
||||
<div class="splash content text-center"
|
||||
ng-controller="disclaimerController as disclaimer" ng-init="disclaimer.init()">
|
||||
<div class="row">
|
||||
<div class="container-image large-2 medium-2 small-2 medium-centered small-centered large-centered columns">
|
||||
<img src="img/icon-splash.png" alt="icon" width="100%">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="medium-centered small-centered large-centered columns">
|
||||
<span class="text-bold size-16 text-white" translate>WELCOME TO COPAY</span>
|
||||
<p class="text-gray size-14 m0 text-light" translate>A multisignature bitcoin wallet</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="scrollArea">
|
||||
<p class="enable_text_select m0">
|
||||
<div class="size-16 text-gray" translate>Terms of Use</div>
|
||||
<div ng-include="'views/includes/terms.html'"></div>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content p20b" ng-class="{'disclaimer':!index.hasProfile}">
|
||||
<h4 class="title m0" ng-show="!index.hasProfile">
|
||||
<div class="right">Copay</div>
|
||||
<div translate>Terms of Use</div>
|
||||
</h4>
|
||||
<div class="p20h m10t">
|
||||
<p class="enable_text_select size-14">
|
||||
<ul>
|
||||
<li translate>The software you are about to use functions as a free, open source, and multi-signature digital wallet.</li>
|
||||
<li translate>The software does not constitute an account where BitPay or other third parties serve as financial intermediaries or custodians of your bitcoin.</li>
|
||||
<li translate>While the software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, we cannot guarantee that there will be no bugs in the software.</li>
|
||||
<li translate>You acknowledge that your use of this software is at your own discretion and in compliance with all applicable laws.</li>
|
||||
<li translate>You are responsible for safekeeping your passwords, private key pairs, PINs and any other codes you use to access the software.</li>
|
||||
<li translate><b>IF YOU LOSE ACCESS TO YOUR COPAY WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT COPAY WALLET WILL BECOME INACCESSIBLE.</b></li>
|
||||
<li translate>All transaction requests are irreversible.</li>
|
||||
<li translate>The authors of the software, employees and affiliates of Bitpay, copyright holders, and BitPay, Inc. cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction confirmation as they do not have control over the Bitcoin network.</li>
|
||||
<li translate>To the fullest extent permitted by law, this software is provided “as is” and no representations or warranties can be made of any kind, express or implied, including but not limited to the warranties of merchantability, fitness or a particular purpose and noninfringement.</li>
|
||||
<li translate>You assume any and all risks associated with the use of the software.</li>
|
||||
<li translate>In no event shall the authors of the software, employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the software.</li>
|
||||
<li translate>We reserve the right to modify this disclaimer from time to time.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p ng-show="lang != 'en'">
|
||||
<a class="center" ng-click="$root.openExternalLink('https://copay.io/disclaimer')" translate>Official English Disclaimer</a>
|
||||
</p>
|
||||
<div class="row">
|
||||
<p ng-show="disclaimer.lang != 'en'">
|
||||
<a class="center" ng-click="$root.openExternalLink('https://copay.io/disclaimer')" translate>Official English Disclaimer</a>
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-gray columns" translate>I affirm that I have read, understood, and agree with these terms.</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div ng-show="!agreed">
|
||||
<p translate>I affirm that I have read, understood, and agree with these terms.</p>
|
||||
<button class="black round expand" ng-click="agree()" ng-disabled="loading" translate>
|
||||
Agree
|
||||
</button>
|
||||
</div>
|
||||
<button ng-show="agreed && !index.hasProfile" class="round expand" ng-click="agree()" translate>
|
||||
Go back
|
||||
</button>
|
||||
</div>
|
||||
<div class="extra-margin-bottom"></div>
|
||||
</div>
|
||||
<div class="onGoingProcess" ng-show="creatingProfile">
|
||||
<div class="onGoingProcess-content" ng-style="{'background-color':'#222'}">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
<span translate>Creating Wallet...</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start-button columns">
|
||||
<button ng-disabled="creatingProfile" ng-click="index.acceptDisclaimer()" class="button black expand round size-12 text-spacing" translate>
|
||||
I AGREE. GET STARTED
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
|
||||
|
||||
<div class="content preferences" ng-controller="backupController as backup">
|
||||
<div class="content preferences" ng-controller="exportController as exportC">
|
||||
<h4></h4>
|
||||
<div ng-show="!backup.backupWalletPlainText">
|
||||
<div class="text-warning size-14 m20b" ng-show="backup.error">
|
||||
<div ng-show="!exportC.backupWalletPlainText">
|
||||
<div class="text-warning size-14 m20b" ng-show="exportC.error">
|
||||
<i class="fi-alert size-12"></i>
|
||||
<span translate> Failed to export </span>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="columns">
|
||||
<div class="text-warning size-14 m20b" ng-show="backup.isEncrypted">
|
||||
<div class="text-warning size-14 m20b" ng-show="exportC.isEncrypted">
|
||||
<i class="fi-alert size-12"></i>
|
||||
<span translate> The private key for this wallet is encrypted. Exporting keep the private key encrypted in the export archive.</span>
|
||||
|
||||
|
|
@ -27,18 +27,18 @@
|
|||
<form>
|
||||
<div class="row">
|
||||
<div class="columns">
|
||||
<label for="password" translate>Set up a Export Password </label>
|
||||
<label for="password" translate>Set up an Export Password </label>
|
||||
<div class="input">
|
||||
<input type="password" class="form-control"
|
||||
placeholder="{{'Your export password'|translate}}"
|
||||
name="password" ng-model="backup.password">
|
||||
name="password" ng-model="exportC.password">
|
||||
</div>
|
||||
|
||||
<label for="password" translate>Repeat password</label>
|
||||
<div class="input">
|
||||
<input type="password" class="form-control"
|
||||
placeholder="{{'Repeat password'|translate}}"
|
||||
name="password" ng-model="backup.repeatpassword">
|
||||
name="password" ng-model="exportC.repeatpassword">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -83,25 +83,25 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="columns">
|
||||
<button class="black round expand m20t" ng-click="backup.downloadWalletBackup()"
|
||||
ng-disabled="(!backup.password || backup.password != backup.repeatpassword)"
|
||||
<button class="black round expand m20t" ng-click="exportC.downloadWalletBackup()"
|
||||
ng-disabled="(!exportC.password || exportC.password != exportC.repeatpassword)"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-show="!index.isSafari && !index.isCordova"><i class="fi-download"></i>
|
||||
<span translate>Download</span></button>
|
||||
<button class="black round expand m20t" ng-click="backup.viewWalletBackup()"
|
||||
ng-disabled="(!backup.password || backup.password != backup.repeatpassword)"
|
||||
<button class="black round expand m20t" ng-click="exportC.viewWalletBackup()"
|
||||
ng-disabled="(!exportC.password || exportC.password != exportC.repeatpassword)"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-show="index.isSafari && !index.isCordova"><i class="fi-eye"></i>
|
||||
<span translate>View</span></button>
|
||||
<div ng-show="index.isCordova">
|
||||
<h4 translate>Export options</h4>
|
||||
<button class="black round expand" ng-disabled="(!backup.password || backup.password != backup.repeatpassword)"
|
||||
<button class="black round expand" ng-disabled="(!exportC.password || exportC.password != exportC.repeatpassword)"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-click="backup.copyWalletBackup()"><i class="fi-clipboard-pencil"></i>
|
||||
ng-click="exportC.copyWalletBackup()"><i class="fi-clipboard-pencil"></i>
|
||||
<span translate>Copy to clipboard</span></button>
|
||||
<button class="black round expand" ng-disabled="(!backup.password || backup.password != backup.repeatpassword)"
|
||||
<button class="black round expand" ng-disabled="(!exportC.password || exportC.password != exportC.repeatpassword)"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-click="backup.sendWalletBackup()"><i class="fi-mail"></i>
|
||||
ng-click="exportC.sendWalletBackup()"><i class="fi-mail"></i>
|
||||
<span translate>Send by email</span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -109,11 +109,11 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="backup.backupWalletPlainText">
|
||||
<div class="row" ng-show="exportC.backupWalletPlainText">
|
||||
<div class="large-12 columns">
|
||||
<h3 translate>Wallet Export</h3>
|
||||
<div class="input">
|
||||
<textarea rows="12">{{backup.backupWalletPlainText}}</textarea>
|
||||
<textarea rows="12">{{exportC.backupWalletPlainText}}</textarea>
|
||||
</div>
|
||||
<div class="size-12 text-gray text-right">
|
||||
<i class="icon-compose"></i>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Buy & Sell Bitcoin'; closeToHome = true">
|
||||
ng-init="titleSection='Buy & Sell Bitcoin'; closeToHome = true; noColor = true">
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -66,8 +66,9 @@
|
|||
Glidera Inc. (Glidera) is providing the service of buying or selling bitcoins to Copay users. To enable this
|
||||
service, Glidera has registered with US Treasury Department’s FinCEN as a Money Service Business
|
||||
(#31000042625755). Users of Copay must agree to the service agreement presented by Glidera prior to obtaining
|
||||
Glidera’s service of buying or selling bitcoins. Service available in U.S. only; (buy & sell) CA, GA, IL, KS,
|
||||
MA, MD, MO, MT, MN, SC, TX; (buy only) AZ, CO, DE, ME, NJ, PA, TN, UT.
|
||||
Glidera’s service of buying or selling bitcoins. Service available in U.S. and Canada only. In U.S. (buy & sell) CA, GA, IL, KS,
|
||||
MA, MD, MO, MT, MN, SC, TX; (buy only) AZ, CO, DE, ME, NJ, PA, TN, UT. In Canada (buy & sell) AB, BC, MB, NB, NL, NS, NT, NU,
|
||||
ON, PE, SK, YT.
|
||||
</p>
|
||||
|
||||
<p class="m20t text-gray size-12">Connect your Glidera account to get started</p>
|
||||
|
|
@ -104,13 +105,13 @@
|
|||
</div>
|
||||
|
||||
<div ng-if="index.glideraToken && index.glideraPermissions">
|
||||
<div class="m20v text-center">
|
||||
<div class="p20v text-center white">
|
||||
<img src="img/glidera-logo.png" ng-click="index.updateGlidera(index.glideraToken, index.glideraPermissions)" width="100">
|
||||
</div>
|
||||
<div class="sub-header" ng-click="$root.go('preferencesGlidera')">
|
||||
<div class="left">
|
||||
<div ng-show="!index.glideraPersonalInfo && !index.glideraEmail">
|
||||
<h4 class="title p0i m10t m0">Preferences</h4>
|
||||
Preferences
|
||||
</div>
|
||||
<div ng-show="index.glideraPersonalInfo" class="size-12">
|
||||
<b>
|
||||
|
|
@ -132,23 +133,22 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="text-center columns small-8 small-centered m30v size-12"
|
||||
ng-show="index.glideraStatus && (!index.glideraStatus.userEmailIsSetup || !index.glideraStatus.userPhoneIsSetup
|
||||
|| (!index.glideraStatus.userBankAccountIsSetup && index.glideraStatus.bankAccountState != 'VERIFIED'))">
|
||||
ng-show="index.glideraStatus && !index.glideraStatus.userCanTransact">
|
||||
<h4 class="text-bold"> Complete Setup</h4>
|
||||
Your Glidera account is not ready to transact. Please, verify it at <b>Glidera.io</b>
|
||||
<a class="button m20t light-gray outline round tiny"
|
||||
ng-init="glideraUrl = index.glideraTestnet ? 'https://sandbox.glidera.io/login' :
|
||||
'https://glidera.io/login'"
|
||||
ng-click="$root.openExternalLink(glideraUrl)">
|
||||
Go to Glidera
|
||||
</a>
|
||||
<div>Your Glidera account is not ready to transact. Please, verify it at <b>Glidera.io</b></div>
|
||||
<a class="button m20t light-gray outline round tiny"
|
||||
ng-init="glideraUrl = index.glideraTestnet ? 'https://sandbox.glidera.io/login' :
|
||||
'https://glidera.io/login'"
|
||||
ng-click="$root.openExternalLink(glideraUrl)">
|
||||
Go to Glidera
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="no-bullet m0 size-14"
|
||||
ng-show="index.glideraStatus && index.glideraPermissions.transact && (index.glideraStatus.userBankAccountIsSetup && index.glideraStatus.bankAccountState == 'VERIFIED')">
|
||||
<li ng-show="index.glideraStatus.userCanTransact && index.glideraStatus.userCanBuy"
|
||||
ng-show="index.glideraStatus && index.glideraStatus.userCanTransact">
|
||||
<li ng-show="index.glideraStatus.userCanBuy"
|
||||
class="line-b line-t p20 pointer"
|
||||
ng-click="$root.go('buyGlidera')">
|
||||
<img src="img/buy-bitcoin.svg" alt="buy bitcoin" width="40">
|
||||
|
|
@ -158,7 +158,7 @@
|
|||
</span>
|
||||
</li>
|
||||
<li class="line-b p20 pointer"
|
||||
ng-show="index.glideraStatus.userCanTransact && index.glideraStatus.userCanSell"
|
||||
ng-show="index.glideraStatus.userCanSell"
|
||||
ng-click="$root.go('sellGlidera')">
|
||||
<img src="img/sell-bitcoin.svg" alt="buy bitcoin" width="40">
|
||||
<span class="m10 text-normal text-bold">Sell Bitcoin</span>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
</ul>
|
||||
|
||||
<div ng-show="index.glideraPermissions.transaction_history">
|
||||
<h4 class="title m0">Activity</h4>
|
||||
<h4>Activity</h4>
|
||||
<div ng-show="index.glideraTxs.length == 0 && !index.glideraLoadingHistory"
|
||||
class="size-12 p10 text-center text-gray">
|
||||
No activity in your account
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
ng-init="titleSection='Import wallet'; goBackToState = 'add'; noColor = true">
|
||||
</div>
|
||||
|
||||
<div class="content p20v" ng-controller="importController as import" ng-init="type='12'">
|
||||
<div class="content p20b" ng-controller="importController as import" ng-init="type='12'">
|
||||
<div class="onGoingProcess" ng-show="import.loading && !import.hwWallet">
|
||||
<div class="onGoingProcess-content" ng-style="{'background-color':'#222'}">
|
||||
<div class="spinner">
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="type == '12' ">
|
||||
<div class="large-12 columns">
|
||||
<form name="importForm12" ng-submit="import.importMnemonic(importForm12)" novalidate>
|
||||
<div class="box-notification" ng-show="import.error">
|
||||
<span class="text-warning size-14">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div ng-show="type == '12' ">
|
||||
<div class="box-notification m20b" ng-show="import.error">
|
||||
<span class="text-warning">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row large-12 columns">
|
||||
<form name="importForm12" ng-submit="import.importMnemonic(importForm12)" novalidate>
|
||||
|
||||
<div >
|
||||
<label for="words">
|
||||
|
|
@ -100,14 +100,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="type == 'file' ">
|
||||
<div class="large-12 columns">
|
||||
<form name="importForm" ng-submit="import.importBlob(importForm)" novalidate>
|
||||
<div class="box-notification" ng-show="import.error">
|
||||
<span class="text-warning size-14">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div ng-show="type == 'file' ">
|
||||
<div class="box-notification m20b" ng-show="import.error">
|
||||
<span class="text-warning size-14">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row large-12 columns">
|
||||
<form name="importForm" ng-submit="import.importBlob(importForm)" novalidate>
|
||||
|
||||
<div ng-show="!index.isSafari && !index.isCordova" class="line-b m10b">
|
||||
<label for="backupFile">
|
||||
|
|
@ -166,13 +166,13 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="type == 'hwWallet'">
|
||||
<div class="large-12 columns">
|
||||
<div class="box-notification" ng-show="import.error">
|
||||
<span class="text-warning size-14">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div ng-show="type == 'hwWallet'">
|
||||
<div class="box-notification m20b" ng-show="import.error">
|
||||
<span class="text-warning size-14">
|
||||
{{import.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row large-12 columns">
|
||||
|
||||
<form name="importForm3" ng-submit="import.importHW(importForm3)" novalidate>
|
||||
<div class="large-12 columns">
|
||||
|
|
|
|||
|
|
@ -1,15 +1,10 @@
|
|||
<div>
|
||||
<div class="left" ng-show="index.lockedBalanceSat">
|
||||
<i class="fi-info size-24 m10r"></i>
|
||||
</div>
|
||||
<div class="size-10">
|
||||
<span class="db text-bold">
|
||||
<span translate>Available Balance</span>:
|
||||
{{index.availableBalanceStr }}
|
||||
</span>
|
||||
<span class="text-gray" ng-show="index.lockedBalanceSat">
|
||||
{{index.lockedBalanceStr}}
|
||||
<span translate>locked by pending payments</span>
|
||||
</span>
|
||||
</div>
|
||||
<span class="db text-bold">
|
||||
<span translate>Available Balance</span>:
|
||||
{{index.availableBalanceStr }}
|
||||
</span>
|
||||
<span class="text-gray" ng-show="index.lockedBalanceSat">
|
||||
{{index.lockedBalanceStr}}
|
||||
<span translate>locked by pending payments</span>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,14 @@
|
|||
<a ng-click="index.setTab(item, false, 0, true)" ng-class="{'active': index.tab == item.link}" id="menu-{{item.link}}">
|
||||
<i class="size-24 {{item.icon}} db"></i>
|
||||
<div class="size-10 tu">
|
||||
<a ng-click="index.setTab(item, false, 0, true)"
|
||||
ng-style="{'color': index.tab == item.link ? index.backgroundColor : '#A5B2BF'}"
|
||||
id="menu-{{item.link}}">
|
||||
<i class="size-18 {{item.icon}} db"></i>
|
||||
<span class="size-10 tu">
|
||||
{{ item.title|translate }}
|
||||
<span class="label alert round" ng-if="item.link=='walletHome' && index.pendingTxProposalsCountForUs > 0">
|
||||
<span class="label round"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-if="item.link=='walletHome' && index.pendingTxProposalsCountForUs > 0">
|
||||
{{ index.pendingTxProposalsCountForUs }}
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
<div ng-if="item.link == 'walletHome'" class="menu-wallet-home"></div>
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -11,15 +11,17 @@
|
|||
class="nav-item">
|
||||
<a ng-click="sidebar.switchWallet(item.id, index.walletId)" class="oh">
|
||||
<div class="avatar-wallet"
|
||||
ng-style="{'background-color':item.color}">{{(item.name || item.id) | limitTo: 1}}</div>
|
||||
ng-style="{'background-color':item.color}">
|
||||
<i class="icon-wallet size-21"></i>
|
||||
</div>
|
||||
<div class="name-wallet" ng-class="{'m8t':item.n == 1}">{{item.name || item.id}}</div>
|
||||
<div class="size-12" ng-show="item.n > 1" translate>{{item.m}}-of-{{item.n}}</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a ng-click="$root.go('add')" class="oh">
|
||||
<i class="icon-arrow-right3 size-18 right m10t"></i>
|
||||
<i class="fi-plus size-24 icon"></i>
|
||||
<i class="icon-arrow-right3 size-18 right m10t vm"></i>
|
||||
<i class="fi-plus size-24 icon vm"></i>
|
||||
<div class="tu text-bold">
|
||||
<span class="size-12" translate>Add wallet</span>
|
||||
</div>
|
||||
|
|
@ -28,22 +30,22 @@
|
|||
</li>
|
||||
<li ng-show="index.glideraEnabled">
|
||||
<a ng-click="$root.go('glidera')" class="oh">
|
||||
<i class="icon-arrow-right3 size-18 right m10t"></i>
|
||||
<i class="icon-bank size-24 icon"></i>
|
||||
<i class="icon-arrow-right3 size-18 right m10t vm"></i>
|
||||
<i class="icon-bank size-24 icon vm"></i>
|
||||
<div class="tu text-bold">
|
||||
<span class="size-12">Buy & Sell Bitcoin</span>
|
||||
<span class="size-12" translate>Buy & Sell Bitcoin</span>
|
||||
</div>
|
||||
<div>Glidera</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a ng-click="$root.go('preferencesGlobal')" class="oh">
|
||||
<i class="icon-arrow-right3 size-18 right m10t"></i>
|
||||
<i class="fi-widget size-24 icon"></i>
|
||||
<i class="icon-arrow-right3 size-18 right m10t vm"></i>
|
||||
<i class="fi-widget size-24 icon vm"></i>
|
||||
<div class="tu text-bold">
|
||||
<span class="size-12">Settings</span>
|
||||
<span class="size-12" translate>Settings</span>
|
||||
</div>
|
||||
<div>Global preferences</div>
|
||||
<div translate>Global preferences</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
14
public/views/includes/terms.html
Normal file
14
public/views/includes/terms.html
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<ul>
|
||||
<li translate>The software you are about to use functions as a free, open source, and multi-signature digital wallet.</li>
|
||||
<li translate>The software does not constitute an account where BitPay or other third parties serve as financial intermediaries or custodians of your bitcoin.</li>
|
||||
<li translate>While the software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, we cannot guarantee that there will be no bugs in the software.</li>
|
||||
<li translate>You acknowledge that your use of this software is at your own discretion and in compliance with all applicable laws.</li>
|
||||
<li translate>You are responsible for safekeeping your passwords, private key pairs, PINs and any other codes you use to access the software.</li>
|
||||
<li translate><b>IF YOU LOSE ACCESS TO YOUR COPAY WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT COPAY WALLET WILL BECOME INACCESSIBLE.</b></li>
|
||||
<li translate>All transaction requests are irreversible.</li>
|
||||
<li translate>The authors of the software, employees and affiliates of Bitpay, copyright holders, and BitPay, Inc. cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction confirmation as they do not have control over the Bitcoin network.</li>
|
||||
<li translate>To the fullest extent permitted by law, this software is provided “as is” and no representations or warranties can be made of any kind, express or implied, including but not limited to the warranties of merchantability, fitness or a particular purpose and noninfringement.</li>
|
||||
<li translate>You assume any and all risks associated with the use of the software.</li>
|
||||
<li translate>In no event shall the authors of the software, employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the software.</li>
|
||||
<li translate>We reserve the right to modify this disclaimer from time to time.</li>
|
||||
</ul>
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
<nav ng-controller="topbarController as topbar" class="tab-bar">
|
||||
<nav ng-controller="topbarController as topbar"
|
||||
class="tab-bar"
|
||||
ng-style="{'background-color': noColor ? '#4B6178' : index.backgroundColor}">
|
||||
<section class="left-small">
|
||||
<a id="hamburger" class="p10" ng-show="!goBackToState && !closeToHome && !index.noFocusedWallet"
|
||||
ng-click="index.openMenu()"><i class="fi-list size-24"></i>
|
||||
|
|
@ -14,12 +16,14 @@
|
|||
</a>
|
||||
</section>
|
||||
|
||||
<section class="right-small" ng-show="showCamera">
|
||||
<qr-scanner ng-show="index.isComplete" on-scan="topbar.onQrCodeScanned(data)" before-scan="topbar.openSendScreen()"></qr-scanner>
|
||||
<section class="right-small" ng-show="showPreferences && !index.noFocusedWallet">
|
||||
<a class="p10" ng-click="topbar.goPreferences()">
|
||||
<i class="fi-widget size-24"></i>
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color': noColor ? '#4A90E2' : index.backgroundColor}">
|
||||
<h1 class="title ellipsis">
|
||||
{{(titleSection|translate) || (index.alias || index.walletName)}}
|
||||
</h1>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,37 +1,36 @@
|
|||
<div class="ng-animate-disabled row collapse last-transactions-content line-b"
|
||||
ng-class="{'text-gray':!tx.pendingForUs}"
|
||||
ng-click="home.openTxpModal(tx, index.copayers, !!index.glideraStatus)">
|
||||
<div class="small-1 columns text-center" >
|
||||
<i class="icon-circle-active size-10" ng-show="tx.pendingForUs" ng-style="{'color':index.backgroundColor}" style="margin-top:8px;"></i>
|
||||
|
||||
</div>
|
||||
<div class="small-10 columns">
|
||||
<div>
|
||||
<span class="text-bold size-16"><span translate>Send</span> {{tx.amountStr}}</span>
|
||||
<time class="right size-12 text-gray m5t">{{ (tx.ts || tx.createdOn ) * 1000 | amTimeAgo}}</time>
|
||||
</div>
|
||||
<div class="ellipsis size-14">
|
||||
<span ng-if="tx.hasMultiplesOutputs">
|
||||
<span translate>Recipients</span>:
|
||||
<span>{{tx.recipientCount}}</span>
|
||||
<div class="large-6 medium-6 small-6 columns size-14">
|
||||
<div class="m10r left pr">
|
||||
<i class="icon-circle-active size-10" ng-show="tx.pendingForUs" ng-style="{'color':index.backgroundColor}"></i>
|
||||
<img src="img/icon-proposal.svg" alt="sync" width="40">
|
||||
</div>
|
||||
<div class="m10t">
|
||||
<span ng-if="!tx.merchant">
|
||||
{{index.addressbook[tx.toAddress]}}
|
||||
<span ng-show="!index.addressbook[tx.toAddress] && tx.message">
|
||||
<span class="ellipsis">{{tx.message}}</span>
|
||||
</span>
|
||||
<span ng-if="!tx.hasMultiplesOutputs">
|
||||
<span translate>To</span>:
|
||||
<span ng-if="tx.merchant">
|
||||
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span>
|
||||
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span>
|
||||
</span>
|
||||
<span ng-if="!tx.merchant">
|
||||
{{index.addressbook[tx.toAddress] || tx.toAddress}}
|
||||
</span>
|
||||
<span ng-show="!index.addressbook[tx.toAddress] && !tx.message">
|
||||
<span translate> Sending</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="ellipsis text-gray size-14">
|
||||
{{tx.message}}
|
||||
</div>
|
||||
</span>
|
||||
<span ng-if="tx.merchant">
|
||||
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span>
|
||||
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="small-1 columns text-right">
|
||||
<br>
|
||||
<div class="large-5 medium-5 small-5 columns text-right">
|
||||
<span class="size-16">
|
||||
- {{tx.amountStr}}
|
||||
</span>
|
||||
<div class="size-12 text-gray">
|
||||
<time>{{ (tx.ts || tx.createdOn ) * 1000 | amTimeAgo}}</time>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-1 medium-1 small-1 columns text-right m10t">
|
||||
<i class="icon-arrow-right3 size-18"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@
|
|||
<!-- <img style="height:1em" ng-show="index.preferences.email" src="img/icon-email.svg"> -->
|
||||
<img style="height:1em" ng-show="index.usingCustomBWS" src="img/icon-bws.svg">
|
||||
|
||||
<img style="height:1em" class="animated flash infinite" ng-show="index.updatingTxHistory[index.walletId]" src="img/icon-sync.svg">
|
||||
<img style="height:1em" class="animated flash infinite" ng-show="index.loadingWallet || index.updatingTxHistory[index.walletId]" src="img/icon-sync.svg">
|
||||
|
||||
|
|
|
|||
|
|
@ -34,13 +34,13 @@
|
|||
</div>
|
||||
|
||||
<form name="joinForm" ng-submit="join.join(joinForm)" novalidate>
|
||||
<div class="box-notification m20b" ng-show="join.error ">
|
||||
<span class="text-warning">
|
||||
{{join.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-12 columns">
|
||||
<div class="box-notification" ng-show="join.error ">
|
||||
<span class="text-warning size-14">
|
||||
{{join.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="large-12 columns">
|
||||
|
||||
<div>
|
||||
<label><span translate>Your nickname</span>
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
<div ng-show="join.seedSourceId=='new' ">
|
||||
<label for="createPassphrase" ><span translate>Add a Seed Passphrase</span> <small translate>Add an optional passphrase to secure the seed</small>
|
||||
<div class="input">
|
||||
<input type="text" class="form-control"
|
||||
<input type="text" class="form-control" autocapitalize="off"
|
||||
name="createPassphrase" ng-model="createPassphrase">
|
||||
</div>
|
||||
</label>
|
||||
|
|
@ -127,6 +127,7 @@
|
|||
<span translate>Wallet Seed</span>
|
||||
<small translate>Enter the seed words (BIP39)</small>
|
||||
<input id="ext-master"
|
||||
autocapitalize="off"
|
||||
type="text"
|
||||
name="privateKey" ng-model="privateKey">
|
||||
</label>
|
||||
|
|
@ -135,7 +136,7 @@
|
|||
<div ng-show="join.seedSourceId=='set'">
|
||||
<label for="passphrase"> <span translate>Seed Passphrase</span> <small translate>The seed could require a passphrase to be imported</small>
|
||||
<div class="input">
|
||||
<input type="text" class="form-control" name="passphrase" ng-model="passphrase">
|
||||
<input type="text" autocapitalize="off" class="form-control" name="passphrase" ng-model="passphrase">
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
<nav class="tab-bar">
|
||||
<section class="left-small">
|
||||
<a ng-click="cancel()" class="p10">
|
||||
<span class="text-close" translate>Close</span>
|
||||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
|
||||
Advanced Send
|
||||
</h1>
|
||||
</section>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="modal-content fix-modals-touch">
|
||||
<ul class="no-bullet m0 size-14">
|
||||
<h4 class="title m0" translate>Fee Policy</h4>
|
||||
<li ng-repeat="fee in (network == 'livenet' ? feeLevels.livenet : feeLevels.testnet)" ng-click="save(fee.level)" class="line-b p20">
|
||||
<span class="text-capitalize">{{fee.level|translate}}</span>
|
||||
<i class="fi-check size-16 right" ng-show="currentFeeLevel == fee.level"></i>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="row column m20t">
|
||||
<div class="text-gray size-12 text-center" ng-repeat="fee in (network == 'livenet' ? feeLevels.livenet :
|
||||
feeLevels.testnet)" ng-if="fee.level == currentFeeLevel">
|
||||
<span translate>Average confirmation time: {{fee.nbBlocks * 10}} minutes</span>.
|
||||
<span class="size-12 text-light" translate>Current fee rate for this policy: {{fee.feePerKBUnit}}/kiB</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="extra-margin-bottom"></div>
|
||||
</div>
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<nav class="tab-bar">
|
||||
<nav class="tab-bar" ng-style="{'background-color':color}">
|
||||
<section class="left-small">
|
||||
<a ng-click="cancel()" class="p10">
|
||||
<span class="text-close" translate>Close</span>
|
||||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
|
||||
<h1 class="title ellipsis" translate>
|
||||
Request a specific amount
|
||||
</h1>
|
||||
</section>
|
||||
|
|
@ -60,20 +60,20 @@
|
|||
<span translate>Amount</span>
|
||||
</label>
|
||||
<div class="input">
|
||||
<input type="number" id="amount" name="amount" ng-attr-placeholder="{{'Amount'|translate}}"
|
||||
ng-model="_customAmount" valid-amount required autocomplete="off">
|
||||
<input type="number" id="amount" name="amount" ng-attr-placeholder="{{'Amount in'|translate}} {{unitName}}"
|
||||
ng-model="_customAmount" ng-minlength="0.00000001" ng-maxlength="10000000000" valid-amount required autocomplete="off">
|
||||
<input type="number" id="alternative" name="alternative" ng-model="_customAlternative" style="display:none">
|
||||
<a class="postfix" ng-click="toggleAlternative()">{{unitName}}</a>
|
||||
<a class="postfix button" ng-style="{'background-color':color}" ng-click="toggleAlternative()">{{unitName}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-if="showAlternative">
|
||||
<label for="alternative"><span translate>Amount in</span> {{ alternativeName }}
|
||||
<label for="alternative"><span translate>Amount</span> [{{ alternativeIsoCode }}]
|
||||
</label>
|
||||
<div class="input">
|
||||
<input type="number" id="alternative" name="alternative" ng-attr-placeholder="{{'Amount'|translate}}"
|
||||
<input type="number" id="alternative" name="alternative" ng-attr-placeholder="{{'Amount in'|translate}} {{alternativeName}}"
|
||||
ng-model="_customAlternative" required autocomplete="off" required>
|
||||
<input type="number" id="amount" name="amount" ng-model="_customAmount" style="display:none">
|
||||
<a class="postfix" ng-click="toggleAlternative()"> {{ alternativeIsoCode }}</a>
|
||||
<a class="postfix button black" ng-click="toggleAlternative()"> {{ alternativeIsoCode }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="button black round expand" ng-disabled="amountForm.$invalid" ng-style="{'background-color':color}" translate>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<div ng-init="wallets[0] ? selectedWalletsOpt = true : selectedWalletsOpts = false">
|
||||
<nav class="tab-bar">
|
||||
<nav class="tab-bar" ng-style="{'background-color':color}">
|
||||
<section class="left-small">
|
||||
<a ng-show="!editAddressbook && !addAddressbookEntry" ng-click="cancel()" class="p10">
|
||||
<span class="text-close" translate>Close</span>
|
||||
|
|
@ -7,20 +7,8 @@
|
|||
</section>
|
||||
|
||||
<section class="middle tab-bar-section">
|
||||
<ul class="button-group round even-2" ng-show="!editAddressbook && wallets[0] && !addAddressbookEntry">
|
||||
<li class="ellipsis" ng-class="{'selected':selectedWalletsOpt}" ng-click="selectedWalletsOpt = true"
|
||||
translate>
|
||||
Wallets
|
||||
</li>
|
||||
<li class="ellipsis" ng-class="{'selected':!selectedWalletsOpt}" ng-click="selectedWalletsOpt = false" translate>
|
||||
Addressbook
|
||||
</li>
|
||||
</ul>
|
||||
<h1 ng-show="(editAddressbook || !wallets[0]) && !addAddressbookEntry" class="title ellipsis" translate>
|
||||
Addressbook
|
||||
</h1>
|
||||
<h1 ng-show="addAddressbookEntry" class="title ellipsis" translate>
|
||||
Add a new entry
|
||||
<h1 class="title ellipsis">
|
||||
{{walletName}}
|
||||
</h1>
|
||||
</section>
|
||||
|
||||
|
|
@ -34,7 +22,27 @@
|
|||
</section>
|
||||
</nav>
|
||||
|
||||
<div class="modal-content fix-modals-touch">
|
||||
<div class="modal-content fix-modals-touch p20b">
|
||||
<div class="create-tab small-only-text-center">
|
||||
<div class="row">
|
||||
<div class="tab-container small-6 medium-3 large-2"
|
||||
ng-class="{'selected':selectedWalletsOpt}"
|
||||
ng-style="{'border-color':selectedWalletsOpt ? color : 'inherit'}"
|
||||
ng-click="selectedWalletsOpt = true">
|
||||
<a href
|
||||
ng-style="{'color':selectedWalletsOpt ? color : 'inherit'}"
|
||||
ng-click="create.setTotalCopayers(1)" translate> My wallets</a>
|
||||
</div>
|
||||
<div class="tab-container small-6 medium-3 large-2"
|
||||
ng-class="{'selected':!selectedWalletsOpt}"
|
||||
ng-style="{'border-color':!selectedWalletsOpt ? color : 'inherit'}"
|
||||
ng-click="selectedWalletsOpt = false">
|
||||
<a href
|
||||
ng-style="{'color':!selectedWalletsOpt ? color : 'inherit'}"
|
||||
ng-click="create.setTotalCopayers(3)" translate>My contacts</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="selectedWalletsOpt">
|
||||
<div class="onGoingProcess" ng-if="gettingAddress">
|
||||
<div class="onGoingProcess-content" ng-style="{'background-color':'#222'}">
|
||||
|
|
@ -54,7 +62,9 @@
|
|||
<li class="line-b" ng-repeat="w in wallets">
|
||||
<a ng-click="selectWallet(w.id, w.name)" class="db oh">
|
||||
<div class="avatar-wallet"
|
||||
ng-style="{'background-color':w.color}">{{(w.name || w.id) | limitTo: 1}}</div>
|
||||
ng-style="{'background-color':w.color}">
|
||||
<i class="icon-wallet size-21 vt"></i>
|
||||
</div>
|
||||
<div class="ellipsis name-wallet text-bold">{{w.name || w.id}}</div>
|
||||
<div class="size-12">{{w.m}} of {{w.n}}
|
||||
<span ng-show="w.network=='testnet'">[Testnet]</span>
|
||||
|
|
@ -76,14 +86,18 @@
|
|||
ng-click="toggleSelectAddressbook(addr)">
|
||||
<i class="fi-trash"></i></a>
|
||||
<div ng-click="selectAddressbook(addr)">
|
||||
{{label}}
|
||||
<div class="size-10 text-gray ellipsis">{{addr}}</div>
|
||||
|
||||
<i class="icon-contact left size-42 m10r text-gray"></i>
|
||||
<div class="">
|
||||
<span>{{label}}</span>
|
||||
<div class="size-12 text-gray ellipsis">{{addr}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="m10t" ng-show="!editAddressbook">
|
||||
<a ng-click="toggleAddAddressbookEntry()" class="p10">
|
||||
<i class="fi-plus size-18 m10r"></i>
|
||||
<span class="text-close size-12" translate>Add a new entry</span>
|
||||
<li class="p10" ng-show="!editAddressbook">
|
||||
<a ng-click="toggleAddAddressbookEntry()" class="p0i">
|
||||
<i class="fi-plus size-24 m20r lh icon"></i>
|
||||
<span class="size-12 tu text-bold" translate>Add a new entry</span>
|
||||
<span ng-show="!list[newAddress] && newAddress">({{newAddress}})</span>
|
||||
</a>
|
||||
</li>
|
||||
|
|
@ -121,10 +135,9 @@
|
|||
</div>
|
||||
<div class="columns large-6 medium-6 small-6">
|
||||
<input type="submit"
|
||||
class="button expand round"
|
||||
class="button expand round black"
|
||||
value="{{'Save'|translate}}"
|
||||
ng-disabled="!addressbookForm.$valid"
|
||||
ng-style="{'background-color':color}"
|
||||
ng-click="newAddress = ''; add(addressbook)">
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@
|
|||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}">
|
||||
<h1 class="title ellipsis">
|
||||
Details
|
||||
</h1>
|
||||
</section>
|
||||
</nav>
|
||||
|
||||
<div class="modal-content fix-modals-touch">
|
||||
<div class="modal-content fix-modals-touch"
|
||||
ng-swipe-disable-mouse
|
||||
ng-swipe-right="cancel()">
|
||||
<div class="header-modal bg-gray text-center">
|
||||
<div class="p20">
|
||||
<img src="img/bought.svg" alt="bought" width="80" ng-show="tx.type == 'BUY' && tx.status == 'COMPLETE'">
|
||||
|
|
|
|||
|
|
@ -28,7 +28,9 @@
|
|||
<li class="line-b" ng-repeat="w in wallets">
|
||||
<a ng-click="selectWallet(w.id, w.name)" class="db oh">
|
||||
<div class="avatar-wallet"
|
||||
ng-style="{'background-color':w.color}">{{(w.name || w.id) | limitTo: 1}}</div>
|
||||
ng-style="{'background-color':w.color}">
|
||||
<i class="icon-wallet size-21"></i>
|
||||
</div>
|
||||
<div class="ellipsis name-wallet text-bold">{{w.name || w.id}}</div>
|
||||
<div class="size-12">{{w.m}} of {{w.n}}
|
||||
<span ng-show="w.network=='testnet'">[Testnet]</span>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<nav class="tab-bar">
|
||||
<nav class="tab-bar" ng-style="{'background-color':color}">
|
||||
<section class="left-small">
|
||||
<a ng-click="cancel()" class="p10">
|
||||
<span class="text-close" translate>Close</span>
|
||||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
|
||||
<h1 class="title ellipsis" translate>
|
||||
Payment request
|
||||
</h1>
|
||||
</section>
|
||||
|
|
@ -24,15 +24,15 @@
|
|||
<h4 class="title m0" translate>Details</h4>
|
||||
<ul class="no-bullet size-14 m0">
|
||||
<li class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Pay To</span>:
|
||||
<span class="text-gray" translate>Pay To</span>
|
||||
<span class="right enable_text_select">{{paypro.domain}}</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh" ng-if="paypro.toAddress">
|
||||
<span class="text-gray" translate>Address</span>:
|
||||
<span class="text-gray" translate>Address</span>
|
||||
<span class="right enable_text_select">{{paypro.toAddress}}</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Certified by</span>:
|
||||
<span class="text-gray" translate>Certified by</span>
|
||||
<span class="right text-right">
|
||||
<span ng-show="paypro.caTrusted">
|
||||
<i class="fi-lock color-greeni"></i>
|
||||
|
|
@ -51,11 +51,11 @@
|
|||
</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh" ng-if="paypro.memo">
|
||||
<span class="text-gray" translate>Memo</span>:
|
||||
<span class="text-gray" translate>Memo</span>
|
||||
<span class="right">{{paypro.memo}}</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh" ng-if="paypro.expires">
|
||||
<span class="text-gray" translate>Expires</span>:
|
||||
<span class="text-gray" translate>Expires</span>
|
||||
<span class="right">{{paypro.expires * 1000 | amTimeAgo }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<nav class="tab-bar">
|
||||
<nav class="tab-bar" ng-style="{'background-color':color}">
|
||||
<section class="left-small">
|
||||
<a ng-click="cancel()">
|
||||
<i class="icon-arrow-left3 icon-back"></i>
|
||||
|
|
@ -6,18 +6,33 @@
|
|||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
|
||||
<h1 class="title ellipsis" translate>
|
||||
Transaction
|
||||
</h1>
|
||||
</section>
|
||||
</nav>
|
||||
|
||||
<div class="modal-content fix-modals-touch">
|
||||
<div class="header-modal text-center">
|
||||
<div class="size-42" ng-show="btx.action != 'invalid'">
|
||||
<div class="modal-content fix-modals-touch"
|
||||
ng-swipe-disable-mouse
|
||||
ng-swipe-right="cancel()">
|
||||
<div class="header-modal size-36 text-center">
|
||||
<div ng-show="btx.action != 'invalid'">
|
||||
<div ng-show="btx.action == 'received'">
|
||||
<img src="img/icon-receive-history.svg" alt="sync" width="50">
|
||||
<p class="m0 text-gray size-14" translate>Received</p>
|
||||
</div>
|
||||
<div ng-show="btx.action == 'sent'">
|
||||
<img src="img/icon-sent-history.svg" alt="sync" width="50">
|
||||
<p class="m0 text-gray size-14" translate>Sent</p>
|
||||
</div>
|
||||
<div ng-show="btx.action == 'moved'">
|
||||
<img src="img/icon-moved.svg" alt="sync" width="50">
|
||||
<p class="m0 text-gray size-14" translate>Moved</p>
|
||||
</div>
|
||||
|
||||
<span ng-if="btx.action == 'received'">+</span><span ng-if="btx.action == 'sent'">-</span>{{btx.amountStr}}
|
||||
</div>
|
||||
<div class="size-42" ng-show="btx.action == 'invalid'">
|
||||
<div ng-show="btx.action == 'invalid'">
|
||||
-
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -27,7 +42,7 @@
|
|||
<ul class="no-bullet size-14 m0">
|
||||
|
||||
<li ng-if="!btx.hasMultiplesOutputs && btx.addressTo && btx.addressTo != 'N/A'" class="line-b p10 oh" ng-click="copyAddress(btx.addressTo)">
|
||||
<span class="text-gray" translate>To</span>:
|
||||
<span class="text-gray" translate>To</span>
|
||||
<span class="right">
|
||||
<span ng-if="btx.merchant">
|
||||
<span ng-show="btx.merchant.pr.ca"><i class="fi-lock color-greeni"></i> {{btx.merchant.domain}}</span>
|
||||
|
|
@ -42,7 +57,7 @@
|
|||
|
||||
<li ng-show="btx.hasMultiplesOutputs" class="line-b p10 oh"
|
||||
ng-click="showMultiplesOutputs = !showMultiplesOutputs">
|
||||
<span class="text-gray" translate>Recipients</span>:
|
||||
<span class="text-gray" translate>Recipients</span>
|
||||
<span class="right">{{btx.recipientCount}}
|
||||
<i ng-show="showMultiplesOutputs" class="icon-arrow-up3 size-24"></i>
|
||||
<i ng-show="!showMultiplesOutputs" class="icon-arrow-down3 size-24"></i>
|
||||
|
|
@ -55,7 +70,7 @@
|
|||
</div>
|
||||
|
||||
<li ng-show="btc.message" class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Note</span>:
|
||||
<span class="text-gray" translate>Note</span>
|
||||
<span class="right">{{btx.message}}</span>
|
||||
</li>
|
||||
|
||||
|
|
@ -64,28 +79,28 @@
|
|||
This transaction has become invalid; possibly due to a double spend attempt.
|
||||
</span>
|
||||
<li ng-if="btx.time" class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Date</span>:
|
||||
<span class="text-gray" translate>Date</span>
|
||||
<span class="right">
|
||||
<time>{{ btx.time * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
|
||||
<time>({{ btx.time * 1000 | amTimeAgo}})</time>
|
||||
</span>
|
||||
</li>
|
||||
<li class="line-b p10" ng-show="btx.action != 'received'">
|
||||
<span class="text-gray" translate>Fee</span>:
|
||||
<span class="text-gray" translate>Fee</span>
|
||||
<span class="right">{{btx.feeStr}}</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh" ng-if="btx.message && btx.action != 'received'">
|
||||
<span class="text-gray" translate>Note</span>:
|
||||
<span class="text-gray" translate>Note</span>
|
||||
<span class="right">{{btx.message}}</span>
|
||||
</li>
|
||||
<li ng-if="btx.merchant" class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Merchant message</span>:
|
||||
<span class="text-gray" translate>Merchant message</span>
|
||||
<span class="right">
|
||||
{{btx.merchant.pr.pd.memo}}
|
||||
</span>
|
||||
</li>
|
||||
<li ng-if="btx.time" class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Confirmations</span>:
|
||||
<span class="text-gray" translate>Confirmations</span>
|
||||
<span class="right" >
|
||||
<span class="text-warning" ng-show="!btx.confirmations || btx.confirmations == 0" translate>
|
||||
Unconfirmed
|
||||
|
|
@ -105,11 +120,12 @@
|
|||
<h4 class="title m0" translate>Participants</h4>
|
||||
<ul class="no-bullet size-14 m0">
|
||||
<li class="line-b p10 text-gray" ng-repeat="c in btx.actions">
|
||||
<span class="right">
|
||||
<i ng-if="c.type == 'reject'" class="fi-x icon-sign x db"></i>
|
||||
<i ng-if="c.type == 'accept'" class="fi-check icon-sign check db"></i>
|
||||
</span>
|
||||
{{c.copayerName}} <span ng-if="c.copayerId == copayerId">({{'Me'|translate}})</span>
|
||||
<i class="icon-contact size-24"></i>
|
||||
<span class="right">
|
||||
<i ng-if="c.type == 'reject'" class="fi-x icon-sign x db"></i>
|
||||
<i ng-if="c.type == 'accept'" class="fi-check icon-sign check db"></i>
|
||||
</span>
|
||||
{{c.copayerName}} <span ng-if="c.copayerId == copayerId">({{'Me'|translate}})</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,21 @@
|
|||
|
||||
<div ng-if="type == 'broadcasted'" class="popup-txsent">
|
||||
<i class="small-centered columns fi-check m20tp"></i>
|
||||
<div class="text-center size-18 text-white text-bold tu p20">
|
||||
<span translate>Payment Sent</span>
|
||||
<div ng-if="type == 'broadcasted'" class="popup-txsent text-center">
|
||||
<i class="small-centered columns fi-check m30tp" ng-style="{'color':color, 'border-color':color}"></i>
|
||||
<div ng-show="tx.amountStr" class="m20t size-36 text-white">
|
||||
{{tx.amountStr}}
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<a class="button outline round white tiny small-4" ng-click="cancel()">OKAY</a>
|
||||
<div class="size-16 text-gray">
|
||||
<span translate>Sent</span>
|
||||
</div>
|
||||
<div class="text-center m20t">
|
||||
<a class="button outline round light-gray tiny small-4" ng-click="cancel()">OKAY</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-if="type == 'created'" class="popup-txsigned">
|
||||
<i class="small-centered columns fi-check m20tp"></i>
|
||||
<div class="text-center size-18 text-primary tu text-bold p20">
|
||||
<i class="small-centered columns fi-check m30tp" ng-style="{'color':color, 'border-color':color}"></i>
|
||||
<div class="text-center size-18 tu text-bold p20" ng-style="{'color':color}">
|
||||
<span translate>Payment Proposal Created</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
|
|
@ -23,8 +26,8 @@
|
|||
|
||||
|
||||
<div ng-if="type == 'accepted'" class="popup-txsigned">
|
||||
<i class="small-centered columns fi-check m20tp"></i>
|
||||
<div class="text-center size-18 text-primary tu text-bold p20">
|
||||
<i class="small-centered columns fi-check m30tp" ng-style="{'color':color, 'border-color':color}"></i>
|
||||
<div class="text-center size-18 text-primary tu text-bold p20" ng-style="{'color':color}">
|
||||
<span translate>Payment Accepted</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
|
|
@ -33,8 +36,8 @@
|
|||
</div>
|
||||
|
||||
<div ng-if="type=='rejected'" class="popup-txrejected">
|
||||
<i class="fi-x small-centered columns m20tp"></i>
|
||||
<div class="text-center size-18 tu text-warning text-bold p20">
|
||||
<i class="fi-x small-centered columns m30tp" ng-style="{'color':color, 'border-color':color}"></i>
|
||||
<div class="text-center size-18 tu text-bold p20" ng-style="{'color':color}">
|
||||
<span translate>Payment Rejected</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<nav class="tab-bar">
|
||||
<nav class="tab-bar" ng-style="{'background-color':color}">
|
||||
<section class="left-small">
|
||||
<a ng-click="cancel()">
|
||||
<i class="icon-arrow-left3 icon-back"></i>
|
||||
|
|
@ -6,35 +6,95 @@
|
|||
</a>
|
||||
</section>
|
||||
<section class="middle tab-bar-section">
|
||||
<h1 class="title ellipsis" ng-style="{'color':color}" translate>
|
||||
<h1 class="title ellipsis" translate>
|
||||
Payment Proposal
|
||||
</h1>
|
||||
</section>
|
||||
</nav>
|
||||
<div class="modal-content fix-modals-touch" ng-init="updateCopayerList()">
|
||||
<div class="modal-content fix-modals-touch"
|
||||
ng-swipe-disable-mouse
|
||||
ng-swipe-right="cancel()"
|
||||
ng-init="updateCopayerList()">
|
||||
<div class="payment-proposal-head"
|
||||
ng-style="{'background-color':color}">
|
||||
<div class="size-36">{{tx.amountStr}}</div>
|
||||
<div class="size-14 text-light" ng-show="tx.alternativeAmountStr">{{tx.alternativeAmountStr}}</div>
|
||||
<i class="db fi-arrow-down size-24 m10v"></i>
|
||||
<span class="payment-proposal-to"
|
||||
ng-click="copyAddress(tx.toAddress)">
|
||||
<i class="fi-bitcoin left"></i>
|
||||
<contact ng-if="!tx.hasMultiplesOutputs" class="dib enable_text_select ellipsis m5t size-14" address="{{tx.toAddress}}"></contact>
|
||||
<span ng-if="tx.hasMultiplesOutputs" translate>
|
||||
Multiple recipients
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="oh">
|
||||
<div class="box-notification m20t" ng-show="error">
|
||||
<span class="text-warning size-14">
|
||||
{{error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row column m20t text-center text-warning size-12" ng-if="tx.removed" translate>
|
||||
The payment was removed by creator
|
||||
</div>
|
||||
|
||||
<div class="oh p20t white" ng-if="tx.pendingForUs">
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button class="button outline round dark-gray expand" ng-click="reject(tx);"
|
||||
ng-disabled="loading">
|
||||
<i class="fi-x"></i>
|
||||
<span translate>Reject</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns text-right" ng-show="canSign">
|
||||
<button class="button primary round expand" ng-click="sign(tx)"
|
||||
ng-style="{'background-color':color}"
|
||||
ng-disabled="loading">
|
||||
<i class="fi-check"></i>
|
||||
<span translate>Accept</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center text-gray size-12 m20t" ng-show="tx.status != 'pending'">
|
||||
<div ng-show="tx.status=='accepted' && !tx.isGlidera">
|
||||
<div class="m10b" translate>Payment accepted, but not yet broadcasted</div>
|
||||
|
||||
<button class="primary round m0"
|
||||
ng-style="{'background-color':color}"
|
||||
ng-click="broadcast(tx)"
|
||||
ng-disabled="loading"
|
||||
> <i class="fi-upload-cloud"></i>
|
||||
<span translate>Broadcast Payment</span>
|
||||
</button>
|
||||
</div>
|
||||
<div ng-show="tx.status=='accepted' && tx.isGlidera" >
|
||||
<div class="m10h" translate>Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created.</div>
|
||||
</div>
|
||||
<div class="text-success"
|
||||
ng-show="tx.status=='broadcasted'" translate>
|
||||
Payment Sent
|
||||
</div>
|
||||
<div class="text-warning"
|
||||
ng-show="tx.status=='rejected'" translate>
|
||||
Payment Rejected
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="title m0" translate>Details</h4>
|
||||
<ul class="no-bullet size-14 m0">
|
||||
<li ng-if="!tx.hasMultiplesOutputs"
|
||||
class="line-b p10 oh"
|
||||
ng-click="copyAddress(tx.toAddress)">
|
||||
<span class="text-gray" translate>To</span>:
|
||||
<contact class="right enable_text_select" address="{{tx.toAddress}}"></contact>
|
||||
</li>
|
||||
<li class="line-b p10">
|
||||
<span ng-show="tx.hasMultiplesOutputs" class="text-gray" translate>Total</span>
|
||||
<span ng-show="!tx.hasMultiplesOutputs" class="text-gray" translate>Amount</span>:
|
||||
<span class="right">{{tx.amountStr}}
|
||||
<span ng-show="tx.alternativeAmountStr" class="label gray radius">{{tx.alternativeAmountStr}}</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Note</span>:
|
||||
<li class="line-b p10 oh" ng-show="tx.message">
|
||||
<span class="text-gray" translate>Note</span>
|
||||
<span class="right">{{tx.message}}</span>
|
||||
</li>
|
||||
|
||||
<li ng-show="tx.hasMultiplesOutputs" class="line-b p10 oh"
|
||||
ng-click="showMultiplesOutputs = !showMultiplesOutputs">
|
||||
<span class="text-gray" translate>Recipients</span>:
|
||||
<span class="text-gray" translate>Recipients</span>
|
||||
<span class="right">{{tx.recipientCount}}
|
||||
<i ng-show="showMultiplesOutputs" class="icon-arrow-up3 size-24"></i>
|
||||
<i ng-show="!showMultiplesOutputs" class="icon-arrow-down3 size-24"></i>
|
||||
|
|
@ -47,28 +107,29 @@
|
|||
</div>
|
||||
|
||||
<li class="line-b p10">
|
||||
<span class="text-gray" translate>Fee</span>:
|
||||
<span class="text-gray" translate>Fee</span>
|
||||
<span class="right">{{tx.feeStr}}</span>
|
||||
</li>
|
||||
<li class="line-b p10">
|
||||
<span class="text-gray" translate>Time</span>:
|
||||
<span class="text-gray" translate>Time</span>
|
||||
<span class="right">
|
||||
<time>{{ (tx.ts || tx.createdOn ) * 1000 | amTimeAgo}}</time>
|
||||
</span>
|
||||
</li>
|
||||
<li class="line-b p10 oh">
|
||||
<span class="text-gray" translate>Created by</span>:
|
||||
<span class="text-gray" translate>Created by</span>
|
||||
<span class="right">{{tx.creatorName}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="p10 text-center size-12" ng-show="!currentSpendUnconfirmed && tx.hasUnconfirmedInputs">
|
||||
<span class="text-warning" translate>Warning: this transaction has unconfirmed inputs</span>
|
||||
</div>
|
||||
|
||||
<div ng-if="tx.paypro">
|
||||
<h4 class="title m0" translate>Payment details</h4>
|
||||
<ul class="no-bullet size-14 m0">
|
||||
<li class="line-b p10">
|
||||
<span class="text-gray" translate>To</span>:
|
||||
<span class="text-gray" translate>To</span>
|
||||
<span class="right">
|
||||
<span>
|
||||
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.paypro.domain}}</span>
|
||||
|
|
@ -78,83 +139,36 @@
|
|||
</span>
|
||||
</li>
|
||||
<li class="line-b p10">
|
||||
<span class="text-gray" translate>Expires</span>:
|
||||
<span class="text-gray" translate>Expires</span>
|
||||
<span class="right">
|
||||
<time>{{tx.paypro.expirationDate | amTimeAgo }}</time>
|
||||
</span>
|
||||
</li>
|
||||
<li class="line-b p10">
|
||||
<span class="text-gray">Merchant Message:</span>
|
||||
<span class="text-gray">Merchant Message</span>
|
||||
<span class="db">{{tx.paypro.pr.pd.memo}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div ng-if="tx.actions[0] && !txRejected && !txBroadcasted">
|
||||
<h4 class="title m0" translate>Participants</h4>
|
||||
<h4 class="title m0">
|
||||
<div class="right size-12 text-gray m10r">
|
||||
{{tx.requiredSignatures}}/{{tx.walletN}}
|
||||
</div>
|
||||
<span translate>Participants</span>
|
||||
</h4>
|
||||
<ul class="no-bullet size-14 m0">
|
||||
<li class="line-b p10 text-gray" ng-repeat="ac in tx.actions">
|
||||
<i class="icon-contact size-24"></i>
|
||||
{{ac.copayerName}} <span ng-if="ac.copayerId == copayerId">({{'Me'|translate}})</span>
|
||||
<span class="right">
|
||||
<i ng-if="ac.type == 'reject'" class="fi-x icon-sign x db"></i>
|
||||
<i ng-if="ac.type == 'accept'" class="fi-check icon-sign check db"></i>
|
||||
<i ng-if="!ac.type" class="fi-loop"></i>
|
||||
</span>
|
||||
{{ac.copayerName}} <span ng-if="ac.copayerId == copayerId">({{'Me'|translate}})</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="box-notification m20t" ng-show="error">
|
||||
<span class="text-warning size-14">
|
||||
{{error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row column m20t text-center text-warning" ng-if="tx.removed" translate>
|
||||
The payment was removed by creator
|
||||
</div>
|
||||
|
||||
<div class="row m20t" ng-if="tx.pendingForUs">
|
||||
<div class="large-5 medium-5 small-6 columns">
|
||||
<button class="button outline round dark-gray expand" ng-click="reject(tx);"
|
||||
ng-disabled="loading">
|
||||
<i class="fi-x"></i>
|
||||
<span translate>Reject</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="large-5 medium-5 small-6 columns text-right" ng-show="canSign">
|
||||
<button class="button primary round expand" ng-click="sign(tx)"
|
||||
ng-style="{'background-color':color}"
|
||||
ng-disabled="loading">
|
||||
<i class="fi-check"></i>
|
||||
<span translate>Accept</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center text-gray m20t" ng-show="tx.status != 'pending'">
|
||||
<div ng-show="tx.status=='accepted' && !tx.isGlidera" >
|
||||
<div class="m10b size-12" translate>Payment accepted, but not yet broadcasted</div>
|
||||
|
||||
<button class="primary round"
|
||||
ng-click="broadcast(tx)"
|
||||
ng-disabled="loading"
|
||||
> <i class="fi-upload-cloud"></i>
|
||||
<span translate>Broadcast Payment</span>
|
||||
</button>
|
||||
</div>
|
||||
<div ng-show="tx.status=='accepted' && tx.isGlidera" >
|
||||
<div class="m10 size-12" translate>Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created.</div>
|
||||
</div>
|
||||
<div class="text-success m10t"
|
||||
ng-show="tx.status=='broadcasted'" translate>
|
||||
Payment Sent
|
||||
</div>
|
||||
<div class="text-center text-warning m10t"
|
||||
ng-show="tx.status=='rejected'" translate>
|
||||
Payment Rejected
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns text-center m20t" ng-if="tx.canBeRemoved && isShared">
|
||||
<div class="text-gray size-12 m20b" ng-if="!tx.isGlidera" translate>
|
||||
|
|
|
|||
|
|
@ -19,9 +19,8 @@
|
|||
<span ng-show="paperWallet.sending" translate>Sending funds...</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-notification text-warning" ng-show="paperWallet.error">
|
||||
<i class="fi-alert size-12"></i>
|
||||
<span>{{paperWallet.error|translate}}</span>
|
||||
<div class="box-notification m20b" ng-show="paperWallet.error">
|
||||
<span classs="text-warning">{{paperWallet.error|translate}}</span>
|
||||
</div>
|
||||
<form ng-show="!paperWallet.balance" class="oh">
|
||||
<div class="row">
|
||||
|
|
|
|||
|
|
@ -32,7 +32,9 @@
|
|||
<li class="panel" ng-repeat="w in wallets">
|
||||
<a ng-click="payment.selectWallet(w.id)">
|
||||
<div class="avatar-wallet"
|
||||
ng-style="{'background-color':w.color}">{{(w.name || w.id) | limitTo: 1}}</div>
|
||||
ng-style="{'background-color':w.color}">
|
||||
<i class="icon-wallet size-21"></i>
|
||||
</div>
|
||||
<div class="ellipsis">{{w.name || w.id}}</div>
|
||||
<div class="size-12">{{w.m}} of {{w.n}}
|
||||
<span ng-show="w.network=='testnet'">[Testnet]</span>
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
<div class="content preferences" ng-controller="preferencesController as preferences" ng-init="preferences.init()">
|
||||
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0" ng-show="!index.noFocusedWallet">
|
||||
|
||||
<ul class="no-bullet m0" ng-show="!index.noFocusedWallet">
|
||||
|
||||
<li ng-click="$root.go('preferencesAlias')">
|
||||
<div class="right text-gray">
|
||||
|
|
@ -45,39 +45,55 @@
|
|||
<div translate>Hardware wallet</div>
|
||||
</li>
|
||||
|
||||
<h4>
|
||||
</h4>
|
||||
<li ng-click="$root.go('backup')" ng-hide="index.isPrivKeyExternal">
|
||||
<div class="right text-gray">
|
||||
<span class="text-warning" ng-show="index.needsBackup">
|
||||
<i class="fi-alert"></i> <span translate>Still not done</span>
|
||||
<i class="fi-alert"></i> <span translate>Not completed</span>
|
||||
</span>
|
||||
<i class="icon-arrow-right3 size-24 text-gray"></i>
|
||||
</div>
|
||||
<div translate>Backup</div>
|
||||
</li>
|
||||
|
||||
|
||||
<li ng-click="$root.go('preferencesAdvanced')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<div translate>Advanced</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h4 translate ng-show="index.canSign || !deleted">
|
||||
Security preferences
|
||||
</h4>
|
||||
|
||||
<div ng-show="!index.noFocusedWallet && index.canSign">
|
||||
<h4 translate ng-show="index.canSign">
|
||||
Spending Restrictions
|
||||
</h4>
|
||||
|
||||
<ul class="no-bullet m0">
|
||||
|
||||
<li>
|
||||
<switch id="network-name" name="encrypt" ng-model="encrypt" class="green right"></switch>
|
||||
<div translate>Request Password</div>
|
||||
</li>
|
||||
|
||||
<li ng-show="preferences.touchidAvailable">
|
||||
<switch id="touchid" name="touchid" ng-model="touchid" class="green right"></switch>
|
||||
<div translate>Scan Fingerprint</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h4></h4>
|
||||
|
||||
</div>
|
||||
<div ng-show ="!deleted">
|
||||
|
||||
<ul class="no-bullet m0">
|
||||
<li ng-click="$root.go('deleteWords')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<div translate>Delete seed words</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<h4></h4>
|
||||
</div>
|
||||
|
||||
<div class="extra-margin-bottom"></div>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0">
|
||||
<li ng-click="$root.go('disclaimer')">
|
||||
<li ng-click="$root.go('termOfUse')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<span translate>Terms of Use</span>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<div class="content preferences" ng-controller="preferencesAdvancedController as preferences">
|
||||
|
||||
<h4></h4>
|
||||
|
||||
<ul class="no-bullet m0">
|
||||
|
||||
<li ng-click="$root.go('information')">
|
||||
|
|
@ -26,14 +27,21 @@
|
|||
|
||||
<li ng-click="$root.go('preferencesBwsUrl')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<span>Wallet Service URL</span>
|
||||
<div>Wallet Service URL</div>
|
||||
</li>
|
||||
|
||||
<li ng-click="$root.go('preferencesHistory')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<div translate>Transaction History</div>
|
||||
</li>
|
||||
|
||||
<li ng-click="$root.go('delete')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<div translate>Delete Wallet</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div class="extra-margin-bottom"></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Wallet Service URL'; goBackToState = 'preferencesAdvanced'; noColor = true">
|
||||
ng-init="titleSection='Wallet Service URL'; goBackToState = 'preferencesAdvanced';">
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,21 +7,16 @@
|
|||
|
||||
<div class="content preferences" ng-controller="preferencesDeleteWalletController as preferences">
|
||||
|
||||
<h4></h4>
|
||||
<div class="text-center text-gray">
|
||||
<span translate>Wallet</span>: {{index.walletName}}
|
||||
<span ng-show="index.alias">({{index.alias}})</span>
|
||||
</div>
|
||||
<h4 class="text-warning text-center m0" translate>Warning!</h4>
|
||||
<div class="box-notification" ng-show="preferences.error" >
|
||||
<span class="text-warning size-14">
|
||||
{{preferences.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="columns text-center">
|
||||
<p translate class="size-14 text-gray">Permanently delete this wallet. THIS ACTION CANNOT BE REVERSED</p>
|
||||
<button class="button round expand warning" ng-click="preferences.deleteWallet()" translate>
|
||||
Delete wallet
|
||||
</button>
|
||||
<div class="text-center text-gray m20t size-12">
|
||||
<div class="text-warning size-18 m10b" translate>Warning!</div>
|
||||
<div class="m20b" translate>Permanently delete this wallet. THIS ACTION CANNOT BE REVERSED</div>
|
||||
</div>
|
||||
<ul class="no-bullet m0">
|
||||
<li ng-click="preferences.deleteWallet()">
|
||||
<div class="right" ng-style="{'color':index.backgroundColor}">
|
||||
{{index.walletName}} <span ng-show="index.alias">({{index.alias}})</span>
|
||||
</div>
|
||||
<div translate>Delete wallet</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
35
public/views/preferencesDeleteWords.html
Normal file
35
public/views/preferencesDeleteWords.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Delete Seed Words'; goBackToState = 'preferences'">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content preferences" ng-controller="preferencesDeleteWordsController as preferences">
|
||||
|
||||
<div ng-show="!preferences.deleted">
|
||||
<div class="text-center text-gray m20t size-12">
|
||||
<div class="box-notification text-warning" ng-show="preferences.error" >
|
||||
{{preferences.error|translate}}
|
||||
</div>
|
||||
<div class="text-warning size-18 m10b" translate>Warning!</div>
|
||||
<div class="m20b" ng-show="!index.needsBackup" translate>Once you have copied your wallet seed down, it is recommended to delete it from this device.</div>
|
||||
<div class="m20b" ng-show="index.needsBackup" translate>Need to do backup</div>
|
||||
</div>
|
||||
<ul class="no-bullet m0" ng-show="!index.needsBackup">
|
||||
<li ng-click="preferences.delete()">
|
||||
<div class="right" ng-style="{'color':index.backgroundColor}">
|
||||
{{index.walletName}} <span ng-show="index.alias">({{index.alias}})</span>
|
||||
</div>
|
||||
<div translate>Delete words</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="row m20t" ng-show="preferences.deleted">
|
||||
<div class="columns size-14 text-gray text-center" translate>
|
||||
Wallet seed not available. You can still export it from Advanced > Export.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Preferences'; goBackToState = 'glidera'">
|
||||
ng-init="titleSection='Preferences'; goBackToState = 'glidera'; noColor = true">
|
||||
</div>
|
||||
|
||||
<div class="content preferences" ng-controller="preferencesGlideraController as glidera">
|
||||
|
|
|
|||
|
|
@ -2,15 +2,13 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Global Preferences'; closeToHome = true; noColor = true">
|
||||
ng-init="titleSection='Global preferences'; closeToHome = true; noColor = true">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content preferences" ng-controller="preferencesGlobalController as prefGlobal" ng-init="prefGlobal.init()">
|
||||
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0 ">
|
||||
<h4></h4>
|
||||
|
||||
<li ng-click="$root.go('preferencesLanguage')">
|
||||
<div class="right text-gray">
|
||||
{{prefGlobal.currentLanguageName|translate}}
|
||||
|
|
@ -19,8 +17,8 @@
|
|||
<div translate>Language</div>
|
||||
</li>
|
||||
</ul>
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0 ">
|
||||
<h4></h4>
|
||||
<li ng-click="$root.go('preferencesUnit')">
|
||||
<div class="right text-gray">
|
||||
{{prefGlobal.unitName}}
|
||||
|
|
@ -36,8 +34,8 @@
|
|||
<div translate>Alternative Currency</div>
|
||||
</li>
|
||||
</ul>
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0 ">
|
||||
<h4></h4>
|
||||
<li ng-click="$root.go('preferencesFee')"
|
||||
ng-show="(index.network == 'livenet' ? index.feeLevels.livenet : index.feeLevels.testnet)">
|
||||
<div class="right text-gray">
|
||||
|
|
@ -51,8 +49,8 @@
|
|||
<div translate>Use Unconfirmed Funds</div>
|
||||
</li>
|
||||
</ul>
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0 ">
|
||||
<h4></h4>
|
||||
<li>
|
||||
<switch id="glidera-enabled" name="glideraEnabled" ng-model="glideraEnabled" class="green right"></switch>
|
||||
<div>Enable Glidera Service</div>
|
||||
|
|
@ -65,8 +63,8 @@
|
|||
</li>
|
||||
-->
|
||||
</ul>
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0">
|
||||
<h4></h4>
|
||||
<li ng-click="$root.go('about')">
|
||||
<i class="icon-arrow-right3 size-24 right text-gray"></i>
|
||||
<div translate>About Copay</div>
|
||||
|
|
|
|||
21
public/views/preferencesHistory.html
Normal file
21
public/views/preferencesHistory.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Transaction history'; goBackToState = 'preferencesAdvanced'">
|
||||
</div>
|
||||
<div class="content preferences" ng-controller="preferencesHistory as history">
|
||||
<h4></h4>
|
||||
<ul class="no-bullet m0">
|
||||
<li>
|
||||
<div ng-show="!index.isCordova">
|
||||
<input id="export_file" type="file" nwsaveas="Copay-{{index.alias || index.walletName}}.csv" accept=".csv" style="display:none">
|
||||
<a ng-style="{'color':index.backgroundColor}" ng-click="index.csvHistory();">
|
||||
<span translate>Export to file</span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
<li ng-style="{'color':index.backgroundColor}" ng-click="history.clearTransactionHistory();" translate>
|
||||
Clear cache
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -102,35 +102,31 @@
|
|||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="no-bullet m0 size-14" ng-show="addrs">
|
||||
<h4 class="title m0" translate>Last Wallet Addresses</h4>
|
||||
<li ng-repeat="a in addrs" class="oh">
|
||||
<div ng-show="addrs">
|
||||
<h4 class="title m0" translate>Last Wallet Addresses</h4>
|
||||
<ul class="no-bullet m0">
|
||||
<li ng-repeat="a in addrs" class="oh">
|
||||
<div class="enable_text_select ellipsis">
|
||||
{{a.address}}
|
||||
</div>
|
||||
<div class="text-gray size-12 right enable_text_select">
|
||||
{{a.path}} · {{a.createdOn *1000 | amDateFormat:'MMMM Do YYYY, h:mm a' }}
|
||||
</div>
|
||||
</li>
|
||||
<li class="line-b p10 text-centered text-gray size-12">
|
||||
<span translate>Only Main (not change) addresses are shown. The addresses on this list were not verified locally at this time.</span>
|
||||
</li>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="text-centered text-gray size-12 m10" translate>
|
||||
Only Main (not change) addresses are shown. The addresses on this list were not verified locally at this time.
|
||||
</div>
|
||||
|
||||
<li class="line-b p20" >
|
||||
<button class="black round small expand" ng-style="{'background-color':index.backgroundColor}" ng-click="index.retryScan(); $root.go('walletHome'); ">
|
||||
|
||||
<span translate>Scan addresses for funds</span>
|
||||
</button>
|
||||
|
||||
<button ng-show="index.isCordova" class="black round small expand"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
ng-click="info.sendAddrs()"
|
||||
ng-disabled="info.loading">
|
||||
<i class="fi-mail"></i>
|
||||
<span translate>Send addresses by email</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="no-bullet m0">
|
||||
<li ng-style="{'color':index.backgroundColor}" ng-click="index.retryScan(); $root.go('walletHome')" translate>
|
||||
Scan addresses for funds
|
||||
</li>
|
||||
<li ng-style="{'color':index.backgroundColor}" ng-show="index.isCordova" ng-click="info.sendAddrs()" translate>
|
||||
Send addresses by email
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="no-bullet m0 size-14" ng-show="index.balanceByAddress">
|
||||
<div ng-if="index.balanceByAddress[0]">
|
||||
|
|
@ -146,14 +142,6 @@
|
|||
</div>
|
||||
</ul>
|
||||
|
||||
<ul class="no-bullet m0 size-14">
|
||||
<h4 class="title m0" translate>Transaction history</h4>
|
||||
<li class="line-b p20 oh">
|
||||
<button class="black round small expand" ng-style="{'background-color':index.backgroundColor}" ng-click="info.clearTransactionHistory();">
|
||||
<span translate>Clear history</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4></h4>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Sell'; goBackToState = 'glidera'">
|
||||
ng-init="titleSection='Sell'; goBackToState = 'glidera'; noColor = true">
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -21,27 +21,22 @@
|
|||
</div>
|
||||
|
||||
<div ng-show="index.glideraLimits && !sell.show2faCodeInput && !sell.success">
|
||||
<h4 class="title m0">
|
||||
<div class="left">
|
||||
<i class="fi-info size-24 m10r"></i>
|
||||
</div>
|
||||
<div class="size-10">
|
||||
<span class="text-light">Daily sell limit</span>:
|
||||
{{index.glideraLimits.dailySell|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.dailySellRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
<br>
|
||||
<span class="text-light">Monthly sell limit</span>:
|
||||
{{index.glideraLimits.monthlySell|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.monthlySellRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
</div>
|
||||
<h4 class="title m0 text-left">
|
||||
<span class="text-light">Daily sell limit</span>:
|
||||
{{index.glideraLimits.dailySell|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.dailySellRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
<br>
|
||||
<span class="text-light">Monthly sell limit</span>:
|
||||
{{index.glideraLimits.monthlySell|currency:'':2}} {{index.glideraLimits.currency}}
|
||||
(remaining {{index.glideraLimits.monthlySellRemaining|currency:'':2}} {{index.glideraLimits.currency}})
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div class="row m20t">
|
||||
<div class="columns">
|
||||
|
||||
<div class="box-notification" ng-show="index.glideraLimits.transactDisabledPendingFirstTransaction">
|
||||
<span class="text-warning size-14">
|
||||
<div class="box-notification m20b" ng-show="index.glideraLimits.transactDisabledPendingFirstTransaction">
|
||||
<span class="text-warning">
|
||||
This operation was disabled because you have a pending first transaction
|
||||
</span>
|
||||
</div>
|
||||
|
|
@ -111,7 +106,7 @@
|
|||
Please, enter the code below
|
||||
</p>
|
||||
<form name="sellForm"
|
||||
ng-submit="sell.createTx(index.glideraToken, index.glideraPermissions, twoFaCode)" novalidate>
|
||||
ng-submit="sell.createTx(index.glideraToken, index.glideraPermissions, twoFaCode, index.feeRateToSendMax)" novalidate>
|
||||
<input type="number" ng-model="twoFaCode" required>
|
||||
<input class="button black expand round"
|
||||
ng-style="{'background-color':index.backgroundColor}"
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
<div class="splash content text-center"
|
||||
ng-init="init()"
|
||||
ng-controller="splashController">
|
||||
<div ng-if="!index.hasProfile">
|
||||
<div class="row">
|
||||
<div class="medium-centered small-centered large-centered columns">
|
||||
<div class="m20t">
|
||||
<span class="text-bold size-16 text-white" translate>WELCOME TO COPAY</span>
|
||||
<p class="text-gray size-14 m0 text-light" translate>A multisignature bitcoin wallet</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="container-image large-3 medium-3 small-3 medium-centered small-centered large-centered columns">
|
||||
<img src="img/icon-splash.png" alt="icon" width="100%">
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center size-12 text-warning" ng-show="error && !creatingProfile">
|
||||
{{(error)|translate}}. <span translate>Retrying...</span>
|
||||
</div>
|
||||
<div class="onGoingProcess" ng-show="creatingProfile">
|
||||
<div class="onGoingProcess-content" ng-style="{'background-color':'#222'}">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
<span translate>Creating Profile...</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" ng-show="!creatingProfile">
|
||||
<div class="start-button large-8 medium-8 small-8 medium-centered small-centered large-centered columns">
|
||||
<button ng-click="create()" class="button black expand round size-12 text-spacing" translate>
|
||||
GET STARTED
|
||||
</button>
|
||||
<p class="text-gray m5b size-12" translate>Already have a wallet?</p>
|
||||
<button ng-click="create(true)" class="button round outline dark-gray tiny" translate>Import backup </button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
16
public/views/termOfUse.html
Normal file
16
public/views/termOfUse.html
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<div
|
||||
class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="titleSection='Terms of use'; goBackToState = 'about'; noColor = true">
|
||||
</div>
|
||||
<div ng-controller="termOfUseController" class="content">
|
||||
<p class="enable_text_select m0">
|
||||
<div class="terms" ng-include="'views/includes/terms.html'"></div>
|
||||
</p>
|
||||
<div class="row text-center">
|
||||
<p ng-show="lang != 'en'">
|
||||
<a class="center" ng-click="$root.openExternalLink('https://copay.io/disclaimer')" translate>Official English Disclaimer</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="extra-margin-bottom"></div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
<div class="topbar-container"
|
||||
ng-include="'views/includes/topbar.html'"
|
||||
ng-init="showCamera = true">
|
||||
ng-init="showPreferences = true">
|
||||
</div>
|
||||
|
||||
<div ng-controller="walletHomeController as home">
|
||||
|
|
@ -72,10 +72,10 @@
|
|||
-->
|
||||
|
||||
<div id="walletHome" class="walletHome tab-view tab-in">
|
||||
<div class="oh">
|
||||
<div class="oh pr">
|
||||
<div class="amount" ng-style="{'background-color':index.backgroundColor}">
|
||||
<div ng-if="!index.anyOnGoingProcess && !index.notAuthorized">
|
||||
<div ng-show="index.updateError" ng-click='index.openWallet(); index.updateTxHistory()'>
|
||||
<div class="m15t" ng-show="index.updateError" ng-click='index.updateAll({triggerTxUpdate: true})'>
|
||||
<span class="size-12 db m10b">{{index.updateError|translate}}</span>
|
||||
<button class="outline white tiny round" translate>Tap to retry</button>
|
||||
</div>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
<br><span translate>Tap to retry</span>
|
||||
</div>
|
||||
|
||||
<div ng-click='index.updateAll(); index.updateTxHistory()' ng-show="!index.updateError && index.walletScanStatus != 'error'">
|
||||
<div ng-click='index.updateAll({triggerTxUpdate: true})' ng-show="!index.updateError && index.walletScanStatus != 'error'">
|
||||
<strong class="size-36">{{index.totalBalanceStr}}</strong>
|
||||
<div class="size-14"
|
||||
ng-if="index.totalBalanceAlternative">
|
||||
|
|
@ -107,16 +107,11 @@
|
|||
</div>
|
||||
</div> <!-- amount -->
|
||||
|
||||
<div class="pr columns line-b">
|
||||
<div class="avatar-name columns line-b">
|
||||
<div class="avatar-wallet left"
|
||||
ng-style="{'background-color':index.backgroundColor}">{{ (index.alias || index.walletName) | limitTo: 1}}
|
||||
</div>
|
||||
<div class="right">
|
||||
<a ng-click="$root.go('preferences')" class="button outline round light-gray tiny preferences-icon m0">
|
||||
<i class="fi-widget size-18 vm"></i>
|
||||
<span class="show-for-medium-up" translate>Preferences</span>
|
||||
</a>
|
||||
</div>
|
||||
ng-style="{'background-color':index.backgroundColor}">
|
||||
<i class="icon-wallet size-24"></i>
|
||||
</div>
|
||||
<div class="wallet-info">
|
||||
<div ng-show="index.isShared">
|
||||
<p class="m0">
|
||||
|
|
@ -136,6 +131,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="camera-icon" ng-show="index.isComplete">
|
||||
<qr-scanner on-scan="home.onQrCodeScanned(data)"></qr-scanner>
|
||||
</div>
|
||||
</div> <!-- oh -->
|
||||
|
||||
|
||||
|
|
@ -165,13 +163,133 @@
|
|||
</div>
|
||||
|
||||
<div class="text-gray text-center size-12 p10t"
|
||||
ng-show="index.lockedBalanceSat && !index.updatingStatus">
|
||||
ng-show="index.lockedBalanceSat">
|
||||
<span translate>Total Locked Balance</span>:
|
||||
<b>{{index.lockedBalanceStr}} </b>
|
||||
<span> {{index.lockedBalanceAlternative}}
|
||||
{{index.alternativeIsoCode}} </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Activity -->
|
||||
|
||||
<div
|
||||
class="m20t text-gray size-12 text-center"
|
||||
ng-show="!index.loadingWallet && !index.txHistory[0] && !index.updatingTxHistory[index.walletId] &&
|
||||
!index.txHistoryError && !index.updateError" translate>
|
||||
No transactions yet
|
||||
</div>
|
||||
<div ng-show="index.updatingTxHistory[index.walletId]
|
||||
&& ( (index.txProgress > 6 && !index.txHistory[0]) || (index.txProgress > 50 ) )">
|
||||
<div class="row p20 text-center">
|
||||
<div class="columns large-12 medium-12 small-12 m10b">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="size-12 text-gray m20t">
|
||||
<div translate>{{index.txProgress}} transactions downloaded</div>
|
||||
<div translate>Updating transaction history. Please stand by.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="index.txHistory[0]">
|
||||
<h4 class="title m0">
|
||||
<span translate>Activity</span>
|
||||
</h4>
|
||||
|
||||
|
||||
<div ng-if="index.txHistory[0] && index.updatingTxHistory[index.walletId] && index.newTx" class="row collapse last-transactions-content animated fadeInDown">
|
||||
<div class="large-6 medium-6 small-6 columns size-14">
|
||||
<div class="m10r left">
|
||||
<img src="img/icon-new.svg" width="40">
|
||||
</div>
|
||||
<div class="m10t" style="background:#eee; width: 8em; margin-left: 52px; line-height:0.6em">
|
||||
<span> </span>
|
||||
</div>
|
||||
<div style="margin-top:5px; background:#eee; width: 6em; margin-left: 52px; line-height:0.6em">
|
||||
<span> </span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-repeat="btx in index.txHistory"
|
||||
ng-click="home.openTxModal(btx)"
|
||||
class="row collapse last-transactions-content">
|
||||
<div class="large-6 medium-6 small-6 columns size-14">
|
||||
<div class="m10r left">
|
||||
<img src="img/icon-receive-history.svg" alt="sync" width="40" ng-show="btx.action == 'received'">
|
||||
<img src="img/icon-sent-history.svg" alt="sync" width="40" ng-show="btx.action == 'sent'">
|
||||
<img src="img/icon-moved.svg" alt="sync" width="40" ng-show="btx.action == 'moved'">
|
||||
</div>
|
||||
<div class="m10t">
|
||||
<span ng-show="btx.action == 'received'" translate>Received</span>
|
||||
<span ng-show="btx.action == 'sent'">
|
||||
{{index.addressbook[btx.addressTo]}}
|
||||
<span ng-show="!index.addressbook[btx.addressTo] && btx.message">
|
||||
<span class="ellipsis">{{btx.message}}</span>
|
||||
</span>
|
||||
<span ng-show="!index.addressbook[btx.addressTo] && !btx.message">
|
||||
<span translate> Sent</span>
|
||||
</span>
|
||||
</span>
|
||||
<span ng-show="btx.action == 'moved'" translate>Moved</span>
|
||||
<span class="label tu warning radius" ng-show="btx.action == 'invalid'" translate>Invalid</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="large-5 medium-5 small-5 columns text-right">
|
||||
<span class="size-16">
|
||||
<span ng-if="btx.action == 'received'">+</span>
|
||||
<span ng-if="btx.action == 'sent'">-</span>
|
||||
<span class="size-12" ng-if="btx.action == 'invalid'" translate>
|
||||
(possible double spend)
|
||||
</span>
|
||||
<span ng-if="btx.action != 'invalid'">
|
||||
{{btx.amountStr}}
|
||||
</span>
|
||||
</span>
|
||||
<div class="size-12 text-gray">
|
||||
<time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time>
|
||||
<span translate class="text-warning"
|
||||
ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)">
|
||||
Unconfirmed
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-1 medium-1 small-1 columns text-right m10t">
|
||||
<i class="icon-arrow-right3 size-18"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m20t text-center" ng-show="index.historyRendering">
|
||||
<div class="columns large-12 medium-12 small-12">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="m20t text-center">
|
||||
<a class="text-gray size-12"
|
||||
ng-show="index.historyShowShowAll"
|
||||
ng-click="index.showAllHistory()">
|
||||
<span translate>Show all</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="extra-margin-bottom"></div>
|
||||
</div> <!-- END WalletHome -->
|
||||
|
||||
|
|
@ -182,55 +300,47 @@
|
|||
-->
|
||||
<div id="receive" class="receive tab-view">
|
||||
|
||||
<div ng-show="index.needsBackup" class="p60t row text-center">
|
||||
<div class="large-12 columns">
|
||||
<div class="text-warning text-bold m15b">
|
||||
<i class="fi-alert"></i>
|
||||
<span translate>
|
||||
WARNING: Backup needed
|
||||
</span>
|
||||
</div>
|
||||
<div class="text-gray" translate>
|
||||
Before receiving funds, it is highly recommended you backup your wallet keys.
|
||||
</div>
|
||||
|
||||
<button class="m20t button black expand round"
|
||||
ng-click="$root.go('backup')" ng-style="{'background-color':index.backgroundColor}" >
|
||||
<span translate>Backup now</span>
|
||||
</button>
|
||||
<div ng-show="index.needsBackup" class="p60t columns text-center">
|
||||
<div class="circle-icon">
|
||||
<i class="fi-alert size-48"></i>
|
||||
</div>
|
||||
<h5 translate>Backup Needed</h5>
|
||||
<p class="text-gray m20b columns" translate>
|
||||
Before receiving funds, it is highly recommended you backup your wallet. If you lose this device, it is impossible to access your funds without a backup.
|
||||
</p>
|
||||
<button class="m20t button black expand round"
|
||||
ng-click="$root.go('backup')" ng-style="{'background-color':index.backgroundColor}" >
|
||||
<span translate>Backup now</span>
|
||||
</button>
|
||||
</div>
|
||||
<div ng-show="!index.needsBackup">
|
||||
<div class="box-notification m20t" ng-show="home.addrError">
|
||||
<span class="text-warning">
|
||||
{{home.addrError|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<!-- Address-->
|
||||
<div class="large-12 columns">
|
||||
<h2 class="text-center m10t" translate>My Bitcoin address</h2>
|
||||
<div>
|
||||
<div class="box-notification" ng-show="home.addrError">
|
||||
<span class="text-warning">
|
||||
{{home.addrError|translate}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="text-center" ng-click="home.copyAddress(home.addr[index.walletId])" ng-show="home.addr[index.walletId] || home.generatingAddress">
|
||||
<qrcode size="220" data="bitcoin:{{home.addr[index.walletId]}}"></qrcode>
|
||||
<div ng-show="home.generatingAddress" style="position:relative; top:-226px; height:0px">
|
||||
<div style="height:220px; width:220px; margin:auto; background: url(img/qr.png) white">
|
||||
<div class="spinner" style="margin-top:80px">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
<div class="text-center" ng-click="home.copyAddress(home.addr[index.walletId])" ng-show="home.addr[index.walletId] || home.generatingAddress">
|
||||
<qrcode size="220" data="bitcoin:{{home.addr[index.walletId]}}"></qrcode>
|
||||
<div ng-show="home.generatingAddress" style="position:relative; top:-226px; height:0px">
|
||||
<div style="height:220px; width:220px; margin:auto; background: url(img/qr.png) white">
|
||||
<div class="spinner" style="margin-top:80px">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m10t" >
|
||||
<h4 ng-class="{'enable_text_select': !index.isCordova}" class="size-12">
|
||||
{{home.generatingAddress ? '...' : home.addr[index.walletId]}}
|
||||
</div>
|
||||
<div class="m10t" >
|
||||
<h4 ng-class="{'enable_text_select': !index.isCordova}" class="size-12">
|
||||
{{home.generatingAddress ? '...' : home.addr[index.walletId]}}
|
||||
|
||||
</h4>
|
||||
</div>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -273,27 +383,27 @@
|
|||
|
||||
-->
|
||||
<div id="send" class="send tab-view">
|
||||
<div>
|
||||
<div class="pr p25b">
|
||||
<h4 class="title m0">
|
||||
|
||||
<a class="right lh"
|
||||
<available-balance></available-balance>
|
||||
<a
|
||||
ng-if="index.feeToSendMaxStr && index.availableBalanceSat > 0 && !home.blockUx && !home.lockAmount"
|
||||
ng-click="home.sendAll(index.availableMaxBalance, index.feeToSendMaxStr, index.feeRateToSendMax)"
|
||||
ng-click="home.sendAll(index.availableMaxBalance, index.feeToSendMaxStr)"
|
||||
translate> Send All
|
||||
</a>
|
||||
|
||||
<available-balance></available-balance>
|
||||
</h4>
|
||||
<div class="camera-icon" ng-show="index.isComplete">
|
||||
<qr-scanner on-scan="home.onQrCodeScanned(data)"></qr-scanner>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-notification m20t" ng-show="home.error" ng-click="home.resetError()">
|
||||
<span class="text-warning">
|
||||
{{home.error|translate}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="row m20t">
|
||||
<div class="large-12 large-centered columns">
|
||||
<form name="sendForm" ng-submit="home.submitForm()" ng-disabled="home.blockUx || home.onGoingProcess" novalidate>
|
||||
<div class="box-notification" ng-show="home.error" ng-click="home.resetError()">
|
||||
<span class="text-warning">
|
||||
{{home.error|translate}}
|
||||
</span>
|
||||
<a class="close-notification text-warning">×</a>
|
||||
</div>
|
||||
<div class="large-12 large-centered columns">
|
||||
<form name="sendForm" ng-submit="home.submitForm(index.feeRateToSendMax)" ng-disabled="home.blockUx || home.onGoingProcess" novalidate>
|
||||
|
||||
<div ng-hide="home._paypro || home.hideAddress">
|
||||
<div class="row collapse">
|
||||
|
|
@ -316,9 +426,10 @@
|
|||
<div class="addressbook-input" ng-show="!sendForm.address.$invalid && _address">
|
||||
{{index.addressbook[_address] || _address}}
|
||||
</div>
|
||||
<a class="postfix size-12 m0 text-gray"
|
||||
ng-click="openDestinationAddressModal(index.otherWallets, _address)">
|
||||
<i class="icon-wallet size-18"></i>
|
||||
<a class="postfix size-12 m0 text-gray"
|
||||
ng-style="{'color':index.backgroundColor}"
|
||||
ng-click="home.openDestinationAddressModal(index.otherWallets, _address)">
|
||||
<i class="icon-wallet text-bold size-18"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -353,18 +464,18 @@
|
|||
<span translate>Amount</span>
|
||||
</label>
|
||||
<div class="input">
|
||||
<input type="number" id="amount" ng-disabled="home.blockUx || home.lockAmount" name="amount" ng-attr-placeholder="{{'Amount'|translate}}" ng-minlength="0.00000001" ng-maxlength="10000000000" ng-model="_amount" valid-amount required autocomplete="off" ng-focus="home.formFocus('amount')" ng-blur="home.formFocus(false)">
|
||||
<input type="number" id="amount" ng-disabled="home.blockUx || home.lockAmount" name="amount" ng-attr-placeholder="{{'Amount in'|translate}} {{home.unitName}}" ng-minlength="0.00000001" ng-maxlength="10000000000" ng-model="_amount" valid-amount required autocomplete="off" ng-focus="home.formFocus('amount')" ng-blur="home.formFocus(false)">
|
||||
<input type="number" id="alternative" name="alternative" ng-model="_alternative" style="display:none">
|
||||
<a class="postfix" ng-click="home.showAlternative()">{{home.unitName}}</a>
|
||||
<a class="postfix button" ng-style="{'background-color':index.backgroundColor}" ng-click="home.showAlternative()">{{home.unitName}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-if="home.canShowAlternative()">
|
||||
<label for="alternative"><span translate>Amount in</span> {{ home.alternativeName }}
|
||||
<label for="alternative"><span translate>Amount</span> [{{ home.alternativeIsoCode }}]
|
||||
</label>
|
||||
<div class="input">
|
||||
<input type="number" id="alternative" ng-disabled="home.blockUx || !home.isRateAvailable || home.lockAmount" name="alternative" ng-attr-placeholder="{{'Amount'|translate}}" ng-model="_alternative" required autocomplete="off" ng-focus="home.formFocus('amount')" ng-blur="home.formFocus(false)">
|
||||
<input type="number" id="alternative" ng-disabled="home.blockUx || !home.isRateAvailable || home.lockAmount" name="alternative" ng-attr-placeholder="{{'Amount in'|translate}} {{ home.alternativeName }}" ng-model="_alternative" required autocomplete="off" ng-focus="home.formFocus('amount')" ng-blur="home.formFocus(false)">
|
||||
<input type="number" id="amount" name="amount" ng-model="_amount" style="display:none">
|
||||
<a class="postfix" ng-click="home.hideAlternative()"> {{ home.alternativeIsoCode }}</a>
|
||||
<a class="postfix button black" ng-click="home.hideAlternative()"> {{ home.alternativeIsoCode }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -383,35 +494,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="m20b" ng-init="home.hideAdvSend=true">
|
||||
<a class="button outline light-gray expand tiny m0" ng-click="home.hideAdvSend=!home.hideAdvSend">
|
||||
<i class="fi-widget m3r"></i>
|
||||
<span translate ng-hide="!home.hideAdvSend">Show advanced options</span>
|
||||
<span translate ng-hide="home.hideAdvSend">Hide advanced options</span>
|
||||
<i ng-if="home.hideAdvSend" class="icon-arrow-down4"></i>
|
||||
<i ng-if="!home.hideAdvSend" class="icon-arrow-up4"></i>
|
||||
</a>
|
||||
<div class="m10t" ng-hide="home.hideAdvSend">
|
||||
<div ng-show="(index.network == 'livenet' ? index.feeLevels.livenet : index.feeLevels.testnet)">
|
||||
<h4 class="title m0" translate>Fee policy for this transaction</h4>
|
||||
<ul class="no-bullet m0 size-14">
|
||||
<li ng-repeat="fee in (index.network == 'livenet' ? index.feeLevels.livenet : index.feeLevels.testnet)"
|
||||
ng-click="home.setFee(fee.level)" class="line-b p20">
|
||||
{{index.feeOpts[fee.level]|translate}}
|
||||
<i class="fi-check size-16 right"
|
||||
ng-show="(home.currentSendFeeLevel || index.currentFeeLevel) == fee.level"></i>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<h4 class="title m0"> </h4>
|
||||
<div class="p20 line-b">
|
||||
<span class="size-14" translate>Use Unconfirmed Funds</span>
|
||||
<switch id="spend-unconfirmed" name="currentSpendUnconfirmed" ng-model="currentSpendUnconfirmed" class="green right"></switch>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row" ng-show="!home.onGoingProcess">
|
||||
<div class="large-6 medium-6 small-6 columns" ng-show="!home.blockUx && (home._paypro || home.lockAddress || home.lockAmount)">
|
||||
<a ng-click="home.resetForm(sendForm)" class="button expand outline dark-gray round" translate>Cancel</a>
|
||||
|
|
@ -430,125 +512,6 @@
|
|||
<div class="extra-margin-bottom"></div>
|
||||
</div> <!-- END Send -->
|
||||
|
||||
<!--
|
||||
|
||||
history
|
||||
|
||||
-->
|
||||
<div id="history" class="history tab-view">
|
||||
<div class="row m20t" ng-show="!index.txHistory[0] && !index.updatingTxHistory[index.walletId]">
|
||||
<div class="large-12 columns">
|
||||
<div class="oh text-center">
|
||||
<span ng-show="index.txHistoryError && !index.notAuthorized" ng-click='index.updateTxHistory()'>
|
||||
<p class="size-12 m10b db text-gray" translate>Could not fetch transaction history</p>
|
||||
<button class="outline round light-gray tiny" translate>Tap to retry</button>
|
||||
</span>
|
||||
<span ng-if="!index.txHistoryError" translate>
|
||||
No transactions yet
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="index.updatingTxHistory[index.walletId]">
|
||||
<div ng-show="index.txProgress > 6" class="row m20t text-center">
|
||||
<div class="circle-icon">
|
||||
<img src="img/icon-sync.svg" alt="sync" width="70">
|
||||
</div>
|
||||
<div translate class="size-12 text-gray m20t small-10 small-centered columns">
|
||||
Initial transaction history synchronization can take some minutes for wallets with many transactions.
|
||||
<b> Please stand by.</b>
|
||||
</div>
|
||||
<div class="small-8 small-centered columns line-b p10 m20b"></div>
|
||||
<div class="columns large-12 medium-12 small-12 m10b">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="size-14 text-gray m20t">
|
||||
<b>{{index.txProgress}}</b> <br>
|
||||
<span translate>Transactions Downloaded</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-show="index.txHistory[0]">
|
||||
<div ng-repeat="btx in index.txHistory"
|
||||
ng-click="home.openTxModal(btx)"
|
||||
class="row collapse last-transactions-content">
|
||||
<div class="large-3 medium-3 small-3 columns">
|
||||
<span class="label tu radius" ng-show="btx.action == 'received'"
|
||||
ng-style="{'background-color':index.backgroundColor}" translate>Received</span>
|
||||
<span class="label tu gray radius" ng-show="btx.action == 'sent'" translate>Sent</span>
|
||||
<span class="label tu gray radius" ng-show="btx.action == 'moved'" translate>Moved</span>
|
||||
<span class="label tu warning radius" ng-show="btx.action == 'invalid'" translate>Invalid</span>
|
||||
</div>
|
||||
|
||||
<div class="large-4 medium-4 small-4 columns">
|
||||
<span class="size-16">
|
||||
<span ng-if="btx.action == 'received'">+</span>
|
||||
<span ng-if="btx.action == 'sent'">-</span>
|
||||
<span class="size-12" ng-if="btx.action == 'invalid'" translate>
|
||||
(possible double spend)
|
||||
</span>
|
||||
<span ng-if="btx.action != 'invalid'">
|
||||
{{btx.amountStr}}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="large-4 medium-4 small-4 columns text-right">
|
||||
<div class="m5t size-12 text-gray">
|
||||
<time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time>
|
||||
<span translate class="text-warning"
|
||||
ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)">
|
||||
Unconfirmed
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-1 medium-1 small-1 columns text-right">
|
||||
<i class="icon-arrow-right3 size-18"></i>
|
||||
</div>
|
||||
<div class="size-14 text-gray columns m5t" ng-if="btx.message || btx.addressTo">
|
||||
<div ng-show="btx.message">{{btx.message}}</div>
|
||||
<div ng-show="!btx.message">
|
||||
{{index.addressbook[btx.addressTo] || btx.addressTo}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m20t text-center" ng-show="index.historyRendering">
|
||||
<div class="columns large-12 medium-12 small-12">
|
||||
<div class="spinner">
|
||||
<div class="rect1"></div>
|
||||
<div class="rect2"></div>
|
||||
<div class="rect3"></div>
|
||||
<div class="rect4"></div>
|
||||
<div class="rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row m20t">
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<button type="submit" class="button black round expand" ng-show="index.historyShowShowAll" ng-click="index.showAllHistory()" ng-style="{'background-color':index.backgroundColor}" translate>
|
||||
Show all
|
||||
</button>
|
||||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns" ng-show="!index.isCordova">
|
||||
<input id="export_file" type="file" nwsaveas="Copay-{{index.alias || index.walletName}}.csv" accept=".csv" style="display:none">
|
||||
<a class="button outline dark-gray round" ng-click="index.csvHistory();">
|
||||
<i class="fi-page-export-csv"></i>
|
||||
<span translate>Download CSV file</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="extra-margin-bottom"></div>
|
||||
</div> <!-- END History -->
|
||||
|
||||
<div id="{{view.id}}" class="{{view.class}} tab-view" ng-repeat="view in index.addonViews" ng-include="view.template">
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue