Merge branch 'feature/get_started_tour' of https://github.com/jamal-jackson/bitpay-wallet into feature/onboarding_wallet_created

This commit is contained in:
Jamal Jackson 2016-09-01 10:15:39 -04:00
commit 7a7b78d03b
46 changed files with 526 additions and 527 deletions

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{'Add wallet' | translate}}</ion-nav-title> <ion-nav-title>{{'Add wallet' | translate}}</ion-nav-title>
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button no-border" ui-sref="tabs.home"> <button class="button no-border" ui-sref="tabs.home">

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button no-border" ng-click="$ionicGoBack()"> <button class="button no-border" ng-click="$ionicGoBack()">
<i class="icon ion-chevron-left"></i> {{'Back' | translate}} <i class="icon ion-chevron-left"></i> {{'Back' | translate}}

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>
@ -42,7 +42,7 @@
<wallets ng-if="wallets[0]" wallets="wallets"></wallets> <wallets ng-if="wallets[0]" wallets="wallets"></wallets>
<div class="item item-icon-left item-icon-right" ng-click="showDescriptionPopup()"> <div class="item item-icon-left item-icon-right" ng-click="showDescriptionPopup()">
<span ng-show="!description">Add Description</span> <span ng-show="!description" translate>Add Description</span>
<span ng-show="description">{{description}}</span> <span ng-show="description">{{description}}</span>
<i class="icon ion-ios-chatbubble-outline size-21"></i> <i class="icon ion-ios-chatbubble-outline size-21"></i>
<i class="icon ion-ios-plus-empty size-21"></i> <i class="icon ion-ios-plus-empty size-21"></i>

View file

@ -4,17 +4,11 @@
<ion-nav-title>{{wallet.name}}</ion-nav-title> <ion-nav-title>{{wallet.name}}</ion-nav-title>
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button" href ui-sref="tabs.home"> <button class="button" href ui-sref="tabs.home">
<i class="ion-arrow-left-c"></i> Back <i class="ion-arrow-left-c"></i> {{'Back' | translate}}
</button> </button>
</ion-nav-buttons> </ion-nav-buttons>
</ion-nav-bar> </ion-nav-bar>
<ion-nav-buttons side="primary">
<button class="button" href ui-sref="tabs.home">
<i class="ion-arrow-left-c"></i> Back
</button>
</ion-nav-buttons>
<ion-content delegate-handle="my-handle" overflow-scroll="true"> <ion-content delegate-handle="my-handle" overflow-scroll="true">
<div ng-show="!wallet.notAuthorized"> <div ng-show="!wallet.notAuthorized">
<h1 class="text-center" translate>Share this invitation with your copayers</h1> <h1 class="text-center" translate>Share this invitation with your copayers</h1>

View file

@ -9,7 +9,7 @@
</div> </div>
<div ng-if="x.types.indexOf('NewOutgoingTx')>=0"> <div ng-if="x.types.indexOf('NewOutgoingTx')>=0">
<span>Payment Sent </span> <span translate>Payment Sent </span>
<div class="wallet-activity-amount"> <div class="wallet-activity-amount">
{{x.amountStr}} {{x.amountStr}}
</div> </div>
@ -18,7 +18,7 @@
<div ng-if="x.types.indexOf('NewIncomingTx')>=0"> <div ng-if="x.types.indexOf('NewIncomingTx')>=0">
<span>Payment Received</span> <span translate>Payment Received</span>
<div class="wallet-activity-amount"> <div class="wallet-activity-amount">
{{x.amountStr}} {{x.amountStr}}
</div> </div>
@ -26,12 +26,12 @@
<div ng-if="x.types.indexOf('TxProposalRemoved')>=0"> <div ng-if="x.types.indexOf('TxProposalRemoved')>=0">
<i class="icon ion-ios-close-empty size-21" ng-style="{'color':x.wallet.color}"></i> <i class="icon ion-ios-close-empty size-21" ng-style="{'color':x.wallet.color}"></i>
Proposal Deleted <span translate>Proposal Deleted</span>
</div> </div>
<div ng-if="x.types.indexOf('TxProposalRejected')>=0"> <div ng-if="x.types.indexOf('TxProposalRejected')>=0">
<i class="icon ion-ios-close-empty size-21" ng-style="{'color':x.wallet.color}"></i> <i class="icon ion-ios-close-empty size-21" ng-style="{'color':x.wallet.color}"></i>
Proposal Rejected <span translate>Proposal Rejected</span>
</div> </div>
<div ng-if="x.types.indexOf('TxProposalRemoved') == -1 && x.types.indexOf('TxProposalRejected') == -1"> <div ng-if="x.types.indexOf('TxProposalRemoved') == -1 && x.types.indexOf('TxProposalRejected') == -1">
@ -43,7 +43,7 @@
</span> </span>
<span ng-if="x.types.indexOf('TxProposalAcceptedBy')>=0 && x.types.indexOf('NewTxProposal') == -1 && x.types.indexOf('NewOutgoingTx')==-1"> <span ng-if="x.types.indexOf('TxProposalAcceptedBy')>=0 && x.types.indexOf('NewTxProposal') == -1 && x.types.indexOf('NewOutgoingTx')==-1">
<i class="icon ion-checkmark-round size-21" ng-style="{'color':x.wallet.color}"></i> <i class="icon ion-checkmark-round size-21" ng-style="{'color':x.wallet.color}"></i>
Proposal Accepted <span translate>Proposal Accepted</span>
</span> </span>
</div> </div>

View file

