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

Commit

Permalink
Reset old reconcileStamp when re-enabling Payments
Browse files Browse the repository at this point in the history
Fix #4058

Auditors: @mrose17

Test Plan:
1. Open Brave
2. Enable Payments then disable
2. Close Brave
3. Edit {userData}/ledger-state.json `reconcileStamp` to be way in the past (change 14.. to 13..)
4. Open Brave
5. Enable Payments
6. Note that contribution date is today + 30 days, rather than way in the past
  • Loading branch information
ayumi committed Sep 27, 2016
1 parent 41acbd0 commit 43c4d5d
Showing 1 changed file with 32 additions and 10 deletions.
42 changes: 32 additions & 10 deletions app/ledger.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,15 @@ const doAction = (action) => {
break

case appConstants.APP_CHANGE_SETTING:
if (action.key === settings.PAYMENTS_ENABLED) return initialize(action.value)
if (action.key === settings.PAYMENTS_CONTRIBUTION_AMOUNT) return setPaymentInfo(action.value)
switch (action.key) {
case settings.PAYMENTS_ENABLED:
return initialize(action.value, 'changeSettingPaymentsEnabled')
case settings.PAYMENTS_CONTRIBUTION_AMOUNT:
setPaymentInfo(action.value)
break
default:
break
}
break

case appConstants.APP_CHANGE_SITE_SETTING:
Expand Down Expand Up @@ -407,16 +414,16 @@ eventStore.addChangeListener(() => {
* module initialization
*/

var initialize = (onoff) => {
enable(onoff)
var initialize = (paymentsEnabled, reason) => {
enable(paymentsEnabled)

// Check if relevant browser notifications should be shown every 15 minutes
if (notificationTimeout) {
clearInterval(notificationTimeout)
}
notificationTimeout = setInterval(showNotifications, 15 * msecs.minute)

if (!onoff) {
if (!paymentsEnabled) {
client = null
return appActions.updateLedgerInfo({})
}
Expand All @@ -441,9 +448,24 @@ var initialize = (onoff) => {
}

getStateInfo(state)

try {
client = ledgerClient(state.personaId,
underscore.extend(state.options, { roundtrip: roundtrip }, clientOptions), state)
client = ledgerClient(
state.personaId,
underscore.extend(state.options, { roundtrip: roundtrip }, clientOptions),
state
)

// Scenario: User enables Payments, disables it, waits 30+ days, then
// enables it again -> reconcileStamp is in the past.
// In this case reset reconcileStamp to the future.
if (reason === 'changeSettingPaymentsEnabled') {
let timeUntilReconcile = client.timeUntilReconcile()
if (typeof timeUntilReconcile === 'number' && timeUntilReconcile < 0) {
let futureReconcileStamp = underscore.now() + 30 * msecs.day
client.setTimeUntilReconcile(futureReconcileStamp, callback)
}
}
} catch (ex) {
return console.log('ledger client creation error: ' + ex.toString() + '\n' + ex.stack)
}
Expand All @@ -462,12 +484,12 @@ var initialize = (onoff) => {
})
}

var enable = (onoff) => {
if (onoff && !getSetting(settings.PAYMENTS_NOTIFICATION_TRY_PAYMENTS_DISMISSED)) {
var enable = (paymentsEnabled) => {
if (paymentsEnabled && !getSetting(settings.PAYMENTS_NOTIFICATION_TRY_PAYMENTS_DISMISSED)) {
appActions.changeSetting(settings.PAYMENTS_NOTIFICATION_TRY_PAYMENTS_DISMISSED, true)
}

if (!onoff) {
if (!paymentsEnabled) {
synopsis = null
return updatePublisherInfo()
}
Expand Down

0 comments on commit 43c4d5d

Please sign in to comment.