Skip to content

Commit

Permalink
Fabo/fix enrich validator (#225)
Browse files Browse the repository at this point in the history
* release (#223)

* fixed a bug where a single proposal would not load (#125)

* trigger ci

* fixed missing terra data source (#128)

* Fabo/fix missing terra db query (#130)

* fixed missing terra data source

* fixed missing query

* Fabo/fix failing staking query for terra (#132)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* Fabo/hide proposals on terra (#134)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* don't show proposals on terra

* Fabo/switch to yarn (#122)

* switch to yarn

* Update Readme

* Ana/111 regen testnet production (#118)

* regen is home

* fix websocket link

* eslint fix

* delete console logs

* fixed regen source (using cosmosV0)

* add feature flags for regen

* fix txs in regen

* fix transactions per address

* fix eslint errors

* disable sign in

* colw/Transaction Service (#120)

* Obtain transaction payload, mirror back to client

* Respond with request, or error if none present

* Load node friendly versions of cosmos-api for dev

* Send response as JSON

* Successfully retrieve a gas estimate

- Use node-fetch for cosmosAPIs
-

* Add two sub routes: /estimate and /broadcast

* Add account number and sequence to overview query

* Disable cors options

* Add support to broadcast messages

* Ignore fetch undefined

* Delete package-lock.json

* Fabo/simplify queries (#108)

* simplified db queries

Conflicts:
	lib/luniedb-source.js
	lib/queries.js

* switched to yarn

* clean up

* clean up

* Copy cosmos libraries into container (#143)

* Aleksei/terra url change (#144)

* terra url changed

* change soju-0010 to soju-0012

* fixed db queries (#147)

* Update networks.json (#149)

* Fabo/events (#123)

* first steps

* working notification endpoint

* remove push mentions

* linted

* fixes

* updated schema

* use enum for eventtype

* working subscription

* linted

* added push to express routes

* remove newer code

* linted

* Update lib/routes/push.js

Co-Authored-By: Col <[email protected]>

* disable session for regen (#155)

* Aleksei/terra url change (#146)

* terra url changed

* change soju-0010 to soju-0012

* cors added to caddyfiles

* cors added to caddyfiles

* fix missing path

* Fabo/fix vote count (#157)

* fixed vote count calculation

* linted

* Ana/handle with message proposal id error (#159)

* handle undefined proposal error

* fix lint errors

* Ana/add endtime to undelegation tx (#150)

* add liquiddate as field for tx

* fix eslint errors

* change name liquidDate to undelegationEndTime

* fix enddelegationtime for gaia

* improve reducer my way

* fix lint error

* move undelegationendtime to reducer

* fix lint errors

* no abbreviations

* implement undelegation endtime reducer in both

* reenable session for gaia 13006 (#165)

* Ana/fix terra undelegationendtime reducer (#162)

* change reducers to cosmosV2

* prevent result undefined error

* add own gettransaction and txreducer for terra

* fix terra undelegationendtime reducer

* fix lint errors

* avoid hardcoded indexes

* small fix to prevent total server error

* no redundancy: add reducers to transactionreducer

* fix lint

* trigger CI

* Don't return delegations with dust amounts (#171)

* Add filter to delegations

* Fix filter

* Simplify

* add undelegations to total stake (#174)

* Terra chain_id switched to soju-0013 (#176)

* terra chaind_id switched to soju-0013

* changed terra node

* fix issues with undelegatio end time (#175)

* Fabo/fix undelegationendtime (#177)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* Fabo/fix undelegationendtime for regen (#178)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* fix regen transaction reducers

* Display Deposit Period End Date correctly for proposals in deposit period (#181)

* Return proposal.voting_end_time in deposit period

* Return deposit_end_time instead

* update to new reducers and chain-id (#182)

* merge back (#186)

* release (#179)

* fixed a bug where a single proposal would not load (#125)

* trigger ci

* fixed missing terra data source (#128)

* Fabo/fix missing terra db query (#130)

* fixed missing terra data source

* fixed missing query

* Fabo/fix failing staking query for terra (#132)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* Fabo/hide proposals on terra (#134)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* don't show proposals on terra

* Fabo/switch to yarn (#122)

* switch to yarn

* Update Readme

* Ana/111 regen testnet production (#118)

* regen is home

* fix websocket link

* eslint fix

* delete console logs

* fixed regen source (using cosmosV0)

* add feature flags for regen

* fix txs in regen

* fix transactions per address

* fix eslint errors

* disable sign in

* colw/Transaction Service (#120)

* Obtain transaction payload, mirror back to client

* Respond with request, or error if none present

* Load node friendly versions of cosmos-api for dev

* Send response as JSON

* Successfully retrieve a gas estimate

- Use node-fetch for cosmosAPIs
-

* Add two sub routes: /estimate and /broadcast

* Add account number and sequence to overview query

* Disable cors options

* Add support to broadcast messages

* Ignore fetch undefined

* Delete package-lock.json

* Fabo/simplify queries (#108)

* simplified db queries

Conflicts:
	lib/luniedb-source.js
	lib/queries.js

* switched to yarn

* clean up

* clean up

* Copy cosmos libraries into container (#143)

* Aleksei/terra url change (#144)

* terra url changed

* change soju-0010 to soju-0012

* fixed db queries (#147)

* Update networks.json (#149)

* Fabo/events (#123)

* first steps

* working notification endpoint

* remove push mentions

* linted

* fixes

* updated schema

* use enum for eventtype

* working subscription

* linted

* added push to express routes

* remove newer code

* linted

* Update lib/routes/push.js

Co-Authored-By: Col <[email protected]>

* disable session for regen (#155)

* Aleksei/terra url change (#146)

* terra url changed

* change soju-0010 to soju-0012

* cors added to caddyfiles

* cors added to caddyfiles

* fix missing path

* Fabo/fix vote count (#157)

* fixed vote count calculation

* linted

* Ana/handle with message proposal id error (#159)

* handle undefined proposal error

* fix lint errors

* Ana/add endtime to undelegation tx (#150)

* add liquiddate as field for tx

* fix eslint errors

* change name liquidDate to undelegationEndTime

* fix enddelegationtime for gaia

* improve reducer my way

* fix lint error

* move undelegationendtime to reducer

* fix lint errors

* no abbreviations

* implement undelegation endtime reducer in both

* reenable session for gaia 13006 (#165)

* Ana/fix terra undelegationendtime reducer (#162)

* change reducers to cosmosV2

* prevent result undefined error

* add own gettransaction and txreducer for terra

* fix terra undelegationendtime reducer

* fix lint errors

* avoid hardcoded indexes

* small fix to prevent total server error

* no redundancy: add reducers to transactionreducer

* fix lint

* trigger CI

* Don't return delegations with dust amounts (#171)

* Add filter to delegations

* Fix filter

* Simplify

* add undelegations to total stake (#174)

* Terra chain_id switched to soju-0013 (#176)

* terra chaind_id switched to soju-0013

* changed terra node

* fix issues with undelegatio end time (#175)

* Fabo/fix undelegationendtime (#177)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* Fabo/fix undelegationendtime for regen (#178)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* fix regen transaction reducers

* Display Deposit Period End Date correctly for proposals in deposit period (#181)

* Return proposal.voting_end_time in deposit period

* Return deposit_end_time instead

* release (#183)

* fixed a bug where a single proposal would not load (#125)

* trigger ci

* fixed missing terra data source (#128)

* Fabo/fix missing terra db query (#130)

* fixed missing terra data source

* fixed missing query

* Fabo/fix failing staking query for terra (#132)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* Fabo/hide proposals on terra (#134)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* don't show proposals on terra

* Fabo/switch to yarn (#122)

* switch to yarn

* Update Readme

* Ana/111 regen testnet production (#118)

* regen is home

* fix websocket link

* eslint fix

* delete console logs

* fixed regen source (using cosmosV0)

* add feature flags for regen

* fix txs in regen

* fix transactions per address

* fix eslint errors

* disable sign in

* colw/Transaction Service (#120)

* Obtain transaction payload, mirror back to client

* Respond with request, or error if none present

* Load node friendly versions of cosmos-api for dev

* Send response as JSON

* Successfully retrieve a gas estimate

- Use node-fetch for cosmosAPIs
-

* Add two sub routes: /estimate and /broadcast

* Add account number and sequence to overview query

* Disable cors options

* Add support to broadcast messages

* Ignore fetch undefined

* Delete package-lock.json

* Fabo/simplify queries (#108)

* simplified db queries

Conflicts:
	lib/luniedb-source.js
	lib/queries.js

* switched to yarn

* clean up

* clean up

* Copy cosmos libraries into container (#143)

* Aleksei/terra url change (#144)

* terra url changed

* change soju-0010 to soju-0012

* fixed db queries (#147)

* Update networks.json (#149)

* Fabo/events (#123)

* first steps

* working notification endpoint

* remove push mentions

* linted

* fixes

* updated schema

* use enum for eventtype

* working subscription

* linted

* added push to express routes

* remove newer code

* linted

* Update lib/routes/push.js

Co-Authored-By: Col <[email protected]>

* disable session for regen (#155)

* Aleksei/terra url change (#146)

* terra url changed

* change soju-0010 to soju-0012

* cors added to caddyfiles

* cors added to caddyfiles

* fix missing path

* Fabo/fix vote count (#157)

* fixed vote count calculation

* linted

* Ana/handle with message proposal id error (#159)

* handle undefined proposal error

* fix lint errors

* Ana/add endtime to undelegation tx (#150)

* add liquiddate as field for tx

* fix eslint errors

* change name liquidDate to undelegationEndTime

* fix enddelegationtime for gaia

* improve reducer my way

* fix lint error

* move undelegationendtime to reducer

* fix lint errors

* no abbreviations

* implement undelegation endtime reducer in both

* reenable session for gaia 13006 (#165)

* Ana/fix terra undelegationendtime reducer (#162)

* change reducers to cosmosV2

* prevent result undefined error

* add own gettransaction and txreducer for terra

* fix terra undelegationendtime reducer

* fix lint errors

* avoid hardcoded indexes

* small fix to prevent total server error

* no redundancy: add reducers to transactionreducer

* fix lint

* trigger CI

* Don't return delegations with dust amounts (#171)

* Add filter to delegations

* Fix filter

* Simplify

* add undelegations to total stake (#174)

* Terra chain_id switched to soju-0013 (#176)

* terra chaind_id switched to soju-0013

* changed terra node

* fix issues with undelegatio end time (#175)

* Fabo/fix undelegationendtime (#177)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* Fabo/fix undelegationendtime for regen (#178)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* fix regen transaction reducers

* Display Deposit Period End Date correctly for proposals in deposit period (#181)

* Return proposal.voting_end_time in deposit period

* Return deposit_end_time instead

* update to new reducers and chain-id (#182)

* Fabo/fix rewards (#185)

* fixed a bug where a single proposal would not load (#125)

* trigger ci

* fixed missing terra data source (#128)

* Fabo/fix missing terra db query (#130)

* fixed missing terra data source

* fixed missing query

* Fabo/fix failing staking query for terra (#132)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* Fabo/hide proposals on terra (#134)

* fixed missing terra data source

* fixed missing query

* fix bech32 prefix in selfStake resolver

* linted

* don't show proposals on terra

* Fabo/switch to yarn (#122)

* switch to yarn

* Update Readme

* Ana/111 regen testnet production (#118)

* regen is home

* fix websocket link

* eslint fix

* delete console logs

* fixed regen source (using cosmosV0)

* add feature flags for regen

* fix txs in regen

* fix transactions per address

* fix eslint errors

* disable sign in

* colw/Transaction Service (#120)

* Obtain transaction payload, mirror back to client

* Respond with request, or error if none present

* Load node friendly versions of cosmos-api for dev

* Send response as JSON

* Successfully retrieve a gas estimate

- Use node-fetch for cosmosAPIs
-

* Add two sub routes: /estimate and /broadcast

* Add account number and sequence to overview query

* Disable cors options

* Add support to broadcast messages

* Ignore fetch undefined

* Delete package-lock.json

* Fabo/simplify queries (#108)

* simplified db queries

Conflicts:
	lib/luniedb-source.js
	lib/queries.js

* switched to yarn

* clean up

* clean up

* Copy cosmos libraries into container (#143)

* Aleksei/terra url change (#144)

* terra url changed

* change soju-0010 to soju-0012

* fixed db queries (#147)

* Update networks.json (#149)

* Fabo/events (#123)

* first steps

* working notification endpoint

* remove push mentions

* linted

* fixes

* updated schema

* use enum for eventtype

* working subscription

* linted

* added push to express routes

* remove newer code

* linted

* Update lib/routes/push.js

Co-Authored-By: Col <[email protected]>

* disable session for regen (#155)

* Aleksei/terra url change (#146)

* terra url changed

* change soju-0010 to soju-0012

* cors added to caddyfiles

* cors added to caddyfiles

* fix missing path

* Fabo/fix vote count (#157)

* fixed vote count calculation

* linted

* Ana/handle with message proposal id error (#159)

* handle undefined proposal error

* fix lint errors

* Ana/add endtime to undelegation tx (#150)

* add liquiddate as field for tx

* fix eslint errors

* change name liquidDate to undelegationEndTime

* fix enddelegationtime for gaia

* improve reducer my way

* fix lint error

* move undelegationendtime to reducer

* fix lint errors

* no abbreviations

* implement undelegation endtime reducer in both

* reenable session for gaia 13006 (#165)

* Ana/fix terra undelegationendtime reducer (#162)

* change reducers to cosmosV2

* prevent result undefined error

* add own gettransaction and txreducer for terra

* fix terra undelegationendtime reducer

* fix lint errors

* avoid hardcoded indexes

* small fix to prevent total server error

* no redundancy: add reducers to transactionreducer

* fix lint

* trigger CI

* Don't return delegations with dust amounts (#171)

* Add filter to delegations

* Fix filter

* Simplify

* add undelegations to total stake (#174)

* Terra chain_id switched to soju-0013 (#176)

* terra chaind_id switched to soju-0013

* changed terra node

* fix issues with undelegatio end time (#175)

* Fabo/fix undelegationendtime (#177)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* Fabo/fix undelegationendtime for regen (#178)

* fix issues with undelegatio end time

* catch undelegation attribute not found

* fix regen transaction reducers

* Display Deposit Period End Date correctly for proposals in deposit period (#181)

* Return proposal.voting_end_time in deposit period

* Return deposit_end_time instead

* update to new reducers and chain-id (#182)

* fix rewards not being extracted correctly

* linted

* trigger deploy

* Ana/105 livepeer into production (#114)

* add livepeer first files

* first tentative. add transcoder type and queries

* progress

* progress + trying

* eslint fix

* working

* recover missing config enabletestnet

* delete livepeer from resolver and schema

* try getallvalidators in livepeerv0-source

* todos: own subscription and own reducers

* eslint fix

* refactored into graphql data source

* add livepeer to networks json

* little hack (temporary)

* fix silly eslint error

* start playing

* fetch works. add to apollo

* fix lint

* get last round id/height

* fix lint

* set all feature flags to false

* forward. add livepeer reducer. 400 bad request

* fix lint

* kind of working

* fix networkId

* colin/ make node subscription great

* use transcoders no orchestrators. getValidator

* connecting to block height and validators display

* minor lint

* add validator name

* provisory getselfstake

* improve validator reducer

* use bignumber lib. add getdelegatorsstake

* fix lint

* fix gettotal stake delegators

* fix lint

* clean up

* get self stake

* delete livepeer-queries

* handle url with node url class

* delete extra back ticks

* invisible lint fix

* better prevent than regret

* delete getlastrounid function

* fix total stake and self stake

* remove console log

* use getblockheight to find last block

* get validators from db

* get more names

* get ALL validators

* use validator query string

* use bignumber instead of parseint

* minor lint

* fix validators names

* improve condition

* get all validators for real

* fix search filter for operator address

* fix search filter

* finishing fixes (formatbech32 and bignumber)

* try implementing votingpower. no api support

* refactoring and renaming

* enable votingpower

* livepeer is mainnet

* fix voting power filter (#188)

* disable livepeer for now (#191)

* double the gas estimate for txs (#193)

* wait for txs to be included in a block (#194)

* Move expected returns to separate resolver (#172)

* Move expected returns to separate resolver

* Scale result by 1/1000000

* increase gas again (#200)

* Fabo/track failing txs (#201)

* track failing txs

* remove dead code

* linted

* trigger CI

* Fabo/track failing txs (#202)

* track failing txs

* remove dead code

* linted

* track failures in broadcasting

* better error

* Fabo/sync again (#204)

* switch back to sync mode

* use transactions in block for events

* linted

* switch to own node (#205)

* fix getexpected returns for terra (#208)

* Aleksei/redis added (#214)

* redis added

* redis added

* WIP: Fabo/use redis pubsub (#209)

* use redis pubsub

* refactor

* Fix redis import

* validator picture fixed (#217)

* Revert "validator picture fixed (#217)" (#218)

This reverts commit f9250db.

* Revert "Revert "validator picture fixed (#217)" (#218)" (#219)

This reverts commit c785b0f.

* Fabo/refactor enrich validator (#220)

* refactor enriche validator

* use validator info for name

* Fabo+Jordan/livepeer improvements (#210)

* add livepeer first files

* first tentative. add transcoder type and queries

* progress

* progress + trying

* eslint fix

* working

* recover missing config enabletestnet

* delete livepeer from resolver and schema

* try getallvalidators in livepeerv0-source

* todos: own subscription and own reducers

* eslint fix

* refactored into graphql data source

* add livepeer to networks json

* little hack (temporary)

* fix silly eslint error

* start playing

* fetch works. add to apollo

* fix lint

* get last round id/height

* fix lint

* set all feature flags to false

* forward. add livepeer reducer. 400 bad request

* fix lint

* kind of working

* fix networkId

* colin/ make node subscription great

* use transcoders no orchestrators. getValidator

* connecting to block height and validators display

* minor lint

* add validator name

* provisory getselfstake

* improve validator reducer

* use bignumber lib. add getdelegatorsstake

* fix lint

* fix gettotal stake delegators

* fix lint

* clean up

* get self stake

* delete livepeer-queries

* handle url with node url class

* delete extra back ticks

* invisible lint fix

* better prevent than regret

* delete getlastrounid function

* fix total stake and self stake

* remove console log

* use getblockheight to find last block

* get validators from db

* get more names

* get ALL validators

* use validator query string

* use bignumber instead of parseint

* minor lint

* fix validators names

* improve condition

* get all validators for real

* fix search filter for operator address

* fix search filter

* finishing fixes (formatbech32 and bignumber)

* try implementing votingpower. no api support

* refactoring and renaming

* enable votingpower

* livepeer is mainnet

* fixed values to be correct

* comments

* cleanup

* refactored

* removed file

* fix getexpectedreturns

* fix validator name logic

* add todos

* lint

* Fabo/refactor enrich validator (#222)

* refactor enriche validator

* use validator info for name

* use same logic for single and multiple validator queries

* filter improper picutre values

* return picture from db

* fix asynchrony for enrichvalidator

* Fabo/async check for tx failure (#221)

* refactor

* Update lib/controller/transaction/index.js

Co-Authored-By: Jordan Bibla <[email protected]>

* fix subscription for failing txs

* fix polling

* bunch of fixes

* comments

* linted

* avoid double body read error

* linted

* fix wrong usage of validator enriching

* comment
  • Loading branch information
faboweb authored Dec 18, 2019
1 parent c985123 commit 915bc08
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions lib/resolvers.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,17 @@ function selectFrom(dataSources, networkId) {
}
}

async function enrichValidator(validatorInfo, validator) {
// TODO updating the validators with the profiles should happen already in the store so we don't query the db all the time
async function getValidatorInfosMap(dataSources, networkId) {
const validatorInfo = await dataSources.LunieDBAPI.getValidatorsInfo(
networkId
)
const validatorInfoMap = keyBy(validatorInfo, 'operator_address')

return validatorInfoMap
}

function enrichValidator(validatorInfo, validator) {
const picture = validatorInfo ? validatorInfo.picture : undefined
const name =
validatorInfo && validatorInfo.name
Expand All @@ -48,21 +58,10 @@ async function validators(
if (activeOnly) {
validators = validators.filter(({ status }) => status === 'ACTIVE')
}

// TODO these updates should happen already in the store
const validatorInfo = await dataSources.LunieDBAPI.getValidatorsInfo(
networkId
const validatorInfoMap = await getValidatorInfosMap(dataSources, networkId)
validators = validators.map(validator =>
enrichValidator(validatorInfoMap[validator.operatorAddress], validator)
)
const validatorInfoMap = keyBy(validatorInfo, 'operator_address')

const applyEnrichValidators = async validators => {
return Promise.all(
validators.map(validator =>
enrichValidator(validatorInfoMap[validator.operatorAddress], validator)
)
)
}
validators = await applyEnrichValidators(validators)

if (searchTerm) {
validators = validators.filter(({ name, operatorAddress }) => {
Expand Down Expand Up @@ -106,13 +105,13 @@ async function delegations(
dataSources,
networkId
).getDelegationsForDelegatorAddress(delegatorAddress, validatorsDictionary)
const validatorInfoMap = await getValidatorInfosMap(dataSources, networkId)

return Promise.all(
delegations.map(async delegation => ({
...delegation,
validator: await enrichValidator(
dataSources,
networkId,
validator: enrichValidator(
validatorInfoMap[delegation.validator.operatorAddress],
delegation.validator
)
}))
Expand All @@ -129,13 +128,13 @@ async function undelegations(
dataSources,
networkId
).getUndelegationsForDelegatorAddress(delegatorAddress, validatorsDictionary)
const validatorInfoMap = await getValidatorInfosMap(dataSources, networkId)

return Promise.all(
undelegations.map(async undelegation => ({
...undelegation,
validator: await enrichValidator(
dataSources,
networkId,
validator: enrichValidator(
validatorInfoMap[undelegation.validator.operatorAddress],
undelegation.validator
)
}))
Expand Down

0 comments on commit 915bc08

Please sign in to comment.