@ -2,10 +2,10 @@
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button no-border" ui-sref="tabs.add"> <button class="button no-border" ui-sref="tabs.add">
<i class="icon ion-chevron-left"></i> Back <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</button> </button>
</ion-nav-buttons> </ion-nav-buttons>
<ion-nav-title>Join shared wallet</ion-nav-title> <ion-nav-title>{{'Join shared wallet' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>

View file

@ -1,7 +1,7 @@
<ion-modal-view ng-controller="addressbookModalController" ng-init="initAddressbook()"> <ion-modal-view ng-controller="addressbookModalController" ng-init="initAddressbook()">
<ion-header-bar align-title="center" class="bar-stable"> <ion-header-bar align-title="center" class="bar-stable">
<button class="button button-clear button-positive" <button class="button button-clear button-positive"
ng-click="closeAddressbookModal()"> ng-click="closeAddressbookModal()" translate>
Close Close
</button> </button>
<div class="h1 title"> <div class="h1 title">
@ -11,7 +11,7 @@
<button class="button button-clear button-positive" <button class="button button-clear button-positive"
ng-click="toggleAddAddressbookEntry()"> ng-click="toggleAddAddressbookEntry()">
<i ng-show="!addAddressbookEntry" class="icon ion-ios-plus-empty"></i> <i ng-show="!addAddressbookEntry" class="icon ion-ios-plus-empty"></i>
<span ng-show="addAddressbookEntry">Cancel</span> <span ng-show="addAddressbookEntry" translate>Cancel</span>
</button> </button>
</ion-header-bar> </ion-header-bar>
@ -56,7 +56,7 @@
<div class="list"> <div class="list">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label">Address</span> <span class="input-label" translate>Address</span>
<div class="input-notification"> <div class="input-notification">
<i class="icon ion-checkmark-circled balanced" <i class="icon ion-checkmark-circled balanced"
ng-show="!addressbookForm.address.$invalid"></i> ng-show="!addressbookForm.address.$invalid"></i>
@ -74,7 +74,7 @@
</label> </label>
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label">Label</span> <span class="input-label" translate>Label</span>
<input type="text" <input type="text"
id="label" id="label"
name="label" name="label"

View file

@ -68,7 +68,7 @@
<p> <p>
<time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time> <time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time>
<span translate class="text-warning" <span translate class="text-warning"
ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)"> ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)" translate>
Unconfirmed Unconfirmed
</span> </span>
</p> </p>

View file

@ -138,7 +138,7 @@
</span> </span>
</li> </li>
<li class="line-b p10"> <li class="line-b p10">
<span class="text-gray">Merchant Message</span> <span class="text-gray" translate>Merchant Message</span>
<span class="db">{{tx.paypro.pr.pd.memo}}</span> <span class="db">{{tx.paypro.pr.pd.memo}}</span>
</li> </li>
</ul> </ul>

View file

@ -2,12 +2,12 @@
<ion-header-bar align-title="center" class="tab-bar"> <ion-header-bar align-title="center" class="tab-bar">
<div class="left-small"> <div class="left-small">
<a ng-click="cancel()" class="p10"> <a ng-click="cancel()" class="p10">
<span class="text-close">Close</span> <span class="text-close" translate>Close</span>
</a> </a>
</div> </div>
<h1 class="title ellipsis"> <h1 class="title ellipsis">
<span ng-show="type == 'BUY' || type == 'RECEIVE'">Choose your destination wallet</span> <span ng-show="type == 'BUY' || type == 'RECEIVE'" translate>Choose your destination wallet</span>
<span ng-show="type == 'SELL' || type == 'SEND'">Choose your source wallet</span> <span ng-show="type == 'SELL' || type == 'SEND'" translate>Choose your source wallet</span>
</h1> </h1>
</ion-header-bar> </ion-header-bar>
@ -22,7 +22,7 @@
<div class="left"> <div class="left">
<i class="fi-info size-18 m10r"></i> <i class="fi-info size-18 m10r"></i>
</div> </div>
<div class="size-10 m5t"> <div class="size-10 m5t" translate>
Notice: only 1-1 (single signature) wallets can be used for sell bitcoin Notice: only 1-1 (single signature) wallets can be used for sell bitcoin
</div> </div>
</h4> </h4>

View file

@ -14,7 +14,7 @@
<button class="button button-block get-started col col-75" href ui-sref="onboarding.tour" translate>Get started</button> <button class="button button-block get-started col col-75" href ui-sref="onboarding.tour" translate>Get started</button>
</div> </div>
<div class="row"> <div class="row">
<button class="button button-block restore col col-75" translate>Restore</button> <button class="button button-block restore col col-75" translate href ui-sref="tabs.import({'fromOnboarding':true})">Restore</button>
</div> </div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>
@ -44,7 +44,7 @@
</span> </span>
<i class="icon ion-ios-arrow-right"></i> <i class="icon ion-ios-arrow-right"></i>
</div> </div>
<div class="item item-divider"> <div class="item item-divider" translate>
Security Security
</div> </div>
<div class="item item-icon-right" href ui-sref="tabs.preferences.backup" ng-hide="wallet.isPrivKeyExternal()"> <div class="item item-icon-right" href ui-sref="tabs.preferences.backup" ng-hide="wallet.isPrivKeyExternal()">
@ -65,7 +65,7 @@
<span translate>Delete recovery phrase</span> <span translate>Delete recovery phrase</span>
<i class="icon ion-ios-arrow-right"></i> <i class="icon ion-ios-arrow-right"></i>
</div> </div>
<div class="item item-divider"> <div class="item item-divider" translate>
Advanced Advanced
</div> </div>
<div class="item item-icon-right" href ui-sref="tabs.preferences.preferencesAdvanced"> <div class="item item-icon-right" href ui-sref="tabs.preferences.preferencesAdvanced">

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button button-stable no-border" ui-sref="tabs.settings"> <button class="button button-stable no-border" ui-sref="tabs.settings">
<i class="icon ion-chevron-left"></i> {{'Back' | translate}} <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
@ -7,7 +7,7 @@
</ion-nav-buttons> </ion-nav-buttons>
</ion-nav-bar> </ion-nav-bar>
<ion-content ng-controller="preferencesAbout"> <ion-content ng-controller="preferencesAbout">
<div class="item item-divider"> <div class="item item-divider" translate>
Release information Release information
</div> </div>
<div class="item item-icon-left"> <div class="item item-icon-left">

View file

@ -1,5 +1,5 @@
<ion-view > <ion-view >
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{'Advanced Preferences' | translate}}</ion-nav-title> <ion-nav-title>{{'Advanced Preferences' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>

View file

@ -125,4 +125,3 @@
</div> </div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -2,10 +2,10 @@
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-buttons side="primary">
<button class="button no-border" ui-sref="tabs.add"> <button class="button no-border" ui-sref="tabs.add">
<i class="icon ion-chevron-left"></i> Back <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</button> </button>
</ion-nav-buttons> </ion-nav-buttons>
<ion-nav-title>Create new wallet</ion-nav-title> <ion-nav-title>{{'Create new wallet' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content ng-controller="createController as create" ng-init="create.setTotalCopayers(1)"> <ion-content ng-controller="createController as create" ng-init="create.setTotalCopayers(1)">

View file

@ -1,161 +1,163 @@
<ion-nav-bar class="bar-stable"> <ion-view>
<ion-nav-buttons side="primary"> <ion-nav-bar class="bar-stable">
<button class="button no-border" ui-sref="tabs.add"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ui-sref="tabs.add">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
<ion-nav-title>Create new wallet</ion-nav-title> </ion-nav-buttons>
</ion-nav-bar> <ion-nav-title>{{'Create new wallet' | translate}}</ion-nav-title>
</ion-nav-bar>
<ion-content ng-controller="createController as create" ng-init="create.setTotalCopayers(3)"> <ion-content ng-controller="createController as create" ng-init="create.setTotalCopayers(3)">
<div class="padding assertive" ng-show="create.error"> <div class="padding assertive" ng-show="create.error">
{{create.error|translate}} {{create.error|translate}}
</div> </div>
<form name="setupForm" ng-submit="create.create(setupForm)" novalidate> <form name="setupForm" ng-submit="create.create(setupForm)" novalidate>
<div class="list"> <div class="list">
<label ng-hide="create.hideWalletName" class="item item-input item-stacked-label"> <label ng-hide="create.hideWalletName" class="item item-input item-stacked-label">
<span class="input-label" translate>Wallet name</span> <span class="input-label" translate>Wallet name</span>
<input type="text" <input type="text"
placeholder="{{'Family vacation funds'|translate}}" placeholder="{{'Family vacation funds'|translate}}"
name="walletName" name="walletName"
ng-model="walletName" ng-model="walletName"
ng-required="true" ng-required="true"
ng-focus="create.formFocus('wallet-name')" ng-focus="create.formFocus('wallet-name')"
ng-blur="create.formFocus(false)"> ng-blur="create.formFocus(false)">
</label>
<label ng-show="totalCopayers != 1" class="item item-input item-stacked-label">
<span class="input-label" translate>Your nickname</span>
<input type="text"
placeholder="{{'John'|translate}}"
name="myName"
ng-model="myName"
ng-required="totalCopayers != 1"
ng-disabled="totalCopayers == 1"
ng-focus="create.formFocus('my-name')"
ng-blur="create.formFocus(false)">
</label>
<label ng-show="totalCopayers != 1" class="item item-input item-select">
<div class="input-label" translate>
Total number of copayers
</div>
<select class="m10t"
ng-model="totalCopayers"
ng-options="totalCopayers as totalCopayers for totalCopayers in create.TCValues"
ng-change="create.setTotalCopayers(totalCopayers)">
</select>
</label>
<label ng-show="totalCopayers != 1" class="item item-input item-select">
<div class="input-label" translate>
Required number of signatures
</div>
<select class="m10t"
ng-model="requiredCopayers"
ng-options="requiredCopayers as requiredCopayers for requiredCopayers in create.RCValues"
ng-disabled="totalCopayers == 1">
</select>
</label>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable" ng-change="showAdvChange()">
<span translate ng-show="!showAdv">Show advanced options</span>
<span translate ng-show="showAdv">Hide advanced options</span>
</ion-toggle>
<div ng-show="showAdv">
<label class="item item-input item-stacked-label">
<span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label> </label>
<label class="item item-input item-select"> <label ng-show="totalCopayers != 1" class="item item-input item-stacked-label">
<span class="input-label" translate>Your nickname</span>
<input type="text"
placeholder="{{'John'|translate}}"
name="myName"
ng-model="myName"
ng-required="totalCopayers != 1"
ng-disabled="totalCopayers == 1"
ng-focus="create.formFocus('my-name')"
ng-blur="create.formFocus(false)">
</label>
<label ng-show="totalCopayers != 1" class="item item-input item-select">
<div class="input-label" translate> <div class="input-label" translate>
Wallet Key Total number of copayers
</div> </div>
<select class="m10t" <select class="m10t"
ng-model="seedSource" ng-model="totalCopayers"
ng-options="seed as seed.label for seed in create.seedOptions" ng-options="totalCopayers as totalCopayers for totalCopayers in create.TCValues"
ng-change="create.setSeedSource()"> ng-change="create.setTotalCopayers(totalCopayers)">
</select> </select>
</label> </label>
<label class="item item-input item-stacked-label" <label ng-show="totalCopayers != 1" class="item item-input item-select">
ng-show="create.seedSourceId == 'trezor' || create.seedSourceId == 'ledger'"> <div class="input-label" translate>
<span class="input-label" translate>Account Number</span> Required number of signatures
<input type="number" id="account" ng-model="account" ignore-mouse-wheel>
</label>
<div class="card" ng-show="create.seedSourceId=='new' && createPassphrase">
<div class="item item-text-wrap" translate>
WARNING: The password cannot be recovered. <b>Be sure to write it down</b>. The wallet can not be restored without the password.
</div> </div>
</div> <select class="m10t"
ng-model="requiredCopayers"
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='new'"> ng-options="requiredCopayers as requiredCopayers for requiredCopayers in create.RCValues"
<span class="input-label" translate>Add a Password</span> ng-disabled="totalCopayers == 1">
<input type="text" </select>
placeholder="{{'Add an optional password to secure the recovery phrase'|translate}}"
autocapitalize="off"
name="createPassphrase"
ng-model="createPassphrase">
</label> </label>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable" ng-change="showAdvChange()">
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='set'"> <span translate ng-show="!showAdv">Show advanced options</span>
<span class="input-label" translate>Wallet Recovery Phrase</span> <span translate ng-show="showAdv">Hide advanced options</span>
<input id="ext-master"
placeholder="{{'Enter the recovery phrase (BIP39)'|translate}}"
autocapitalize="off"
type="text"
name="privateKey"
ng-model="privateKey">
</label>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='set'">
<span class="input-label" translate>Password</span>
<input type="text"
placeholder="{{'The recovery phrase could require a password to be imported'|translate}}"
autocapitalize="off"
name="passphrase"
ng-model="passphrase">
</label>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId == 'set'">
<span class="input-label" translate>Derivation Path</span>
<input type="text"
placeholder="{{'BIP32 path for address derivation'|translate}}"
name="derivationPath"
ng-model="derivationPath">
</label>
<ion-toggle ng-show="create.seedSourceId == 'new'" ng-model="testnetEnabled" toggle-class="toggle-positive">
Testnet
</ion-toggle> </ion-toggle>
<ion-toggle ng-model="singleAddressEnabled" toggle-class="toggle-positive"> <div ng-show="showAdv">
<span translate>Single Address Wallet</span>
<small translate>For audit purposes</small>
</ion-toggle>
</div> <!-- advanced --> <label class="item item-input item-stacked-label">
</div> <!-- list --> <span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
<button type="submit" <label class="item item-input item-select">
class="button button-block button-positive" <div class="input-label" translate>
ng-show="totalCopayers != 1" ng-disabled="setupForm.$invalid"> Wallet Key
<span translate>Create {{requiredCopayers}}-of-{{totalCopayers}} wallet</span> </div>
</button> <select class="m10t"
ng-model="seedSource"
ng-options="seed as seed.label for seed in create.seedOptions"
ng-change="create.setSeedSource()">
</select>
</label>
<button type="submit" <label class="item item-input item-stacked-label"
class="button button-block button-positive" ng-show="create.seedSourceId == 'trezor' || create.seedSourceId == 'ledger'">
ng-show="totalCopayers == 1" ng-disabled="setupForm.$invalid"> <span class="input-label" translate>Account Number</span>
<span translate>Create new wallet</span> <input type="number" id="account" ng-model="account" ignore-mouse-wheel>
</button> </label>
</form> <div class="card" ng-show="create.seedSourceId=='new' && createPassphrase">
</ion-content> <div class="item item-text-wrap" translate>
WARNING: The password cannot be recovered. <b>Be sure to write it down</b>. The wallet can not be restored without the password.
</div>
</div>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='new'">
<span class="input-label" translate>Add a Password</span>
<input type="text"
placeholder="{{'Add an optional password to secure the recovery phrase'|translate}}"
autocapitalize="off"
name="createPassphrase"
ng-model="createPassphrase">
</label>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='set'">
<span class="input-label" translate>Wallet Recovery Phrase</span>
<input id="ext-master"
placeholder="{{'Enter the recovery phrase (BIP39)'|translate}}"
autocapitalize="off"
type="text"
name="privateKey"
ng-model="privateKey">
</label>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId=='set'">
<span class="input-label" translate>Password</span>
<input type="text"
placeholder="{{'The recovery phrase could require a password to be imported'|translate}}"
autocapitalize="off"
name="passphrase"
ng-model="passphrase">
</label>
<label class="item item-input item-stacked-label" ng-show="create.seedSourceId == 'set'">
<span class="input-label" translate>Derivation Path</span>
<input type="text"
placeholder="{{'BIP32 path for address derivation'|translate}}"
name="derivationPath"
ng-model="derivationPath">
</label>
<ion-toggle ng-show="create.seedSourceId == 'new'" ng-model="testnetEnabled" toggle-class="toggle-positive">
Testnet
</ion-toggle>
<ion-toggle ng-model="singleAddressEnabled" toggle-class="toggle-positive">
<span translate>Single Address Wallet</span>
<small translate>For audit purposes</small>
</ion-toggle>
</div> <!-- advanced -->
</div> <!-- list -->
<button type="submit"
class="button button-block button-positive"
ng-show="totalCopayers != 1" ng-disabled="setupForm.$invalid">
<span translate>Create {{requiredCopayers}}-of-{{totalCopayers}} wallet</span>
</button>
<button type="submit"
class="button button-block button-positive"
ng-show="totalCopayers == 1" ng-disabled="setupForm.$invalid">
<span translate>Create new wallet</span>
</button>
</form>
</ion-content>
</ion-view>

View file

@ -1,102 +1,104 @@
<ion-nav-bar class="bar-stable"> <ion-view>
<ion-nav-title>Export Wallet</ion-nav-title> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-title>{{'Export Wallet' | translate}}</ion-nav-title>
<button class="button no-border" ui-sref="tabs.preferences.preferencesAdvanced"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ui-sref="tabs.preferences.preferencesAdvanced">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
</ion-nav-bar> </ion-nav-buttons>
</ion-nav-bar>
<ion-content ng-controller="exportController" ng-init="init()" cache-view="true"> <ion-content ng-controller="exportController" ng-init="init()" cache-view="true">
<div ng-show="!backupWalletPlainText"> <div ng-show="!backupWalletPlainText">
<div class="size-14" ng-show="error"> <div class="size-14" ng-show="error">
<i class="ion-alert-circled"></i>
<span translate>Failed to export</span>
</div>
<form name="exportForm" novalidate>
<label class="item item-input item-stacked-label">
<span class="input-label" transalate>Set up a password</span>
<input type="password" placeholder="{{'Your password'|translate}}" name="password" ng-model="password">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" transalate>Repeat the password</span>
<input type="password" class="form-control" placeholder="{{'Repeat password'|translate}}" name="password" ng-model="repeatpassword">
</label>
</form>
<ion-toggle ng-show="canSign" ng-model="showAdvanced" toggle-class="toggle-balanced">
<span translate ng-show="!showAdvanced">Show advanced options</span>
<span translate ng-show="showAdvanced">Hide advanced options</span>
</ion-toggle>
<ion-toggle ng-model="noSignEnabled" ng-show="showAdvanced" toggle-class="toggle-balanced" class="r0" ng-change="noSignEnabledChange()">
<span class="toggle-label" translate>Do not include private key</span>
</ion-toggle>
<div class="box-notification" ng-show="!canSign">
<span class="size-14">
<i class="ion-alert-circled"></i> <i class="ion-alert-circled"></i>
<span translate> <span translate>Failed to export</span>
WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so <b>funds will not be accessible from the export</b>.
</span>
</span>
</div>
<div class="box-notification" ng-show="noSignEnabled">
<span class="size-14">
<i class="ion-alert-circled"></i>
<span translate>
WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so <b>funds will not be accessible from the export</b>.
</span>
</span>
</div>
<button
ng-click="downloadWalletBackup()"
class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-show="!isSafari && !isCordova">
<i class="fi-download"></i>
<span translate>Download</span>
</button>
<button
ng-click="viewWalletBackup()"
class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-show="isSafari && !isCordova">
<i class="fi-eye"></i>
<span translate>View</span>
</button>
<div ng-show="isCordova">
<h4 translate>Export options</h4>
<button class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-click="copyWalletBackup()">
<i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="button button-block button-positive" ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-click="sendWalletBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div>
</div>
<div class="row" ng-show="backupWalletPlainText">
<div class="large-12 columns">
<h3 translate>Wallet Export</h3>
<div class="input">
<textarea rows="12">{{backupWalletPlainText}}</textarea>
</div> </div>
<div class="size-12 text-gray text-right">
<i class="icon-compose"></i> <form name="exportForm" novalidate>
<span translate>Copy this text as it is to a safe place (notepad or email)</span> <label class="item item-input item-stacked-label">
<span class="input-label" transalate>Set up a password</span>
<input type="password" placeholder="{{'Your password'|translate}}" name="password" ng-model="password">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" transalate>Repeat the password</span>
<input type="password" class="form-control" placeholder="{{'Repeat password'|translate}}" name="password" ng-model="repeatpassword">
</label>
</form>
<ion-toggle ng-show="canSign" ng-model="showAdvanced" toggle-class="toggle-balanced">
<span translate ng-show="!showAdvanced">Show advanced options</span>
<span translate ng-show="showAdvanced">Hide advanced options</span>
</ion-toggle>
<ion-toggle ng-model="noSignEnabled" ng-show="showAdvanced" toggle-class="toggle-balanced" class="r0" ng-change="noSignEnabledChange()">
<span class="toggle-label" translate>Do not include private key</span>
</ion-toggle>
<div class="box-notification" ng-show="!canSign">
<span class="size-14">
<i class="ion-alert-circled"></i>
<span translate>
WARNING: The private key of this wallet is not available. The export allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so <b>funds will not be accessible from the export</b>.
</span>
</span>
</div>
<div class="box-notification" ng-show="noSignEnabled">
<span class="size-14">
<i class="ion-alert-circled"></i>
<span translate>
WARNING: Not including the private key allows to check the wallet balance, transaction history, and create spend proposals from the export. However, does not allow to approve (sign) proposals, so <b>funds will not be accessible from the export</b>.
</span>
</span>
</div>
<button
ng-click="downloadWalletBackup()"
class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-show="!isSafari && !isCordova">
<i class="fi-download"></i>
<span translate>Download</span>
</button>
<button
ng-click="viewWalletBackup()"
class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-show="isSafari && !isCordova">
<i class="fi-eye"></i>
<span translate>View</span>
</button>
<div ng-show="isCordova">
<h4 translate>Export options</h4>
<button class="button button-block button-positive"
ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-click="copyWalletBackup()">
<i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="button button-block button-positive" ng-disabled="(!password || password != repeatpassword)"
ng-style="{'background-color':wallet.color}"
ng-click="sendWalletBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div> </div>
</div> </div>
</div>
</ion-content> <div class="row" ng-show="backupWalletPlainText">
<div class="large-12 columns">
<h3 translate>Wallet Export</h3>
<div class="input">
<textarea rows="12">{{backupWalletPlainText}}</textarea>
</div>
<div class="size-12 text-gray text-right">
<i class="icon-compose"></i>
<span translate>Copy this text as it is to a safe place (notepad or email)</span>
</div>
</div>
</div>
</ion-content>
</ion-view>

View file

@ -1,23 +1,25 @@
<ion-nav-bar class="bar-stable"> <ion-view>
<ion-nav-title>Export Wallet</ion-nav-title> <ion-nav-bar class="bar-stable">
<ion-nav-buttons side="primary"> <ion-nav-title>{{'Export Wallet' | translate}}</ion-nav-title>
<button class="button no-border" ui-sref="tabs.preferences.preferencesAdvanced"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ui-sref="tabs.preferences.preferencesAdvanced">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
</ion-nav-bar> </ion-nav-buttons>
</ion-nav-bar>
<ion-content ng-controller="exportController" ng-init="init()"> <ion-content ng-controller="exportController" ng-init="init()">
<div class="m20t text-gray" ng-show="supported"> <div class="m20t text-gray" ng-show="supported">
<div class="text-center m20b"> <div class="text-center m20b">
<qrcode size="220" version="8" error-correction-level="M" data="{{exportWalletInfo}}"></qrcode> <qrcode size="220" version="8" error-correction-level="M" data="{{exportWalletInfo}}"></qrcode>
</div>
<div class="text-center size-12 m10" translate>From the destination device, go to Add wallet &gt; Import wallet and scan this QR code</div>
</div> </div>
<div class="text-center size-12 m10" translate>From the destination device, go to Add wallet &gt; Import wallet and scan this QR code</div>
</div>
<div class="m20t text-gray" ng-show="!supported"> <div class="m20t text-gray" ng-show="!supported">
<div class="text-center size-12 m10" translate>Exporting via QR not supported for this wallet</div> <div class="text-center size-12 m10" translate>Exporting via QR not supported for this wallet</div>
</div> </div>
</ion-content> </ion-content>
</ion-view>

View file

@ -1,12 +1,12 @@
<ion-view id="tab-home"> <ion-view id="tab-home">
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-title>Home</ion-nav-title> <ion-nav-title>{{'Home' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content class="padding" ng-controller="tabHomeController" ng-init="updateAllWallets(); nextStep()"> <ion-content class="padding" ng-controller="tabHomeController" ng-init="updateAllWallets(); nextStep()">
<div class="card"> <div class="card">
<div class="item item-divider item-icon-right"> <div class="item item-divider item-icon-right" translate>
Recent Activity Recent Activity
<i class="icon ion-ios-arrow-right" ui-sref="activity"></i> <i class="icon ion-ios-arrow-right" ui-sref="activity"></i>
</div> </div>
@ -25,7 +25,7 @@
</div> </div>
<div class="list card" ng-hide="!wallets[0]"> <div class="list card" ng-hide="!wallets[0]">
<div class="item item-icon-right item-heading"> <div class="item item-icon-right item-heading" translate>
Wallets Wallets
<a ui-sref="tabs.add"><i class="icon ion-ios-plus-empty list-add-button"></i></a> <a ui-sref="tabs.add"><i class="icon ion-ios-plus-empty list-add-button"></i></a>
</div> </div>
@ -61,7 +61,7 @@
</div> </div>
<div class="list card" ng-show="externalServices.BuyAndSell && (glideraEnabled || coinbaseEnabled)"> <div class="list card" ng-show="externalServices.BuyAndSell && (glideraEnabled || coinbaseEnabled)">
<div class="item item-heading"> <div class="item item-heading" translate>
Buy & Sell Bitcoin Buy & Sell Bitcoin
</div> </div>
<a ng-show="glideraEnabled" ui-sref="glidera.main" class="item item-icon-right"> <a ng-show="glideraEnabled" ui-sref="glidera.main" class="item item-icon-right">
@ -76,35 +76,35 @@
<div class="list card" <div class="list card"
ng-show="!externalServices.AmazonGiftCards || !externalServices.BitpayCard || !externalServices.BuyAndSell || !wallets[1]"> ng-show="!externalServices.AmazonGiftCards || !externalServices.BitpayCard || !externalServices.BuyAndSell || !wallets[1]">
<div class="item item-heading"> <div class="item item-heading" translate>
Next steps Next steps
</div> </div>
<a ng-show="!wallets[1]" ui-sref="tabs.add" class="item item-icon-left item-big-icon-left item-icon-right"> <a ng-show="!wallets[1]" ui-sref="tabs.add" class="item item-icon-left item-big-icon-left item-icon-right">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img class="icon-create-wallet"/> <img class="icon-create-wallet"/>
</i> </i>
<span>Create a bitcoin wallet</span> <span translate>Create a bitcoin wallet</span>
<i class="icon ion-ios-arrow-right nav-item-arrow-right"></i> <i class="icon ion-ios-arrow-right nav-item-arrow-right"></i>
</a> </a>
<a ng-show="!externalServices.BuyAndSell" ui-sref="buyandsell" class="item item-icon-left item-big-icon-left item-icon-right"> <a ng-show="!externalServices.BuyAndSell" ui-sref="buyandsell" class="item item-icon-left item-big-icon-left item-icon-right">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img class="icon-buy-bitcoin"/> <img class="icon-buy-bitcoin"/>
</i> </i>
<span>Buy Bitcoin</span> <span translate>Buy Bitcoin</span>
<i class="icon ion-ios-arrow-right nav-item-arrow-right"></i> <i class="icon ion-ios-arrow-right nav-item-arrow-right"></i>
</a> </a>
<a ui-sref="bitpayCard.main" ng-show="!externalServices.BitpayCard" class="item item-icon-left item-big-icon-left item-icon-right"> <a ui-sref="bitpayCard.main" ng-show="!externalServices.BitpayCard" class="item item-icon-left item-big-icon-left item-icon-right">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img class="icon-bitpay-card"/> <img class="icon-bitpay-card"/>
</i> </i>
<span>Add BitPay Card</span> <span translate>Add BitPay Card</span>
<i class="icon ion-ios-arrow-right nav-item-arrow-right"></i> <i class="icon ion-ios-arrow-right nav-item-arrow-right"></i>
</a> </a>
<a ui-sref="amazon.main" ng-show="!externalServices.AmazonGiftCards" class="item item-icon-left item-big-icon-left item-icon-right"> <a ui-sref="amazon.main" ng-show="!externalServices.AmazonGiftCards" class="item item-icon-left item-big-icon-left item-icon-right">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img class="icon-gift"/> <img class="icon-gift"/>
</i> </i>
<span>Add Amazon Gift Card</span> <span translate>Add Amazon Gift Card</span>
<i class="icon ion-ios-arrow-right nav-item-arrow-right"></i> <i class="icon ion-ios-arrow-right nav-item-arrow-right"></i>
</a> </a>
</div> </div>

View file

@ -1,65 +1,67 @@
<ion-nav-bar class="bar-stable" ng-controller="backController"> <ion-view>
<ion-nav-buttons side="primary"> <ion-nav-bar class="bar-stable" ng-controller="backController">
<button class="button no-border" ng-click="importGoBack()"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ng-click="importGoBack()">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
<ion-nav-title>Import wallet</ion-nav-title> </ion-nav-buttons>
</ion-nav-bar> <ion-nav-title>{{'Import wallet' | translate}}</ion-nav-title>
</ion-nav-bar>
<ion-content ng-controller="importController" ng-init="type='file'"> <ion-content ng-controller="importController" ng-init="type='file'">
<div class="padding assertive" ng-show="error"> <div class="padding assertive" ng-show="error">
{{error|translate}} {{error|translate}}
</div>
<form name="importForm" ng-submit="importBlob(importForm)" novalidate>
<div class="list">
<label class="item item-input item-stacked-label no-border" ng-show="!isSafari && !isCordova">
<div class="input-label" translate>Choose a backup file from your computer</div>
<div>
<input type="file"
placeholder="{{'Select a backup file'|translate}}"
name="backupFile"
ng-model="backupFile" ng-file-select>
</div>
</label>
<label class="item item-input item-stacked-label" ng-show="isSafari || isCordova">
<span class="input-label" translate>Paste the backup plain text code</span>
<textarea name="backupText" ng-model="backupText" rows="5"></textarea>
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" translate>Password</span>
<input type="password"
placeholder="{{'Your password'|translate}}"
name="password"
ng-model="password">
</label>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable">
<span translate ng-show="!showAdv">Show advanced options</span>
<span translate ng-show="showAdv">Hide advanced options</span>
</ion-toggle>
<div ng-show="showAdv">
<label class="item item-input item-stacked-label">
<span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
</div>
</div> </div>
<button type="submit" <form name="importForm" ng-submit="importBlob(importForm)" novalidate>
class="button round expand black"
ng-disabled="importForm.$invalid || !password " translate>
Import backup
</button>
</form>
</ion-content> <div class="list">
<label class="item item-input item-stacked-label no-border" ng-show="!isSafari && !isCordova">
<div class="input-label" translate>Choose a backup file from your computer</div>
<div>
<input type="file"
placeholder="{{'Select a backup file'|translate}}"
name="backupFile"
ng-model="backupFile" ng-file-select>
</div>
</label>
<label class="item item-input item-stacked-label" ng-show="isSafari || isCordova">
<span class="input-label" translate>Paste the backup plain text code</span>
<textarea name="backupText" ng-model="backupText" rows="5"></textarea>
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" translate>Password</span>
<input type="password"
placeholder="{{'Your password'|translate}}"
name="password"
ng-model="password">
</label>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable">
<span translate ng-show="!showAdv">Show advanced options</span>
<span translate ng-show="showAdv">Hide advanced options</span>
</ion-toggle>
<div ng-show="showAdv">
<label class="item item-input item-stacked-label">
<span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
</div>
</div>
<button type="submit"
class="button round expand black"
ng-disabled="importForm.$invalid || !password " translate>
Import backup
</button>
</form>
</ion-content>
</ion-view>

View file

@ -1,71 +1,73 @@
<ion-nav-bar class="bar-stable" ng-controller="backController"> <ion-view>
<ion-nav-buttons side="primary"> <ion-nav-bar class="bar-stable" ng-controller="backController">
<button class="button no-border" ng-click="importGoBack()"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ng-click="importGoBack()">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
<ion-nav-title>Import wallet</ion-nav-title> </ion-nav-buttons>
</ion-nav-bar> <ion-nav-title>{{'Import wallet' | translate}}</ion-nav-title>
</ion-nav-bar>
<ion-content ng-controller="importController" ng-init="type='hwWallet'"> <ion-content ng-controller="importController" ng-init="type='hwWallet'">
<div class="padding assertive" ng-show="error"> <div class="padding assertive" ng-show="error">
{{error|translate}} {{error|translate}}
</div>
<form name="importForm3" ng-submit="importHW(importForm3)" novalidate>
<div class="card" ng-show="!seedOptions[0]">
<div class="item item-text-wrap" translate>
No hardware wallets supported on this device
</div>
</div> </div>
<div ng-show="seedOptions[0]"> <form name="importForm3" ng-submit="importHW(importForm3)" novalidate>
<div class="list">
<label class="item item-input item-select">
<div class="input-label" translate>
Wallet Type
</div>
<select ng-model="seedSource"
ng-options="seed as seed.label for seed in seedOptions"
ng-change="setSeedSource()">
</select>
</label>
<label class="item item-input item-stacked-label"
ng-show="seedSourceId == 'trezor' || seedSourceId == 'ledger'">
<span class="input-label" translate>Account Number</span>
<input type="number" id="account" ng-model="account" ignore-mouse-wheel>
</label>
<ion-toggle ng-show="seedSourceId == 'trezor'"
ng-model="isMultisig"
toggle-class="toggle-positive">
<span translate>Shared Wallet</span>
</ion-toggle>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable">
<span translate ng-show="!showAdv">Show advanced options</span>
<span translate ng-show="showAdv">Hide advanced options</span>
</ion-toggle>
<div ng-show="showAdv">
<label class="item item-input item-stacked-label">
<span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
<div class="card" ng-show="!seedOptions[0]">
<div class="item item-text-wrap" translate>
No hardware wallets supported on this device
</div> </div>
</div> </div>
<button translate type="submit" class="button button-block button-positive"> <div ng-show="seedOptions[0]">
Import <div class="list">
</button>
</div> <!-- seedoptions show -->
</form> <label class="item item-input item-select">
<div class="input-label" translate>
Wallet Type
</div>
<select ng-model="seedSource"
ng-options="seed as seed.label for seed in seedOptions"
ng-change="setSeedSource()">
</select>
</label>
</ion-content> <label class="item item-input item-stacked-label"
ng-show="seedSourceId == 'trezor' || seedSourceId == 'ledger'">
<span class="input-label" translate>Account Number</span>
<input type="number" id="account" ng-model="account" ignore-mouse-wheel>
</label>
<ion-toggle ng-show="seedSourceId == 'trezor'"
ng-model="isMultisig"
toggle-class="toggle-positive">
<span translate>Shared Wallet</span>
</ion-toggle>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable">
<span translate ng-show="!showAdv">Show advanced options</span>
<span translate ng-show="showAdv">Hide advanced options</span>
</ion-toggle>
<div ng-show="showAdv">
<label class="item item-input item-stacked-label">
<span class="input-label">Wallet Service URL</span>
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
</div>
</div>
<button translate type="submit" class="button button-block button-positive">
Import
</button>
</div> <!-- seedoptions show -->
</form>
</ion-content>
</ion-view>

View file

@ -1,88 +1,90 @@
<ion-nav-bar class="bar-stable" ng-controller="backController"> <ion-view>
<ion-nav-buttons side="primary"> <ion-nav-bar class="bar-stable" ng-controller="backController">
<button class="button no-border" ng-click="importGoBack()"> <ion-nav-buttons side="primary">
<i class="icon ion-chevron-left"></i> Back <button class="button no-border" ng-click="importGoBack()">
</button> <i class="icon ion-chevron-left"></i> {{'Back' | translate}}
</ion-nav-buttons> </button>
<ion-nav-title>Import wallet</ion-nav-title> </ion-nav-buttons>
</ion-nav-bar> <ion-nav-title>Import wallet</ion-nav-title>
</ion-nav-bar>
<ion-content ng-controller="importController" ng-init="type='12'"> <ion-content ng-controller="importController" ng-init="type='12'">
<div ng-show="importErr || error" class="padding assertive" ng-click="importErr = error = null"> <div ng-show="importErr || error" class="padding assertive" ng-click="importErr = error = null">
<div ng-show="importErr"> <div ng-show="importErr">
<div translate>Could not access the wallet at the server. Please check:</div> <div translate>Could not access the wallet at the server. Please check:</div>
<ul> <ul>
<li translate>The password of the recovery phrase (if set)</li> <li translate>The password of the recovery phrase (if set)</li>
<li translate>The derivation path</li> <li translate>The derivation path</li>
<li translate>The wallet service URL</li> <li translate>The wallet service URL</li>
</ul> </ul>
<div translate> <div translate>
NOTE: To import a wallet from a 3rd party software, please go to Add Wallet &gt; Create Wallet, and specify the Recovery Phrase there. NOTE: To import a wallet from a 3rd party software, please go to Add Wallet &gt; Create Wallet, and specify the Recovery Phrase there.
</div>
</div>
<div ng-show="error">
{{error|translate}}
</div>
</div>
<form name="importForm12" ng-submit="importMnemonic(importForm12)" novalidate>
<div class="list">
<div class="row">
<div class="col col-90">
<label class="item item-input item-stacked-label no-border">
<span class="input-label" translate>Type the Recovery Phrase (usually 12 words)</span>
<textarea name="words"
ng-model="words"
rows="3"
autocapitalize="off"
spellcheck="false"></textarea>
</label>
</div>
<div class="col text-center">
<qr-scanner class="qr-icon size-24" on-scan="processWalletInfo(data)"></qr-scanner>
</div> </div>
</div> </div>
<ion-toggle ng-model="showAdv" toggle-class="toggle-stable"> <div ng-show="error">
<span translate ng-show="!showAdv">Show advanced options</span> {{error|translate}}
<span translate ng-show="showAdv">Hide advanced options</span> </div>
</ion-toggle> </div>
<div ng-show="showAdv"> <form name="importForm12" ng-submit="importMnemonic(importForm12)" novalidate>
<div class="list">
<label class="item item-input item-stacked-label"> <div class="row">
<span class="input-label">Wallet Service URL</span> <div class="col col-90">
<input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl"> <label class="item item-input item-stacked-label no-border">
</label> <span class="input-label" translate>Type the Recovery Phrase (usually 12 words)</span>
<textarea name="words"
ng-model="words"
rows="3"
autocapitalize="off"
spellcheck="false"></textarea>
</label>
</div>
<div class="col text-center">
<qr-scanner class="qr-icon size-24" on-scan="processWalletInfo(data)"></qr-scanner>
</div>
</div>
<label class="item item-input item-stacked-label"> <ion-toggle ng-model="showAdv" toggle-class="toggle-stable">
<span class="input-label" translate>Password</span> <span translate ng-show="!showAdv">Show advanced options</span>
<input type="text" <span translate ng-show="showAdv">Hide advanced options</span>
placeholder="{{'The recovery phrase could require a password to be imported'|translate}}"
autocapitalize="off"
name="passphrase"
ng-model="passphrase">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" translate>Derivation Path</span>
<input type="text"
placeholder="{{'BIP32 path for address derivation'|translate}}"
name="derivationPath"
ng-model="derivationPath">
</label>
<ion-toggle ng-model="testnetEnabled" ng-change="setDerivationPath(testnetEnabled)" toggle-class="toggle-positive">
Testnet
</ion-toggle> </ion-toggle>
</div>
</div>
<button type="submit" <div ng-show="showAdv">
class="button button-block button-positive"
ng-disabled="importForm12.$invalid" translate>Import</button> <label class="item item-input item-stacked-label">
</form> <span class="input-label">Wallet Service URL</span>
</ion-content> <input type="text" id="bwsurl" name="bwsurl" ng-model="bwsurl">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" translate>Password</span>
<input type="text"
placeholder="{{'The recovery phrase could require a password to be imported'|translate}}"
autocapitalize="off"
name="passphrase"
ng-model="passphrase">
</label>
<label class="item item-input item-stacked-label">
<span class="input-label" translate>Derivation Path</span>
<input type="text"
placeholder="{{'BIP32 path for address derivation'|translate}}"
name="derivationPath"
ng-model="derivationPath">
</label>
<ion-toggle ng-model="testnetEnabled" ng-change="setDerivationPath(testnetEnabled)" toggle-class="toggle-positive">
Testnet
</ion-toggle>
</div>
</div>
<button type="submit"
class="button button-block button-positive"
ng-disabled="importForm12.$invalid" translate>Import</button>
</form>
</ion-content>
</ion-view>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{'Receive' | translate}}</ion-nav-title> <ion-nav-title>{{'Receive' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>

View file

@ -1,6 +1,6 @@
<ion-view> <ion-view>
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-title>Scan</ion-nav-title> <ion-nav-title>{{'Scan' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content class="padding" ng-controller="tabScanController" ng-init="init()"> <ion-content class="padding" ng-controller="tabScanController" ng-init="init()">

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{'Send' | translate}}</ion-nav-title> <ion-nav-title>{{'Send' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>

View file

@ -1,6 +1,6 @@
<ion-view> <ion-view>
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-title>Global Settings</ion-nav-title> <ion-nav-title>{{'Global Settings' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content ng-controller="tabSettingsController" ng-init="init()"> <ion-content ng-controller="tabSettingsController" ng-init="init()">
@ -12,7 +12,7 @@
<span translate>Address Book</span> <span translate>Address Book</span>
</div> </div>
<div class="item item-divider">Preferences</div> <div class="item item-divider" translate>Preferences</div>
<div class="item item-icon-left" href ui-sref="tabs.language"> <div class="item item-icon-left" href ui-sref="tabs.language">
<i class="icon ion-ios-chatbubble-outline"></i> <i class="icon ion-ios-chatbubble-outline"></i>
@ -47,7 +47,7 @@
</div> </div>
<div ng-show="usePushNotifications && PNEnabledByUser"> <div ng-show="usePushNotifications && PNEnabledByUser">
<div class="item item-divider">Notifications</div> <div class="item item-divider" translate>Notifications</div>
<ion-toggle ng-model="pushNotifications" toggle-class="toggle-balanced" ng-change="pushNotificationsChange()"> <ion-toggle ng-model="pushNotifications" toggle-class="toggle-balanced" ng-change="pushNotificationsChange()">
<span class="toggle-label" translate>Enable push notifications</span> <span class="toggle-label" translate>Enable push notifications</span>
@ -61,36 +61,37 @@
</div> </div>
</div> </div>
<div class="item item-divider">Exchanges</div> <div class="item item-divider" translate>Exchanges</div>
<ion-toggle ng-show="!isWP" ng-model="glideraEnabled" toggle-class="toggle-balanced" ng-change="glideraChange()"> <ion-toggle ng-show="!isWP" ng-model="glideraEnabled" toggle-class="toggle-balanced" ng-change="glideraChange()">
<span class="toggle-label" translate>Enable Glidera Service</span> <span class="toggle-label" translate>Enable Glidera Service</span>
</ion-toggle> </ion-toggle>
<!-- disable coinbase for this release -->
<!--
<ion-toggle ng-show="!isWP" ng-model="coinbaseEnabled" toggle-class="toggle-balanced" ng-change="coinbaseChange()"> <ion-toggle ng-show="!isWP" ng-model="coinbaseEnabled" toggle-class="toggle-balanced" ng-change="coinbaseChange()">
<span class="toggle-label" translate>Enable Coinbase Service</span> <span class="toggle-label" translate>Enable Coinbase Service</span>
</ion-toggle> </ion-toggle>
-->
<div class="item item-divider">Others</div> <div class="item item-divider" translate>Others</div>
<ion-toggle ng-model="spendUnconfirmed" toggle-class="toggle-balanced" ng-change="spendUnconfirmedChange()"> <ion-toggle ng-model="spendUnconfirmed" toggle-class="toggle-balanced" ng-change="spendUnconfirmedChange()">
<span class="toggle-label" translate>Use Unconfirmed Funds</span> <span class="toggle-label" translate>Use Unconfirmed Funds</span>
</ion-toggle> </ion-toggle>
<div class="list"> <div class="item item-divider" translate>Wallets Settings</div>
<div class="item item-divider">Wallets Settings</div> <div class="item item-icon-left" href
<div ng-repeat="item in wallets track by $index"> ui-sref="tabs.preferences.main({'walletId': item.id})"
<div class="item item-icon-left" href ui-sref="tabs.preferences.main({'walletId': item.id})"> ng-repeat="item in wallets track by $index">
<i class="icon ion-briefcase size-21" ng-style="{'color':item.color}"></i> <i class="icon ion-briefcase size-21" ng-style="{'color':item.color}"></i>
{{item.name || item.id}} {{item.name || item.id}}
<span ng-show="item.n > 1" class="text-light"> <span ng-show="item.n > 1" class="text-light">
{{item.m}}-of-{{item.n}} {{item.m}}-of-{{item.n}}
</span> </span>
<span class="badge badge-assertive" ng-show="!item.isComplete()" translate> <span class="badge badge-assertive" ng-show="!item.isComplete()" translate>
Incomplete Incomplete
</span> </span>
</div>
</div>
</div> </div>
<div class="item item-divider"></div> <div class="item item-divider"></div>
@ -98,6 +99,7 @@
<i class="icon ion-ios-film-outline"></i> <i class="icon ion-ios-film-outline"></i>
<span translate>About Bitpay Wallet</span> <span translate>About Bitpay Wallet</span>
</div> </div>
<div class="item item-divider"></div>
</div> </div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -1,10 +1,10 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content ng-controller="termOfUseController" cache-view="false"> <ion-content ng-controller="termOfUseController" cache-view="false">
<p> <p>
<div ng-include="'views/includes/terms.html'"></div> <div ng-include="'views/includes/terms.html'"></div>

View file

@ -1,5 +1,5 @@
<ion-view> <ion-view>
<ion-nav-bar> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{'Translators' | translate}}</ion-nav-title> <ion-nav-title>{{'Translators' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
{{'Back' | translate}} {{'Back' | translate}}

View file

@ -1,5 +1,3 @@
<ion-view> <ion-view>
<ion-nav-bar class="bar-stable"> <ion-nav-bar class="bar-stable">
<ion-nav-title>{{wallet.name}}</ion-nav-title> <ion-nav-title>{{wallet.name}}</ion-nav-title>
@ -9,16 +7,16 @@
</ion-nav-bar> </ion-nav-bar>
<ion-content ng-controller="walletDetailsController" ng-init="init()" delegate-handle="my-handle"> <ion-content ng-controller="walletDetailsController" ng-init="init()" delegate-handle="my-handle">
<div ng-show="!wallet"> <div ng-show="!wallet" translate>
No Wallet No Wallet
<a href ui-sref="tabs.home" class="button"> <a href ui-sref="tabs.home" class="button" translate>
Go home Go home
</a> </a>
</div> </div>
<div ng-show="!wallet.isComplete()"> <div ng-show="!wallet.isComplete()">
<a class="button button-block button-assertive" href ui-sref="wallet.copayers" class="button"> <a class="button button-block button-assertive" href ui-sref="wallet.copayers" class="button" translate>
Wallet Incomplete Wallet Incomplete
</a> </a>
</div> </div>

View file

@ -2,12 +2,6 @@
angular.module('copayApp.controllers').controller('welcomeController', function($scope, $state, $timeout, $log, $ionicPopup, profileService) { angular.module('copayApp.controllers').controller('welcomeController', function($scope, $state, $timeout, $log, $ionicPopup, profileService) {
$scope.goImport = function() {
$state.go('tabs.import.phrase', {
fromOnboarding: true
});
};
$scope.createProfile = function() { $scope.createProfile = function() {
$log.debug('Creating profile'); $log.debug('Creating profile');
profileService.createProfile(function(err) { profileService.createProfile(function(err) {

View file

@ -270,7 +270,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}) })
.state('tabs.import', { .state('tabs.import', {
url: '/import/:fromOnboarding', url: '/import/:fromOnboarding',
abstract: true, // abstract: true,
views: { views: {
'tab-home': { 'tab-home': {
templateUrl: 'views/import.html' templateUrl: 'views/import.html'