Skip to content

Commit

Permalink
Fixes usage of ledger advance settings in the ledger table
Browse files Browse the repository at this point in the history
Resolves brave#7987

Auditors: @mrose17 @diracdeltas

Test Plan:
- enable payments
- visit site for at least 8 seconds or until it appears in the synopsis table
- set minimum visits to 5 instead of 1
- site shouldn't be in the ledger table
  • Loading branch information
NejcZdovc committed Apr 4, 2017
1 parent 8182478 commit 77c499c
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 14 deletions.
27 changes: 17 additions & 10 deletions app/ledger.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ const doAction = (action) => {
case settings.MINIMUM_VISIT_TIME:
if (action.value <= 0) break

synopsis.options.minDuration = action.value
synopsis.options.minPublisherDuration = action.value
updatePublisherInfo()
break

Expand Down Expand Up @@ -741,8 +741,9 @@ var enable = (paymentsEnabled) => {
value = 8 * 1000
appActions.changeSetting(settings.MINIMUM_VISIT_TIME, value)
}

// for earlier versions of the code...
if ((value > 0) && (value < 1000)) synopsis.options.minDuration = value * 1000
if ((value > 0) && (value < 1000)) synopsis.options.minPublisherDuration = value * 1000

value = getSetting(settings.MINIMUM_VISITS)
if (!value) {
Expand All @@ -752,13 +753,10 @@ var enable = (paymentsEnabled) => {
if (value > 0) synopsis.options.minPublisherVisits = value

if (process.env.NODE_ENV === 'test') {
synopsis.options.minDuration = 0
synopsis.options.minDuration = 0 // TODO remove when we update publisher
synopsis.options.minPublisherDuration = 0
synopsis.options.minPublisherVisits = 0
} else {
if (process.env.LEDGER_PUBLISHER_VISIT_DURATION) {
synopsis.options.minDuration = ledgerClient.prototype.numbion(process.env.LEDGER_PUBLISHER_VISIT_DURATION)
}
if (process.env.LEDGER_PUBLISHER_MIN_DURATION) {
synopsis.options.minPublisherDuration = ledgerClient.prototype.numbion(process.env.LEDGER_PUBLISHER_MIN_DURATION)
}
Expand Down Expand Up @@ -1028,15 +1026,24 @@ var stickyP = (publisher) => {
}

var eligibleP = (publisher) => {
if (!synopsis.options.minPublisherDuration && process.env.NODE_ENV !== 'test') {
synopsis.options.minPublisherDuration = getSetting(settings.MINIMUM_VISIT_TIME)
}

return ((synopsis.publishers[publisher].scores[synopsis.options.scorekeeper] > 0) &&
(synopsis.publishers[publisher].duration >= synopsis.options.minPublisherDuration) &&
(synopsis.publishers[publisher].visits >= synopsis.options.minPublisherVisits))
}

var visibleP = (publisher) => {
return (((stickyP(publisher)) ||
((synopsis.publishers[publisher].options.exclude !== true) && (eligibleP(publisher)))) &&
(!blockedP(publisher)))
return (
eligibleP(publisher) &&
(
synopsis.publishers[publisher].options.exclude !== true ||
stickyP(publisher)
)
) &&
!blockedP(publisher)
}

var contributeP = (publisher) => {
Expand Down Expand Up @@ -1466,7 +1473,7 @@ var ledgerInfo = {
passphrase: undefined,

// advanced ledger settings
minDuration: undefined,
minPublisherDuration: undefined,
minPublisherVisits: undefined,

hasBitcoinHandler: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const {StyleSheet, css} = require('aphrodite')

// util
const {changeSetting} = require('../../../lib/settingsUtil')
const appConfig = require('../../../../../js/constants/appConfig')

// components
const Button = require('../../../../../js/components/button')
Expand All @@ -24,7 +25,7 @@ const settings = require('../../../../../js/constants/settings')

class AdvancedSettingsContent extends ImmutableComponent {
render () {
const minDuration = this.props.ledgerData.getIn(['synopsisOptions', 'minDuration'])
const minPublisherDuration = this.props.ledgerData.getIn(['synopsisOptions', 'minPublisherDuration'])
const minPublisherVisits = this.props.ledgerData.getIn(['synopsisOptions', 'minPublisherVisits'])

return <div className={css(paymentCommon.board)}>
Expand All @@ -35,7 +36,7 @@ class AdvancedSettingsContent extends ImmutableComponent {
<SettingItem>
<SettingDropdown
data-test-id='durationSelector'
defaultValue={minDuration || 8000}
defaultValue={minPublisherDuration || appConfig.defaultSettings[settings.MINIMUM_VISIT_TIME]}
onChange={changeSetting.bind(null, this.props.onChangeSetting, settings.MINIMUM_VISIT_TIME)}>
<option data-l10n-id='minimumPageTimeLow' value='5000' />
<option data-l10n-id='minimumPageTimeMedium' value='8000' />
Expand Down
2 changes: 1 addition & 1 deletion docs/state.md
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@ WindowStore
weight: number // float indication of the ration
}], // one entry for each publisher having a non-zero `score`
synopsisOptions: {
minDuration: number, // e.g., 8000 for 8 seconds
minPublisherDuration: number, // e.g., 8000 for 8 seconds
minPublisherVisits: number // e.g., 0
}
},
Expand Down
2 changes: 1 addition & 1 deletion js/constants/appConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ module.exports = {
'advanced.send-crash-reports': true,
'advanced.send-usage-statistics': false,
'advanced.hide-excluded-sites': false,
'advanced.minimum-visit-time': 8,
'advanced.minimum-visit-time': 8000,
'advanced.minimum-visits': 1,
'advanced.auto-suggest-sites': true,
'advanced.hide-lower-sites': true,
Expand Down

0 comments on commit 77c499c

Please sign in to comment.