diff --git a/app/browser/api/ledger.js b/app/browser/api/ledger.js index 1192b545e79..784834a067e 100644 --- a/app/browser/api/ledger.js +++ b/app/browser/api/ledger.js @@ -15,7 +15,6 @@ const qr = require('qr-image') const underscore = require('underscore') const tldjs = require('tldjs') const urlFormat = require('url').format -const queryString = require('querystring') const levelUp = require('level') const random = require('random-lib') const uuid = require('uuid') @@ -91,7 +90,8 @@ const clientOptions = { rulesTestP: process.env.LEDGER_RULES_TESTING, verboseP: process.env.LEDGER_VERBOSE, server: process.env.LEDGER_SERVER_URL, - createWorker: electron.app.createWorker + createWorker: electron.app.createWorker, + version: 'v2' } const fileTypes = { bmp: new Buffer([0x42, 0x4d]), @@ -1319,7 +1319,7 @@ const enable = (state, paymentsEnabled) => { } if (!ledgerPublisher) { - ledgerPublisher = require('ledger-publisher') + ledgerPublisher = require('bat-publisher') } synopsis = new (ledgerPublisher.Synopsis)() const stateSynopsis = ledgerState.getSynopsis(state) @@ -1434,7 +1434,7 @@ const cacheRuleSet = (state, ruleset) => { } const clientprep = () => { - if (!ledgerClient) ledgerClient = require('ledger-client') + if (!ledgerClient) ledgerClient = require('bat-client') _internal.debugP = ledgerClient.prototype.boolion(process.env.LEDGER_PUBLISHER_DEBUG) _internal.verboseP = ledgerClient.prototype.boolion(process.env.LEDGER_PUBLISHER_VERBOSE) } @@ -1513,28 +1513,6 @@ const roundtrip = (params, options, callback) => { if (options.payload) console.log('<<< ' + JSON.stringify(params.payload, null, 2).split('\n').join('\n<<< ')) } -const updateLedgerInfo = (state) => { - const ledgerInfo = ledgerState.getInfoProps(state) - const now = new Date().getTime() - - if (ledgerInfo.get('buyURLExpires') > now) { - state = ledgerState.setInfoProp(state, 'buyMaximumUSD', 6) - } - if (typeof process.env.ADDFUNDS_URL !== 'undefined') { - state = ledgerState.setInfoProp(state, 'buyURLFrame', true) - const buyURL = process.env.ADDFUNDS_URL + '?' + - queryString.stringify({ - currency: ledgerInfo.get('currency'), - amount: getSetting(settings.PAYMENTS_CONTRIBUTION_AMOUNT), - address: ledgerInfo.get('address') - }) - state = ledgerState.setInfoProp(state, 'buyURL', buyURL) - state = ledgerState.setInfoProp(state, 'buyMaximumUSD', false) - } - - return state -} - const observeTransactions = (state, transactions) => { const current = ledgerState.getInfoProp(state, 'transactions') if (current && current.size === transactions.length) { @@ -1558,9 +1536,10 @@ const getStateInfo = (state, parsedData) => { return state } + if (!ledgerClient) ledgerClient = require('bat-client') const newInfo = { paymentId: parsedData.properties.wallet.paymentId, - passphrase: parsedData.properties.wallet.keychains.passphrase, + passphrase: ledgerClient.prototype.getWalletPassphrase(parsedData), created: !!parsedData.properties.wallet, creating: !parsedData.properties.wallet, reconcileFrequency: parsedData.properties.days, @@ -1576,7 +1555,7 @@ const getStateInfo = (state, parsedData) => { let transactions = [] if (!parsedData.transactions) { - return updateLedgerInfo(state) + return state } for (let i = parsedData.transactions.length - 1; i >= 0; i--) { @@ -1599,13 +1578,12 @@ const getStateInfo = (state, parsedData) => { } observeTransactions(state, transactions) - state = ledgerState.setInfoProp(state, 'transactions', Immutable.fromJS(transactions)) - return updateLedgerInfo(state) + return ledgerState.setInfoProp(state, 'transactions', Immutable.fromJS(transactions)) } const generatePaymentData = (state) => { const ledgerInfo = ledgerState.getInfoProps(state) - const paymentURL = `bitcoin:${ledgerInfo.get('address')}?amount=${ledgerInfo.get('btc')}&label=${encodeURI('Brave Software')}` + const paymentURL = `bitcoin:${ledgerInfo.get('address')}?amount=${ledgerInfo.get('bat')}&label=${encodeURI('Brave Software')}` if (ledgerInfo.get('paymentURL') !== paymentURL) { state = ledgerState.setInfoProp(state, 'paymentURL', paymentURL) try { @@ -1679,8 +1657,8 @@ const onWalletProperties = (state, body) => { if (amount && currency) { const bodyCurrency = body.getIn(['rates', 'currency']) if (bodyCurrency) { - const btc = (amount / bodyCurrency).toFixed(8) - state = ledgerState.setInfoProp(state, 'btc', btc) + const bat = (amount / bodyCurrency).toFixed(8) + state = ledgerState.setInfoProp(state, 'bat', bat) } } @@ -1744,7 +1722,7 @@ const getBalance = (state) => { return } - if (!ledgerBalance) ledgerBalance = require('ledger-balance') + if (!ledgerBalance) ledgerBalance = require('bat-balance') ledgerBalance.getBalance(address, underscore.extend({balancesP: true}, client.options), (err, provider, result) => { if (err) { @@ -1769,7 +1747,7 @@ const balanceReceived = (state, unconfirmed) => { if (clientOptions.verboseP) { console.log('\ngetBalance refreshes ledger info: ' + ledgerState.getInfoProp(state, 'unconfirmed')) } - return updateLedgerInfo(state) + return state } if (ledgerState.getInfoProp(state, 'unconfirmed') === '0.0000') { @@ -1896,7 +1874,7 @@ const initialize = (state, paymentsEnabled) => { return state } - if (!ledgerPublisher) ledgerPublisher = require('ledger-publisher') + if (!ledgerPublisher) ledgerPublisher = require('bat-publisher') let ruleset = [] ledgerPublisher.ruleset.forEach(rule => { if (rule.consequent) ruleset.push(rule) diff --git a/app/browser/reducers/ledgerReducer.js b/app/browser/reducers/ledgerReducer.js index 5191a0c1544..63dc63c6f15 100644 --- a/app/browser/reducers/ledgerReducer.js +++ b/app/browser/reducers/ledgerReducer.js @@ -188,6 +188,7 @@ const ledgerReducer = (state, action, immutableAction) => { } case appConstants.APP_NAVIGATOR_HANDLER_REGISTERED: { + // TODO will this be changed when switching to BAT const hasBitcoinHandler = (action.get('protocol') === 'bitcoin') state = ledgerState.setInfoProp(state, 'hasBitcoinHandler', hasBitcoinHandler) break diff --git a/app/common/lib/ledgerUtil.js b/app/common/lib/ledgerUtil.js index 7857321b487..a32716abf4e 100644 --- a/app/common/lib/ledgerUtil.js +++ b/app/common/lib/ledgerUtil.js @@ -62,17 +62,24 @@ const shouldTrackView = (view, responseList) => { return false } -const btcToCurrencyString = (btc, ledgerData) => { - const balance = Number(btc || 0) +const batToCurrencyString = (bat, ledgerData) => { + const balance = Number(bat || 0) const currency = (ledgerData && ledgerData.get('currency')) || 'USD' if (balance === 0) { return `0 ${currency}` } - if (ledgerData && ledgerData.get('btc') && typeof ledgerData.get('amount') === 'number') { - const btcValue = ledgerData.get('btc') / ledgerData.get('amount') - const fiatValue = (balance / btcValue).toFixed(2) + if (ledgerData == null) { + return `${balance} BAT` + } + + const ledgerBat = ledgerData.get('bat') + const amount = ledgerData.get('amount') + + if (ledgerBat && typeof amount === 'number') { + const batValue = ledgerBat / amount + const fiatValue = (balance / batValue).toFixed(2) let roundedValue = Math.floor(fiatValue) const diff = fiatValue - roundedValue @@ -87,7 +94,7 @@ const btcToCurrencyString = (btc, ledgerData) => { return `${roundedValue.toFixed(2)} ${currency}` } - return `${balance} BTC` + return `${balance} BAT` } const formattedTimeFromNow = (timestamp) => { @@ -110,11 +117,11 @@ const walletStatus = (ledgerData) => { const pendingFunds = Number(ledgerData.get('unconfirmed') || 0) if (pendingFunds + Number(ledgerData.get('balance') || 0) < - 0.9 * Number(ledgerData.get('btc') || 0)) { + 0.9 * Number(ledgerData.get('bat') || 0)) { status.id = 'insufficientFundsStatus' } else if (pendingFunds > 0) { status.id = 'pendingFundsStatus' - status.args = {funds: btcToCurrencyString(pendingFunds, ledgerData)} + status.args = {funds: batToCurrencyString(pendingFunds, ledgerData)} } else if (transactions && transactions.size > 0) { status.id = 'defaultWalletStatus' } else { @@ -206,7 +213,7 @@ const stickyP = (state, publisherKey) => { module.exports = { shouldTrackView, - btcToCurrencyString, + batToCurrencyString, formattedTimeFromNow, formattedDateFromTimestamp, walletStatus, diff --git a/app/extensions/brave/locales/en-US/preferences.properties b/app/extensions/brave/locales/en-US/preferences.properties index f6ebfd17794..7e37bebc25f 100644 --- a/app/extensions/brave/locales/en-US/preferences.properties +++ b/app/extensions/brave/locales/en-US/preferences.properties @@ -26,16 +26,7 @@ backupLedger=Backup your wallet balanceRecovered={{balance}} was recovered and transferred to your Brave wallet. beta=beta bitcoin=Bitcoin -bitcoinAdd=Use your existing Bitcoin wallet/account -bitcoinAddDescription=Use any BTC wallet that can transfer Bitcoin to your Brave wallet. bitcoinBalance=Please transfer:  -bitcoinBuy=Buy Bitcoin -bitcoinCopyAddress=Copy Bitcoin address to clipboard -bitcoinPaymentURL=Your Brave wallet address -bitcoinQR=Your Brave wallet QR code -bitcoinQRImg.title=Brave wallet QR code -bitcoinVisitAccount=Transfer BTC -bitcoinWalletNotAvailable=Wallet information not available. :( bitwarden=bitwarden® blockAttackSites=Block reported attack sites (not available yet) blockedCountBadge=Display block count badge on shields button @@ -60,8 +51,6 @@ cancel=Cancel checkDefaultOnStartup=Always check on startup clearAll=Clear all clearBrowsingDataNow=Clear Browsing Data Now… -coinbaseMessage=debit/credit funding powered by coinbase -coinbaseNotAvailable=Sorry! Adding funds with a credit/debit card is available only for contributions of $5/month at the moment. comingSoon=Coming soon! compactBraveryPanel=Use compact panel contentSettings=Content Settings @@ -95,7 +84,6 @@ defaultWalletStatus=Thanks for helping support your favorite websites! defaultZoomLevel=Default zoom level disableTitleMode=Always show the URL bar disconnect=Disconnect -displayQRCode=Display QR code dollarsPaid=Amount done=Done doNotManageMyPasswords=Don't manage my passwords @@ -132,9 +120,6 @@ flashTroubleshooting=Flash not working? Try the troubleshooting tips on our fr-FR=French (France) fullscreenContent=Full Screen Content fullscreenPermission=Fullscreen access -fundingDisabled1=Card funding is temporarily unavailable. -fundingDisabled2=We apologize for the inconvenience. -fundingDisabled3=Learn more... general=General generalSettings=General Settings geolocationPermission=Location access @@ -185,8 +170,6 @@ minimumVisitsHigh=10 visits minimumVisitsLow=1 visit minimumVisitsMedium=5 visits minimumVisitsSetting=Minimum visits for publisher relevancy -moneyAdd=Use your debit/credit card -moneyAddSubTitle=No Bitcoin needed! monthlyBudget=monthly budget ms-MY=Malay (Malaysia) multipleHomePages.title=Multiple home pages @@ -213,7 +196,6 @@ ok=Ok on=on onePassword=1Password® (requires application) openExternalPermission=Open external applications -outsideUSAPayment=Buy Bitcoin at our recommended source pageNofMText=Page {{n}} of {{m}} paintTabs=Show tabs in page theme color passwordManager=Password Manager @@ -302,7 +284,6 @@ site=Site sitePermissions=Saved Site Permissions sitePermissionsExceptions=Saved Site Exceptions sl=Slovenian -smartphoneTitle=Use your smartphone app to transfer Bitcoin startsWith=Brave starts with startsWithOptionHomePage=Home page startsWithOptionLastTime=My windows / tabs from last time @@ -368,7 +349,6 @@ timeSpent=Time Spent toolbarUserInterfaceScale=Toolbar and UI elements scale totalAmount=Total Amount tr-TR=Turkish (Turkey) -transferTime=Transfer may take up to 40 minutes uk=Ukrainian update=Update updateToPreviewReleases=Update to preview releases * diff --git a/app/locale.js b/app/locale.js index 18c658f6c7e..ee4c1fb5e2a 100644 --- a/app/locale.js +++ b/app/locale.js @@ -213,7 +213,6 @@ var rendererIdentifiers = function () { 'turnOffNotifications', 'copyToClipboard', 'smartphoneTitle', - 'displayQRCode', 'updateLater', 'updateHello', // notifications diff --git a/app/renderer/components/preferences/payment/addFounds.js b/app/renderer/components/preferences/payment/addFounds.js new file mode 100644 index 00000000000..6ed099431bd --- /dev/null +++ b/app/renderer/components/preferences/payment/addFounds.js @@ -0,0 +1,18 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +const React = require('react') + +// Components +const ImmutableComponent = require('../../immutableComponent') + +class AddFounds extends ImmutableComponent { + render () { + return
+ Add founds +
+ } +} + +module.exports = AddFounds diff --git a/app/renderer/components/preferences/payment/addFoundsFooter.js b/app/renderer/components/preferences/payment/addFoundsFooter.js new file mode 100644 index 00000000000..0a1ae9dd625 --- /dev/null +++ b/app/renderer/components/preferences/payment/addFoundsFooter.js @@ -0,0 +1,18 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +const React = require('react') + +// Components +const ImmutableComponent = require('../../immutableComponent') + +class AddFoundsFooter extends ImmutableComponent { + render () { + return
+ Add founds footer +
+ } +} + +module.exports = AddFoundsFooter diff --git a/app/renderer/components/preferences/payment/bitcoinDashboard.js b/app/renderer/components/preferences/payment/bitcoinDashboard.js deleted file mode 100644 index 695f356c5cb..00000000000 --- a/app/renderer/components/preferences/payment/bitcoinDashboard.js +++ /dev/null @@ -1,686 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const React = require('react') -const {StyleSheet, css} = require('aphrodite/no-important') - -// components -const BrowserButton = require('../../common/browserButton') -const cx = require('../../../../../js/lib/classSet') -const ModalOverlay = require('../../common/modalOverlay') -const ImmutableComponent = require('../../immutableComponent') - -// styles -const globalStyles = require('../../styles/global') -const commonStyles = require('../../styles/commonStyles') - -const CoinBase = require('../../../../extensions/brave/img/coinbase_logo.png') -const Andorid = require('../../../../extensions/brave/img/android_download.svg') -const IOS = require('../../../../extensions/brave/img/ios_download.svg') - -// other -const coinbaseCountries = require('../../../../../js/constants/coinbaseCountries') -const config = require('../../../../../js/constants/config') -const getSetting = require('../../../../../js/settings').getSetting -const settings = require('../../../../../js/constants/settings') -const aboutActions = require('../../../../../js/about/aboutActions') - -class BitcoinDashboard extends ImmutableComponent { - constructor () { - super() - this.buyCompleted = false - this.openBuyURLTab = this.openBuyURLTab.bind(this) - } - - get currency () { - return this.props.ledgerData.get('currency') || 'USD' - } - - get amount () { - return getSetting(settings.PAYMENTS_CONTRIBUTION_AMOUNT, this.props.settings) || 0 - } - - get canUseCoinbase () { - if (!this.props.ledgerData.get('buyMaximumUSD')) return true - - return this.currency === 'USD' && this.amount < this.props.ledgerData.get('buyMaximumUSD') - } - - get userInAmerica () { - const countryCode = this.props.ledgerData.get('countryCode') - return !(countryCode && countryCode !== 'US') - } - - openBuyURLTab () { - // close parent dialog - this.props.hideParentOverlay() - } - - faCreditCard () { - return - } - faBitcoin () { - return - - - - } - faSmartphone () { - return - } - - bitcoinPurchaseButton (options) { - const disabled = options && options.disabled - const buttonAttrs = { - l10nId: 'add', - testId: 'bitcoinPurchaseButton', - primaryColor: true, - panelItem: true, - disabled: disabled - } - const hrefAttrs = { - href: this.props.ledgerData.get('buyURL'), - target: '_blank', - rel: 'noopener' - } - - if (disabled) { - buttonAttrs.disabled = 'disabled' - hrefAttrs.disabled = 'disabled' - } else { - hrefAttrs.onClick = this.openBuyURLTab - } - - if (!this.props.ledgerData.get('buyURLFrame')) { - if (!disabled) { - buttonAttrs.onClick = this.props.showOverlay.bind(this) - } - return - } - - return - - - } - - coinbaseAvailability () { - const disabled = true - if (this.canUseCoinbase) { - return
- {this.bitcoinPurchaseButton({disabled})} - { - disabled - ?
- } else { - return
-
-
- } - } - - coinbasePanel () { - return
-
-
-
- {this.faCreditCard()} -
-
-
-
-
-
-
- {this.coinbaseAvailability()} -
- } - exchangePanel () { - const url = this.props.ledgerData.getIn(['exchangeInfo', 'exchangeURL']) - const name = this.props.ledgerData.getIn(['exchangeInfo', 'exchangeName']) - // Call worldWidePanel if we don't have the URL or Name - if (!url || !name) { - return this.worldWidePanel() - } else { - return
-
- } - } - worldWidePanel () { - return
-
-
-
- {this.faCreditCard()} -
-
-
-
-
-
-
- - - -
-
- } - - bitcoinPanel () { - const ledgerData = this.props.ledgerData - - return
-
-
-
- {this.faBitcoin()} -
-
-
-
-
-
-
- { - ledgerData.get('address') - ?
- { - ledgerData.get('hasBitcoinHandler') && ledgerData.get('paymentURL') - ?
- - - -
- : null - } -
-
{ledgerData.get('address')}
- -
- :
-
-
- } -
- } - - smartphonePanel () { - return
-
-
-
- {this.faSmartphone()} -
-
-
-
-
-
-
- -
-
- } - - qrcodeOverlayContent () { - return
- -
-
- } - qrcodeOverlayFooter () { - if (coinbaseCountries.indexOf(this.props.ledgerData.get('countryCode')) > -1) { - return
-
- } - return null - } - - bitcoinOverlayContent () { - return