Skip to content

Commit

Permalink
Revert "WIP: Ana/More Terra fixes (#323)" (#325)
Browse files Browse the repository at this point in the history
This reverts commit 408186a.
  • Loading branch information
jbibla authored Feb 15, 2020
1 parent 408186a commit a92cfb9
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 42 deletions.
11 changes: 6 additions & 5 deletions lib/reducers/cosmosV0-reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ function undelegationReducer(undelegation, validator) {
function rewardReducer(reward, validator) {
return {
amount: atoms(reward.amount),
denom: reward.denom,
validator
}
}
Expand Down Expand Up @@ -391,12 +392,12 @@ function formatTransactionsReducer(txs, reducers) {
const sortedTxs = sortBy(duplicateFreeTxs, ['timestamp'])
const reversedTxs = reverse(sortedTxs)
// here we filter out all transactions related to validators
const filteredTxs = reversedTxs.filter(transaction =>
cosmosWhitelistedMessageTypes.has(
transaction.tx.value.msg[0].type.split('/')[1]
reversedTxs.forEach(tx => {
tx.tx.value.msg = tx.tx.value.msg.filter(msg =>
cosmosWhitelistedMessageTypes.has(msg.type.split('/')[1])
)
)
return filteredTxs.map(tx => transactionReducer(tx, reducers))
})
return reversedTxs.map(tx => transactionReducer(tx, reducers))
}

// to be able to catch all validators from a multi-claim reward tx, we need to capture
Expand Down
26 changes: 24 additions & 2 deletions lib/reducers/emoneyV0-reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const _ = require('lodash')
const EMoneyAPIUrl = `https://api.e-money.com/v1/`
const exchangeAPIURL = `https://api.exchangeratesapi.io/latest?`
const Sentry = require('@sentry/node')
const { atoms } = terraV3Reducers

async function totalBackedValueReducer(totalBackedValue) {
const exchangeRates = await fetchTokenExchangeRates()
Expand Down Expand Up @@ -119,9 +120,30 @@ async function expectedRewardsPerToken(
return expectedReturns / 100
}

function rewardReducer(rewards, validatorsDictionary) {
const formattedRewards = rewards.map(
reward =>
(reward = {
reward: reward.reward,
validator: validatorsDictionary[reward.validator_address]
})
)
let multiDenomRewardsArray = []
formattedRewards.map(({ reward, validator }) =>
reward.forEach(denomReward => {
multiDenomRewardsArray.push({
denom: denomReward.denom,
amount: atoms(denomReward.amount),
validator: validator
})
})
)
return multiDenomRewardsArray
}

module.exports = {
...terraV3Reducers,
expectedRewardsPerToken,
totalBackedValueReducer
// rewardReducer
totalBackedValueReducer,
rewardReducer
}
23 changes: 0 additions & 23 deletions lib/reducers/terraV3-reducers.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const cosmosV2Reducers = require('./cosmosV2-reducers')
const { atoms } = cosmosV2Reducers

// Terra has a slightly different structure and needs its own undelegationEndTimeReducer
function undelegationEndTimeReducer(transaction) {
Expand All @@ -24,29 +23,7 @@ function undelegationEndTimeReducer(transaction) {
}
}

function rewardReducer(rewards, validatorsDictionary) {
const formattedRewards = rewards.map(
reward =>
(reward = {
reward: reward.reward,
validator: validatorsDictionary[reward.validator_address]
})
)
let multiDenomRewardsArray = []
formattedRewards.map(({ reward, validator }) =>
reward.forEach(denomReward => {
multiDenomRewardsArray.push({
denom: denomReward.denom,
amount: atoms(denomReward.amount),
validator: validator
})
})
)
return multiDenomRewardsArray
}

module.exports = {
...cosmosV2Reducers,
rewardReducer,
undelegationEndTimeReducer
}
11 changes: 11 additions & 0 deletions lib/source/emoneyV0-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,17 @@ class EMoneyV0API extends TerraV3API {
return `?`
}
}

async getRewards(delegatorAddress, validatorsDictionary) {
this.checkAddress(delegatorAddress)
const result = await this.query(
`distribution/delegators/${delegatorAddress}/rewards`
)
const rewards = (result.rewards || []).filter(
({ reward }) => reward && reward.length > 0
)
return this.reducers.rewardReducer(rewards, validatorsDictionary)
}
}

module.exports = EMoneyV0API
12 changes: 0 additions & 12 deletions lib/source/terraV3-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,6 @@ class TerraV3API extends CosmosV2API {
)
return expectedReturns
}

// Terra will be the root source for functions specific to Tendermint multidenom networks
async getRewards(delegatorAddress, validatorsDictionary) {
this.checkAddress(delegatorAddress)
const result = await this.query(
`distribution/delegators/${delegatorAddress}/rewards`
)
const rewards = (result.rewards || []).filter(
({ reward }) => reward && reward.length > 0
)
return this.reducers.rewardReducer(rewards, validatorsDictionary)
}
}

module.exports = TerraV3API

0 comments on commit a92cfb9

Please sign in to comment.