diff --git a/app/ledger.js b/app/ledger.js index 8ac9dfc9cc5..270fbe343fb 100644 --- a/app/ledger.js +++ b/app/ledger.js @@ -53,6 +53,7 @@ const appStore = require('../js/stores/appStore') const eventStore = require('../js/stores/eventStore') const rulesolver = require('./extensions/brave/content/scripts/pageInformation.js') const ledgerUtil = require('./common/lib/ledgerUtil') +const base64Encode = require('../js/lib/base64').encode // TBD: remove these post beta [MTR] const logPath = 'ledger-log.json' @@ -286,6 +287,18 @@ if (ipc) { if (balanceTimeoutId) clearTimeout(balanceTimeoutId) balanceTimeoutId = setTimeout(getBalance, 5 * msecs.second) }) + + ipc.on(messages.OPEN_LEDGER_TRANSACTION_CSV, (event, viewingIds, csvFilename) => { + if (client) { + let txCsvText = client._getTransactionCSVText(viewingIds) + let txCsvTextDataURI = 'data:text/csv;base64,' + base64Encode(txCsvText) + + const win = electron.BrowserWindow.getFocusedWindow() + if (win && win.webContents) { + win.webContents.downloadURL(txCsvTextDataURI) + } + } + }) } /* diff --git a/js/about/aboutActions.js b/js/about/aboutActions.js index cde4175a0be..91647ebded9 100644 --- a/js/about/aboutActions.js +++ b/js/about/aboutActions.js @@ -176,6 +176,10 @@ const AboutActions = { ipc.send(messages.LEDGER_CREATE_WALLET) }, + receiptLinkClick: function (viewingId, receiptFileName) { + ipc.send(messages.OPEN_LEDGER_TRANSACTION_CSV, viewingId, receiptFileName) + }, + setLedgerEnabled: function (enabled) { ipc.send(messages.LEDGER_ENABLE, enabled) }, diff --git a/js/about/preferences.js b/js/about/preferences.js index 31b96301a5d..ccd3ca32073 100644 --- a/js/about/preferences.js +++ b/js/about/preferences.js @@ -471,6 +471,7 @@ class PaymentHistory extends ImmutableComponent { + @@ -520,13 +521,26 @@ class PaymentHistoryRow extends ImmutableComponent { return (fiatAmount && typeof fiatAmount === 'number' ? fiatAmount.toFixed(2) : '0.00') } + get viewingId () { + return this.transaction.get('viewingId') + } + + get receiptFileName () { + return `brave_ledger${this.numericDateStr}.csv` + } + + onReceiptLinkClick () { + aboutActions.receiptLinkClick(this.viewingId, this.receiptFileName) + } + render () { var date = this.formattedDate var totalAmountStr = `${this.totalAmount} ${this.currency}` return - {date} - {totalAmountStr} + {date} + {totalAmountStr} + {this.receiptFileName} } } diff --git a/js/constants/messages.js b/js/constants/messages.js index 20bc5b1607a..0a5e95692ee 100644 --- a/js/constants/messages.js +++ b/js/constants/messages.js @@ -152,6 +152,7 @@ const messages = { LEDGER_PUBLISHER: _, LEDGER_UPDATED: _, LEDGER_CREATE_WALLET: _, + OPEN_LEDGER_TRANSACTION_CSV: _, CHECK_BITCOIN_HANDLER: _, ADD_FUNDS_CLOSED: _ } diff --git a/less/about/preferences.less b/less/about/preferences.less index 0b0790b4274..895d95521f4 100644 --- a/less/about/preferences.less +++ b/less/about/preferences.less @@ -580,7 +580,6 @@ div.nextPaymentSubmission { .modal .dialog.paymentHistory { padding: 0px; - width: 450px; .dialog-header { background-color: #EEE; @@ -684,7 +683,7 @@ div.nextPaymentSubmission { font-weight: 500; border-bottom: 2px solid @lightGray; text-align: left; - width: 25%; + width: 18%; } td { text-align: left;