cosmos-explorer/src/libs/data/proposal.js
2022-12-07 20:36:52 +08:00

92 lines
2.7 KiB
JavaScript

import compareVersions from 'compare-versions'
import ProposalTally from './proposal-tally'
export default class Proposal {
constructor() {
this.element = null
this.id = 0
this.status = 1
this.type = '-'
this.title = '-'
this.description = '-'
this.tally = new ProposalTally()
this.submit_time = '0000-00-00'
this.voting_end_time = '0000-00-00'
this.voting_start_time = '0000-00-00'
this.total_deposit = '-'
this.contents = null
this.metadata = {}
}
init(element, total) {
this.element = element
this.id = element.proposal_id || element.id
this.status = element.status
this.tally = new ProposalTally().init(element.final_tally_result, total)
this.submit_time = element.submit_time
this.voting_end_time = element.voting_end_time
this.voting_start_time = element.voting_start_time
// eslint-disable-next-line prefer-destructuring
this.total_deposit = element.total_deposit[0]
if (element.content) this.contents = element.content.value || element.content
if (this.contents) {
this.title = this.contents.title
this.description = this.contents.description
this.type = element.content.type
if (element.content['@type']) {
this.type = element.content['@type']
}
}
this.metadata = element.metadata
return this
}
hello() {
return this.title
}
updateTally(newTally) {
this.tally = newTally
}
versionFixed(ver) {
if (compareVersions(ver, '0.46') >= 0) {
if (this.element.messages) [this.contents] = this.element.messages
if (this.contents) this.type = this.contents['@type']
if (this.contents['@type'] === '/cosmos.gov.v1.MsgExecLegacyContent') {
this.title = this.contents.content.title
this.description = this.contents.content.description
}
if (this.element.metadata) {
this.title = this.element.metadata.title || this.element.metadata
this.description = this.element.metadata.description || this.element.metadata
}
} else if (compareVersions(ver, '0.30') >= 0) {
switch (this.element.proposal_status) {
case 'Passed':
this.status = 3
break
case 'VotingPeriod':
this.status = 2
break
case 'Rejected':
this.status = 4
break
default:
// this.status = 1
}
}
if (String(this.status).indexOf('PASSED') > -1) {
this.status = 3
} else if (String(this.status).indexOf('VOTING') > -1) {
this.status = 2
} else if (String(this.status).indexOf('REJECTED') > -1) {
this.status = 4
} else if (String(this.status).indexOf('DEPOSIT') > -1) {
this.status = 1
}
}
}