Skip to content
This repository has been archived by the owner on Oct 8, 2019. It is now read-only.

Commit

Permalink
Merge pull request #1458 from blockchain/v1.32-release
Browse files Browse the repository at this point in the history
V1.32 release
  • Loading branch information
prwelber committed Feb 15, 2018
2 parents 473335c + c279999 commit b824b11
Show file tree
Hide file tree
Showing 59 changed files with 751 additions and 263 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,4 @@ Bug fixes and feedback on our code is always appreciated.
Security issues can be reported to us in the following venues:

* Email: security@blockchain.info
* Bug Bounty: https://www.crowdcurity.com/blockchain-info
* Bug Bounty: https://hackerone.com/blockchain
10 changes: 6 additions & 4 deletions app/partials/buy-sell-select-partner.pug
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@ div
.item
input(type="email" ng-model="email" required)
button.btn.button-primary.full-width.mt-20(translate="EXCHANGE.NOTIFY_ME_WHEN_AVAIL" type="submit")
.ml-30.width-40.hidden-xs(ng-if="!hasDismissedSellIntro() && (country.Code === 'US' || $parent.country.Code === 'US')")
.ml-30.width-40.hidden-xs(ng-if="!hasDismissedBuyIntro() && (country.Code === 'US' || $parent.country.Code === 'US')")
.flex-between
span.f-24.blue.f-14-mobile(translate="SFOX.sell.INTRODUCING_HEADER")
span.f-24.blue.f-14-mobile(translate="SFOX.buy.INTRODUCING_HEADER")
.flex-center.pl-10
i.pointer.ti-close.f-12.mid-grey(ng-click="dismissSellIntro()")
p.f-12.mt-10(translate="SFOX.sell.INTRODUCING_BODY")
i.pointer.ti-close.f-12.mid-grey(ng-click="dismissBuyIntro()")
p.f-12.mt-10(translate="SFOX.buy.INTRODUCING_BODY")


35 changes: 35 additions & 0 deletions app/partials/eth-mew-sweep.pug
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
form.bc-form(name="EthMewSweepForm" id="EthMewSweepForm" ng-submit="submit()")
.modal-header
.flex-center
h3.man.mrm(translate="MEW.import_from_mew")
.modal-body
div.em-500.f-14.mb-5(translate="MEW.select_keystore_file")
p.mb-10(translate="MEW.keystore_file_explained")
.group.inline.flex-center
button.btn.button-primary-inverse(type="button" ngf-select ng-model="file" ngf-model-invalid="invalidFile" ngf-pattern="")
i.mr-10.ti-upload
span(translate="MEW.select_wallet_file")
span(ng-show="keystore && fileError")
i.ml-10.f-24.icon-alert.state-danger-text
span(ng-show="keystore && !fileError")
i.ml-10.f-24.icon-success.security-green
.group.mt-5(ng-show="keystore && fileError")
span.state-danger-text(translate="File type unsupported. Please use your UTC / JSON file.")
.group.mt-20(ng-show="keystore && !fileError")
.item
label(translate="Enter your passphrase for the file")
input(
name="pw"
type="password"
ng-model="password"
focus-when="keystore && !fileError"
required)
div.small.well.em-300(translate="MEW.import_funds_warn")
div.f-12.mt-10.em-300(translate="MEW.by_clicking_import")
.modal-footer.pal.flex-end.flex-center
button.button-muted.mrm(
type="button"
translate="CLOSE"
ng-hide="status.busy"
ng-click="$dismiss()")
button.button-primary(type="submit" ui-ladda="locked" data-style="expand-left" form="EthMewSweepForm" ng-disabled="!password || !keystore || fileError || locked" ladda-translate="MEW.import_funds")
6 changes: 3 additions & 3 deletions app/partials/export-history.pug
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ form(role="form" name="exportForm" ng-submit="vm.submit()" autocomplete="off" no
tagging
required)
ui-select-match(placeholder="{{'SEARCH' | translate}}...")
label-origin(origin="$select.selected")
label-origin(origin="$select.selected" coin-code="vm.coinCode")
ui-select-choices(repeat="t in vm.targets | filter:{label:$select.search} | limitTo:vm.limit")
label-origin(origin="::t" in-view="$last && vm.isLast(t) && vm.incLimit()" highlight="$select.search")
label-origin(origin="::t" in-view="$last && vm.isLast(t) && vm.incLimit()" highlight="$select.search" coin-code="vm.coinCode")
.flex-row.flex-center.flex-between.pal(ng-class="{'has-error':exportForm.$invalid || vm.start.date > vm.end.date}")
p.input-group.flex-center
input.form-control(
Expand Down Expand Up @@ -63,4 +63,4 @@ form(role="form" name="exportForm" ng-submit="vm.submit()" autocomplete="off" no
download-button.btn.button-primary(
ng-hide="vm.history == null || vm.canTriggerDownload"
filename="{{vm.filename()}}"
content="vm.history")
content="vm.history")
9 changes: 9 additions & 0 deletions app/partials/settings/info.pug
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,12 @@
span(ng-show="pairingCode")
qr(text="pairingCode" size="180" image="true")

.form-group.mbn.border-bottom.clearfix.pvl(data-preflight-tag="MewSweep" ng-show="showMew")
.col-sm-12.col-md-8
label.em-400.type-h5(translate="MEW.import_funds_mew")
p.alt-font.f-16.em-300
span(translate="MEW.import_funds_explain_ext")
span  
span.security-red(translate="MEW.import_funds_warn")
.col-sm-12.col-md-4.setting-result
button.button-primary(ng-click="showMewSweep()" translate="MEW.import_funds")
2 changes: 1 addition & 1 deletion app/partials/settings/show-private-key.pug
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
span(translate="no") : {{ balance | convert }}
p
label(translate="YOUR_PRIVATE_KEY")
span(translate="no") : {{ privKeys[format] }}
span.break-word(translate="no") : {{ privKeys[format] }}
.flex-row.flex-center
label.prs
span(translate="PK_FORMAT")
Expand Down
98 changes: 59 additions & 39 deletions app/partials/sfox/checkout.pug
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ bc-tabs(tab="tabs.selectedTab" tab-options="tabs.options" on-select="tabs.select
a(href="https://www.sfox.com/" target="_blank" rel="noopener noreferrer")
img.mbs(src="img/sfox-logo-trans.png")
.buy-sell.overflow-scroll.flex-1
.flex-column.pbvl(ng-show="tabs.selectedTab === 'BUY_BITCOIN'")
.width-50.pv-30.ph-30.border-desktop.flex-center.flex-justify
.flex-row.pbvl(ng-show="tabs.selectedTab === 'BUY_BITCOIN' && checkout.onStep('create')")
.width-50.pv-30.ph-30.border-desktop.flex-center.flex-justify(ng-if="!showBuy()")
.flex-column
span.f-24.center.blue.pb-15(translate="Stay Tuned!")
span.f-18.center(translate="SFOX.buy.COMING_SOON")
Expand All @@ -17,49 +17,69 @@ bc-tabs(tab="tabs.selectedTab" tab-options="tabs.options" on-select="tabs.select
.item
input(type="email" ng-model="email" placeholder="Add your email here" required)
button.btn.button-primary.full-width.mt-20(translate="EXCHANGE.NOTIFY_ME_WHEN_AVAIL" type="submit")
.flex-row.pbvl(ng-show="tabs.selectedTab === 'SELL_BITCOIN'")
exchange-checkout.width-50.border-desktop.pv-30.ph-30.no-padding-mobile(
type="'Sell'"
fiat="dollars"
user-id="userId"
conversion="100"
trading="selling"
limits="sellLimits"
provider="'sfox'"
ng-if="onStep('create')"
buy-level="state.buyLevel"
trade-account="state.account"
handle-quote="sellQuoteHandler(amount, baseCurr, quoteCurr)"
on-success="selling().verificationRequired ? openSfoxSignup() : buildPayment(quote)")
exchange-confirm.width-50.border-desktop(
type="'sell'"
quote="quote"
namespace="'SFOX'"
details="sellDetails"
trade-account="state.account"
fiat="dollars"
ng-if="onStep('confirm')"
on-cancel="handleCancel()"
on-success="goTo('receipt')"
on-expiration="sellRefresh()"
handle-trade="sellHandler(quote)")
.flex-column.width-50.pl-30.prn.pv-10-mobile.no-margin-mobile.hidden-xs(ng-if="onStep('create') && !hasDismissedSellIntro()")
.border-desktop.ph-30.pv-30.width-50.no-padding-mobile(ng-controller="SfoxBuyCheckoutController" ng-if="showBuy()")
exchange-checkout(
type="'Buy'"
fiat="checkout.dollars"
user-id="checkout.userId"
conversion="100"
trading="buying"
fiat-limits="true"
limits="buyLimits"
provider="'sfox'"
buy-level="checkout.state.buyLevel"
trade-account="checkout.state.account"
handle-quote="buyQuoteHandler(amount, baseCurr, quoteCurr)"
on-success="buying().verificationRequired ? checkout.openSfoxSignup() : prepareBuy(quote)")
.flex-column.width-50.pl-30.prn.pv-10-mobile.no-margin-mobile.hidden-xs(ng-if="checkout.onStep('create') && showBuy() && !checkout.hasDismissedBuyIntro()")
.mb-20
.flex-between
span.f-24.blue.f-14-mobile(translate="SFOX.sell.INTRODUCING_HEADER")
span.f-24.blue.f-14-mobile(translate="SFOX.buy.INTRODUCING_HEADER")
.flex-center.pl-10
i.pointer.ti-close.f-12.mid-grey(ng-click="dismissSellIntro()")
p.f-12.mt-10(translate="SFOX.sell.INTRODUCING_BODY")
div.width-50.border-desktop(
ng-if="onStep('receipt')"
ng-include="'partials/sfox/details.pug'")
.flex-column.pbvl(ng-show="tabs.selectedTab === 'ORDER_HISTORY'")
i.pointer.ti-close.f-12.mid-grey(ng-click="checkout.dismissBuyIntro()")
p.f-12.mt-10(translate="SFOX.buy.INTRODUCING_BODY")
.flex-row.pbvl(ng-show="tabs.selectedTab === 'SELL_BITCOIN' && checkout.onStep('create')")
.border-desktop.ph-30.pv-30.width-50.no-padding-mobile(ng-controller="SfoxSellCheckoutController")
exchange-checkout(
type="'Sell'"
fiat="checkout.dollars"
user-id="checkout.userId"
conversion="100"
trading="selling"
limits="sellLimits"
provider="'sfox'"
buy-level="checkout.state.buyLevel"
trade-account="checkout.state.account"
handle-quote="sellQuoteHandler(amount, baseCurr, quoteCurr)"
on-success="selling().verificationRequired ? checkout.openSfoxSignup() : buildPayment(quote)")
.flex-column.width-50.pl-30.prn.pv-10-mobile.no-margin-mobile.hidden-xs(ng-if="checkout.onStep('create') && !checkout.hasDismissedSellIntro()")
.flex-between
span.f-24.blue.f-14-mobile(translate="SFOX.sell.INTRODUCING_HEADER")
.flex-center.pl-10
i.pointer.ti-close.f-12.mid-grey(ng-click="dismissSellIntro()")
p.f-12.mt-10(translate="SFOX.sell.INTRODUCING_BODY")
.flex-row.pbvl(ng-if="checkout.onStep('confirm')")
exchange-confirm.width-50.border-desktop(
type="checkout.type"
quote="checkout.quote"
namespace="'SFOX'"
details="checkout.tradeDetails"
trade-account="checkout.state.account"
fiat="checkout.dollars"
on-cancel="checkout.type === 'buy' ? checkout.handleCancel(null, checkout.type, 0) : checkout.handleCancel(null, checkout.type)"
on-success="checkout.goTo('receipt')"
on-expiration="checkout.type === 'sell' ? checkout.sellRefresh() : checkout.buyRefresh()"
handle-trade="checkout.type === 'sell' ? checkout.sellHandler(checkout.quote) : checkout.buyHandler(checkout.quote)")
div.width-50.border-desktop(
ng-if="checkout.onStep('receipt')"
ng-include="'partials/sfox/details.pug'")
.flex-column.pbvl(ng-if="tabs.selectedTab === 'ORDER_HISTORY'")
.flex-center.flex-justify.flex-column.mtvl(ng-hide="completedTrades().length || pendingTrades().length")
.flex-column.mbl.border-bottom.black
.flex-center.flex-justify
i.ti-direction-alt.h3.mrm
h3.em-100(translate="NO_TRADES")
p.em-400.pointer(translate="NO_TRADES_EXPLAIN" ng-click="tabs.select('SELL_BITCOIN')")
p.em-400.pointer(translate="NO_TRADES_EXPLAIN" ng-click="tabs.select('BUY_BITCOIN')")
div(ng-show="pendingTrades().length")
.flex-row.flex-between.flex-center
h4.type-h5 Pending Orders
Expand All @@ -77,7 +97,7 @@ bc-tabs(tab="tabs.selectedTab" tab-options="tabs.options" on-select="tabs.select
user-action-required="trade.state === 'awaiting_transfer_in'"
inspect-trade="inspectTrade"
namespace="'SFOX'"
conversion="1"
conversion="100000000"
trade="trade")
div(ng-show="completedTrades().length")
.flex-row.flex-between.flex-center.mtl
Expand All @@ -96,7 +116,7 @@ bc-tabs(tab="tabs.selectedTab" tab-options="tabs.options" on-select="tabs.select
user-action-required="trade.state === 'awaiting_transfer_in'"
inspect-trade="inspectTrade"
namespace="'SFOX'"
conversion="1"
conversion="100000000"
trade="trade")
contact-support-footer(ng-hide="inMobileBuy")
sift-science(ng-if='siftScienceEnabled' user-id='userId' trade-id='trade.id')
8 changes: 5 additions & 3 deletions app/partials/sfox/details.pug
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ div(ng-controller="SfoxTradeDetailsController")
div(ng-if="tradeAccount")
.flex-end.flex-row.mb-5.mt-5
span.mid-grey.f-12 1 BTC = {{ rate }}
.mv-10.pv-10.ph-10.border
span.em-500 Linked Account for Deposit: {{tradeAccount.accountType}} ending in {{tradeAccount.accountNumber}}
.mv-10.pv-10.ph-10.border.flex-row.flex-center
i.f-18.mr-10.icon-bank
span.em-500(ng-show="type === '.sell'") Linked Account for Deposit: {{tradeAccount.accountType}} ending in {{tradeAccount.accountNumber}}
span.em-500(ng-show="type === '.buy'") Linked Account for Spending: {{tradeAccount.accountType}} ending in {{tradeAccount.accountNumber}}
.ph-30.ph-10-mobile
ul.f-13.em-300.bg-grey.border.pv-10.ph-10.mb-20
li.flex-between(ng-repeat="(row, field) in tradeDetails track by $index" ng-class="{'pb-10': $first, 'pt-10': $last, 'pv-10': !$first && !$last, 'border-bottom-light': !$last}")
div
span(translate="{{namespace + type + field.key}}")
helper-button(ng-show="field.key === '.TX_FEE'" content="{{namespace + '.TRANSACTION_FEE_HELPER'}}")
helper-button(ng-show="field.key === '.TX_FEE'" content="{{namespace + type + '.TRANSACTION_FEE_HELPER'}}")
helper-button(ng-show="field.key === '.TRADING_FEE'" content="{{namespace + '.TRADING_FEE_HELPER'}}")
span {{ field.val }}
.flex-row.flex-end.pb-20
Expand Down
47 changes: 26 additions & 21 deletions app/partials/sfox/link.pug
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.flex-row.flex-column-tablet(ng-show="!state.accounts.length" translate-namespace="{{namespace + '.LINK_BANK'}}")
.width-40(ng-hide="state.bankAccounts")
.width-35(ng-hide="state.bankAccounts")
.width-80
h4.f-20.em-500.mvn.mb-10(translate=".HEADER")
.mbl
Expand All @@ -8,13 +8,13 @@
span.f-16(translate=".COPY_2")
.mbl
span.f-14(translate=".COPY_SMALL")
.width-40(ng-show="state.bankAccounts")
.width-35(ng-show="state.bankAccounts")
.width-80
h4.f-20.em-500.mvn.mb-10(translate="Select Payment Account")
.mbl
span.f-16(translate="Please select your preferred bank account to make bitcoin transactions.")

.width-60.flex-justify(ng-show="state.bankAccounts")
.width-65.flex-justify(ng-show="state.bankAccounts")
.width-90.width-100-tablet.width-100-mobile
label.f-14.colon(translate="Select Account")
form.bc-form(name="bankLinkForm" ng-submit="setBankAccount()")
Expand All @@ -34,25 +34,30 @@
span.error(ng-hide="bankAccountForm.accountName.$error.value" translate="Required field")
button.btn.button-primary.full.mt-15(type="submit" ng-disabled="bankLinkForm.$invalid || locked") Add Account

.width-60.flex-justify(ng-hide="state.bankAccounts" id="wallet")
.width-65.flex-justify(ng-hide="state.bankAccounts" id="wallet")
.width-90.width-100-tablet.width-100-mobile
iframe(
ng-if="!inMobileBuy"
ng-src='{{ plaidUrl }}'
sandbox='allow-same-origin allow-scripts allow-forms'
ng-class='{enabled: state.plaid.enabled}'
scrolling = 'no'
id='plaid'
)
button.btn.button-primary.full(ng-if="state.plaid.enabled" ng-disabled="state.plaid.enabled") Sign In To Your Bank Account
.mvvl(ng-if="!inMobileBuy")
span.or-horizontal.flex-justify(translate="OR")
button.btn.button-primary-inverse.full(translate="Manually Enter Account & Routing Numbers" ng-hide="state.enableBankAccountForm" ng-click="state.enableBankAccountForm = true")
form.bc-form(name="forms.bankAccountForm" ng-show="state.enableBankAccountForm" ng-submit="link()" novalidate autocomplete="off")
.flex-column
span.em-500.f-14.pb-10(translate="Select Method to Link Your Bank Account:")
.border-desktop.pv-35.ph-50.pv-10-mobile.ph-10-mobile
iframe(
ng-if="!inMobileBuy"
ng-src='{{ plaidUrl }}'
sandbox='allow-same-origin allow-scripts allow-forms allow-popups'
ng-class='{enabled: state.plaid.enabled}'
scrolling = 'no'
id='plaid'
)
button.btn.button-primary.full(ng-if="state.plaid.enabled" ng-disabled="state.plaid.enabled") Sign In To Your Bank Account to Instantly Begin Trading
.flex-row.flex-justify.flex-column-mobile.flex-center-mobile.mt-10.no-margin-mobile
span.f-14.em-500.mv-10.hidden-sm.hidden-md.hidden-lg(translate="OR")
a(translate="Manually Enter Account & Routing Information" ng-click="state.enableBankAccountForm = true")
|  
span(translate="(This can take up to 4 business days)")
form.bc-form.pt-15(name="forms.bankAccountForm" ng-show="state.enableBankAccountForm" ng-submit="link()" novalidate autocomplete="off")
fieldset(ng-disabled="locked")
.group.full.mb-30
.item
label Account Holder's Name
label Full Name of Primary Account Holder
helper-button(content="Enter the account holder's name exactly as it is appears on the bank account.")
input(ng-model="fields.accountName" name="accountName" focus-when="state.enableBankAccountForm" required)
span.error(ng-hide="forms.bankAccountForm.accountName.$error.value" translate="Required field")
Expand Down Expand Up @@ -84,15 +89,15 @@
.group.full
button.btn.button-primary.full(type="submit" ng-disabled="bankAccountForm.$invalid || locked") Add Account
.flex-row.flex-column-tablet(ng-show="state.accounts.length")
.width-40
.width-35
.width-80
.flex-row.flex-center.mb-10
h4.f-20.em-500.mvn(translate="Verify Your Bank Account")
button.helper(ng-click="openHelper('bank-deposit-helper')" type="button" tabindex="-1")
span ?
.mbl
span.f-16(translate="To verify your bank account details, SFOX will send two micro-deposits to your account. These deposits will be in the amount of a few cents. Once received, you can return to this screen to enter the amounts.<br/><br/>Please note: Receiving these deposits can take 1-3 business days.")
.width-60.flex-justify
span.f-16(translate="To verify your bank account details, SFOX will send two micro-deposits to your account. These deposits will be in the amount of a few cents. Once received, you can return to this screen to enter the amounts.<br/><br/>Please note: Receiving these deposits can take up to 4 business days.")
.width-65.flex-justify
form.bc-form.width-90.width-100-tablet.width-100-mobile(name="verifyBankAccountForm" ng-submit="verify()" novalidate autocomplete="off")
fieldset(ng-disabled="locked")
.row.mb-10
Expand Down
4 changes: 2 additions & 2 deletions app/partials/transactions/transactions-bitcoin-cash.pug
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.transactions(ng-if="status.isLoggedIn")
.filter-bar.flex-center.hidden-md.hidden-lg(data-preflight-tag="TxsOptions" ng-class="{open: isFilterOpen}")
.hidden-md.hidden-lg.pointer.blue.right-align.width-100.flex-between.flex-center(ng-class="{mbl: isFilterOpen}")
a.blue.hidden-md.hidden-lg.pointer(ng-click="exportHistory()" ng-hide="true")
a.blue.hidden-md.hidden-lg.pointer(ng-click="exportHistory()")
i.f-24.icon-export
span(translate="HIDE" ng-show="isFilterOpen" ng-click="toggleFilter()")
span(translate="FILTER" ng-hide="isFilterOpen" ng-click="toggleFilter()")
Expand Down Expand Up @@ -52,7 +52,7 @@
ng-class="{'active': isFilterType($index)}"
translate="{{::f}}")
.flex-center
a.black.mhl.em-500.upper.hidden-xs.hidden-sm(ng-click="exportHistory()" ng-hide="true")
a.black.mhl.em-500.upper.hidden-xs.hidden-sm(ng-click="exportHistory()")
i.f-24.icon-export
.filter-search.input-group
input.form-control(
Expand Down
Loading

0 comments on commit b824b11

Please sign in to comment.