From ca3920da85b57cc78af7d20590247a4c774706a1 Mon Sep 17 00:00:00 2001 From: Rebegea Dragos-Alexandru Date: Wed, 23 Aug 2023 16:51:43 +0300 Subject: [PATCH 1/4] MEX-359: Add V2Proposal on new governance implementation --- src/config/devnet.json | 3 ++ src/modules/governance/governance.module.ts | 3 +- .../models/governance.contract.model.ts | 14 +++++- .../models/governance.proposal.model.ts | 24 ++++++++++ .../governance/models/governance.union.ts | 9 +++- .../resolvers/governance.proposal.resolver.ts | 33 ++++++++++++- .../governance/services/governance.service.ts | 47 ++++++++++++++++++- src/utils/governance.ts | 3 ++ 8 files changed, 130 insertions(+), 6 deletions(-) diff --git a/src/config/devnet.json b/src/config/devnet.json index bf7f9de26..e65e46249 100644 --- a/src/config/devnet.json +++ b/src/config/devnet.json @@ -50,6 +50,9 @@ "lockedTokenWrapper": "erd1qqqqqqqqqqqqqpgq9ej9vcnr38l69rgkc735kgv0qlu2ptrsd8ssu9rwtu", "escrow": "erd1qqqqqqqqqqqqqpgqz0wkk0j6y4h0mcxfxsg023j4x5sfgrmz0n4s4swp7a", "governance": { + "oldEnergy": [ + "erd1qqqqqqqqqqqqqpgqdt9aady5jp7av97m7rqxh6e5ywyqsplz2jps5mw02n" + ], "energy": [], "tokenSnapshot": [ "erd1qqqqqqqqqqqqqpgq2rkrhef99hhk3ynfcxevcj86axr3sgmcczfstkmdwr" diff --git a/src/modules/governance/governance.module.ts b/src/modules/governance/governance.module.ts index e167612d5..ad9bca314 100644 --- a/src/modules/governance/governance.module.ts +++ b/src/modules/governance/governance.module.ts @@ -18,7 +18,7 @@ import { } from './resolvers/governance.contract.resolver'; import { GovernanceSetterService } from './services/governance.setter.service'; import { GovernanceQueryResolver } from './resolvers/governance.query.resolver'; -import { GovernanceProposalResolver } from './resolvers/governance.proposal.resolver'; +import { GovernanceMexV2ProposalResolver, GovernanceProposalResolver } from './resolvers/governance.proposal.resolver'; import { ElasticService } from 'src/helpers/elastic.service'; @Module({ @@ -45,6 +45,7 @@ import { ElasticService } from 'src/helpers/elastic.service'; GovernanceEnergyContractResolver, GovernanceTokenSnapshotContractResolver, GovernanceProposalResolver, + GovernanceMexV2ProposalResolver, ElasticService, ], exports: [ diff --git a/src/modules/governance/models/governance.contract.model.ts b/src/modules/governance/models/governance.contract.model.ts index f7a80f52a..6a2cd52d3 100644 --- a/src/modules/governance/models/governance.contract.model.ts +++ b/src/modules/governance/models/governance.contract.model.ts @@ -1,5 +1,5 @@ import { Field, Int, ObjectType } from '@nestjs/graphql'; -import { GovernanceProposalModel } from './governance.proposal.model'; +import { GovernanceMexV2ProposalModel, GovernanceProposalModel } from './governance.proposal.model'; import { EsdtToken } from '../../tokens/models/esdtToken.model'; @ObjectType() @@ -44,3 +44,15 @@ export class GovernanceEnergyContract extends GovernanceTokenSnapshotContract { Object.assign(this, init); } } + +@ObjectType() +export class GovernanceOldEnergyContract { + @Field() + address: string; + @Field(() => [GovernanceMexV2ProposalModel]) + proposals: GovernanceMexV2ProposalModel[]; + + constructor(init: Partial) { + Object.assign(this, init); + } +} diff --git a/src/modules/governance/models/governance.proposal.model.ts b/src/modules/governance/models/governance.proposal.model.ts index 88925e32b..4edee7b14 100644 --- a/src/modules/governance/models/governance.proposal.model.ts +++ b/src/modules/governance/models/governance.proposal.model.ts @@ -107,3 +107,27 @@ export class GovernanceProposalModel { Object.assign(this, init); } } + +@ObjectType() +export class GovernanceMexV2ProposalModel { + @Field() + contractAddress: string; + @Field() + proposalId: number; + @Field( () => GovernanceDescriptionUnion) + description: typeof GovernanceDescriptionUnion; + @Field( () => ProposalVotes ) + votes: ProposalVotes; + @Field() + status: GovernanceProposalStatus; + @Field() + hasVoted?: boolean; + @Field() + userVoteType?: VoteType; + @Field() + turnoutPercentage: string; + + constructor(init: Partial) { + Object.assign(this, init); + } +} diff --git a/src/modules/governance/models/governance.union.ts b/src/modules/governance/models/governance.union.ts index b2dc775e9..7d6a6a94b 100644 --- a/src/modules/governance/models/governance.union.ts +++ b/src/modules/governance/models/governance.union.ts @@ -1,5 +1,9 @@ import { createUnionType } from '@nestjs/graphql'; -import { GovernanceEnergyContract, GovernanceTokenSnapshotContract } from './governance.contract.model'; +import { + GovernanceEnergyContract, + GovernanceOldEnergyContract, + GovernanceTokenSnapshotContract, +} from './governance.contract.model'; import { DescriptionV0, DescriptionV1 } from './governance.proposal.model'; export const GovernanceUnion = createUnionType({ @@ -8,6 +12,7 @@ export const GovernanceUnion = createUnionType({ [ GovernanceTokenSnapshotContract, GovernanceEnergyContract, + GovernanceOldEnergyContract, ] as const, resolveType(governance) { switch (governance.constructor.name) { @@ -15,6 +20,8 @@ export const GovernanceUnion = createUnionType({ return GovernanceTokenSnapshotContract; case GovernanceEnergyContract.name: return GovernanceEnergyContract; + case GovernanceOldEnergyContract.name: + return GovernanceOldEnergyContract; } }, }); diff --git a/src/modules/governance/resolvers/governance.proposal.resolver.ts b/src/modules/governance/resolvers/governance.proposal.resolver.ts index 343f7b6d7..8e70a1f5a 100644 --- a/src/modules/governance/resolvers/governance.proposal.resolver.ts +++ b/src/modules/governance/resolvers/governance.proposal.resolver.ts @@ -1,5 +1,10 @@ import { Parent, ResolveField, Resolver } from '@nestjs/graphql'; -import { GovernanceProposalModel, GovernanceProposalStatus, VoteType } from '../models/governance.proposal.model'; +import { + GovernanceMexV2ProposalModel, + GovernanceProposalModel, + GovernanceProposalStatus, + VoteType, +} from '../models/governance.proposal.model'; import { ProposalVotes } from '../models/governance.proposal.votes.model'; import { GovernanceService } from '../services/governance.service'; import { UseGuards } from '@nestjs/common'; @@ -77,3 +82,29 @@ export class GovernanceProposalResolver { return new BigNumber(userQuorum).integerValue().toFixed(); } } + +@Resolver(() => GovernanceMexV2ProposalModel) +export class GovernanceMexV2ProposalResolver { + constructor( + private readonly governanceService: GovernanceService, + ) { + } + + @UseGuards(JwtOrNativeAuthGuard) + @ResolveField() + async hasVoted( + @AuthUser() user: UserAuthResult, + @Parent() governanceProposal: GovernanceMexV2ProposalModel + ): Promise { + return this.governanceService.hasUserVoted(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); + } + + @UseGuards(JwtOrNativeAuthGuard) + @ResolveField() + async userVoteType( + @AuthUser() user: UserAuthResult, + @Parent() governanceProposal: GovernanceMexV2ProposalModel + ): Promise { + return this.governanceService.userVote(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); + } +} diff --git a/src/modules/governance/services/governance.service.ts b/src/modules/governance/services/governance.service.ts index 99080d49b..f8da645d3 100644 --- a/src/modules/governance/services/governance.service.ts +++ b/src/modules/governance/services/governance.service.ts @@ -4,10 +4,20 @@ import { GovernanceContractsFiltersArgs } from '../models/governance.contracts.f import { GovernanceUnion } from '../models/governance.union'; import { TokenGetterService } from '../../tokens/services/token.getter.service'; import { EsdtToken } from '../../tokens/models/esdtToken.model'; -import { GovernanceEnergyContract, GovernanceTokenSnapshotContract } from '../models/governance.contract.model'; +import { + GovernanceEnergyContract, + GovernanceOldEnergyContract, + GovernanceTokenSnapshotContract, +} from '../models/governance.contract.model'; import { GovernanceTokenSnapshotAbiService } from './governance.abi.service'; -import { VoteType } from '../models/governance.proposal.model'; +import { + DescriptionV1, + GovernanceMexV2ProposalModel, + GovernanceProposalStatus, + VoteType, +} from '../models/governance.proposal.model'; import { GovernanceComputeService } from './governance.compute.service'; +import { ProposalVotes } from '../models/governance.proposal.votes.model'; @Injectable() export class GovernanceService { @@ -45,6 +55,39 @@ export class GovernanceService { }), ); break; + case GovernanceType.OLD_ENERGY: + governance.push( + new GovernanceOldEnergyContract({ + address, + proposals: [ + new GovernanceMexV2ProposalModel({ + contractAddress: address, + proposalId: 1, + description: new DescriptionV1({ + title: 'Maiar DEX to transform Into xExchange with New MEX 2.0 Economic Model', + shortDescription: 'xExchange (Maiar DEX 2.0) presents a set of significant improvements and benefits, while correcting the most important limitations residing in the previous economics model.', + strapiId: 0, + version: 1, + }), + votes: new ProposalVotes({ + upVotes:"3615976209993", + downVotes:"210776056445", + downVetoVotes:"0", + abstainVotes:"274849971635", + totalVotes:"4101602200000", + upPercentage:"0.88", + downPercentage:"0.05", + downVetoPercentage:"0", + abstainPercentage:"0.06", + quorum:"0", + }), + status: GovernanceProposalStatus.Succeeded, + turnoutPercentage: "60.83", + }) + ] + }), + ); + break; } } diff --git a/src/utils/governance.ts b/src/utils/governance.ts index e53aaa76a..844acf4f1 100644 --- a/src/utils/governance.ts +++ b/src/utils/governance.ts @@ -4,6 +4,7 @@ import { registerEnumType } from '@nestjs/graphql'; export enum GovernanceType { ENERGY = 'energy', + OLD_ENERGY = 'oldEnergy', TOKEN_SNAPSHOT = 'tokenSnapshot', } @@ -15,6 +16,8 @@ const toTypeEnum = (type: string): GovernanceType => { return GovernanceType.ENERGY; case GovernanceType.TOKEN_SNAPSHOT.toString(): return GovernanceType.TOKEN_SNAPSHOT; + case GovernanceType.OLD_ENERGY.toString(): + return GovernanceType.OLD_ENERGY; default: return undefined; } From a09da1f38ba2c2381741efa576db87df18eeb6b8 Mon Sep 17 00:00:00 2001 From: Rebegea Dragos-Alexandru Date: Wed, 23 Aug 2023 17:05:25 +0300 Subject: [PATCH 2/4] MEX-359: improvements --- .../governance/entities/lkmex.proposal.ts | 38 ++++++++++++++++++ src/modules/governance/governance.module.ts | 4 +- .../models/governance.contract.model.ts | 6 +-- .../models/governance.proposal.model.ts | 4 +- .../resolvers/governance.proposal.resolver.ts | 10 ++--- .../governance/services/governance.service.ts | 39 ++----------------- 6 files changed, 53 insertions(+), 48 deletions(-) create mode 100644 src/modules/governance/entities/lkmex.proposal.ts diff --git a/src/modules/governance/entities/lkmex.proposal.ts b/src/modules/governance/entities/lkmex.proposal.ts new file mode 100644 index 000000000..6a4652f46 --- /dev/null +++ b/src/modules/governance/entities/lkmex.proposal.ts @@ -0,0 +1,38 @@ +import { + DescriptionV1, + GovernanceLKMEXProposalModel, + GovernanceProposalStatus, +} from '../models/governance.proposal.model'; +import { ProposalVotes } from '../models/governance.proposal.votes.model'; + +export function createLkmexProposal(address) { + return { + address, + proposals: [ + new GovernanceLKMEXProposalModel({ + contractAddress: address, + proposalId: 1, + description: new DescriptionV1({ + title: 'Maiar DEX to transform Into xExchange with New MEX 2.0 Economic Model', + shortDescription: 'xExchange (Maiar DEX 2.0) presents a set of significant improvements and benefits, while correcting the most important limitations residing in the previous economics model.', + strapiId: 0, + version: 1, + }), + votes: new ProposalVotes({ + upVotes:"3615976209993", + downVotes:"210776056445", + downVetoVotes:"0", + abstainVotes:"274849971635", + totalVotes:"4101602200000", + upPercentage:"0.88", + downPercentage:"0.05", + downVetoPercentage:"0", + abstainPercentage:"0.06", + quorum:"0", + }), + status: GovernanceProposalStatus.Succeeded, + turnoutPercentage: "60.83", + }) + ] + }; +} diff --git a/src/modules/governance/governance.module.ts b/src/modules/governance/governance.module.ts index ad9bca314..13fd95d7a 100644 --- a/src/modules/governance/governance.module.ts +++ b/src/modules/governance/governance.module.ts @@ -18,7 +18,7 @@ import { } from './resolvers/governance.contract.resolver'; import { GovernanceSetterService } from './services/governance.setter.service'; import { GovernanceQueryResolver } from './resolvers/governance.query.resolver'; -import { GovernanceMexV2ProposalResolver, GovernanceProposalResolver } from './resolvers/governance.proposal.resolver'; +import { GovernanceLKMEXProposalResolver, GovernanceProposalResolver } from './resolvers/governance.proposal.resolver'; import { ElasticService } from 'src/helpers/elastic.service'; @Module({ @@ -45,7 +45,7 @@ import { ElasticService } from 'src/helpers/elastic.service'; GovernanceEnergyContractResolver, GovernanceTokenSnapshotContractResolver, GovernanceProposalResolver, - GovernanceMexV2ProposalResolver, + GovernanceLKMEXProposalResolver, ElasticService, ], exports: [ diff --git a/src/modules/governance/models/governance.contract.model.ts b/src/modules/governance/models/governance.contract.model.ts index 6a2cd52d3..0b110369c 100644 --- a/src/modules/governance/models/governance.contract.model.ts +++ b/src/modules/governance/models/governance.contract.model.ts @@ -1,5 +1,5 @@ import { Field, Int, ObjectType } from '@nestjs/graphql'; -import { GovernanceMexV2ProposalModel, GovernanceProposalModel } from './governance.proposal.model'; +import { GovernanceLKMEXProposalModel, GovernanceProposalModel } from './governance.proposal.model'; import { EsdtToken } from '../../tokens/models/esdtToken.model'; @ObjectType() @@ -49,8 +49,8 @@ export class GovernanceEnergyContract extends GovernanceTokenSnapshotContract { export class GovernanceOldEnergyContract { @Field() address: string; - @Field(() => [GovernanceMexV2ProposalModel]) - proposals: GovernanceMexV2ProposalModel[]; + @Field(() => [GovernanceLKMEXProposalModel]) + proposals: GovernanceLKMEXProposalModel[]; constructor(init: Partial) { Object.assign(this, init); diff --git a/src/modules/governance/models/governance.proposal.model.ts b/src/modules/governance/models/governance.proposal.model.ts index 4edee7b14..6db111ce2 100644 --- a/src/modules/governance/models/governance.proposal.model.ts +++ b/src/modules/governance/models/governance.proposal.model.ts @@ -109,7 +109,7 @@ export class GovernanceProposalModel { } @ObjectType() -export class GovernanceMexV2ProposalModel { +export class GovernanceLKMEXProposalModel { @Field() contractAddress: string; @Field() @@ -127,7 +127,7 @@ export class GovernanceMexV2ProposalModel { @Field() turnoutPercentage: string; - constructor(init: Partial) { + constructor(init: Partial) { Object.assign(this, init); } } diff --git a/src/modules/governance/resolvers/governance.proposal.resolver.ts b/src/modules/governance/resolvers/governance.proposal.resolver.ts index 8e70a1f5a..de83e6557 100644 --- a/src/modules/governance/resolvers/governance.proposal.resolver.ts +++ b/src/modules/governance/resolvers/governance.proposal.resolver.ts @@ -1,6 +1,6 @@ import { Parent, ResolveField, Resolver } from '@nestjs/graphql'; import { - GovernanceMexV2ProposalModel, + GovernanceLKMEXProposalModel, GovernanceProposalModel, GovernanceProposalStatus, VoteType, @@ -83,8 +83,8 @@ export class GovernanceProposalResolver { } } -@Resolver(() => GovernanceMexV2ProposalModel) -export class GovernanceMexV2ProposalResolver { +@Resolver(() => GovernanceLKMEXProposalModel) +export class GovernanceLKMEXProposalResolver { constructor( private readonly governanceService: GovernanceService, ) { @@ -94,7 +94,7 @@ export class GovernanceMexV2ProposalResolver { @ResolveField() async hasVoted( @AuthUser() user: UserAuthResult, - @Parent() governanceProposal: GovernanceMexV2ProposalModel + @Parent() governanceProposal: GovernanceLKMEXProposalModel ): Promise { return this.governanceService.hasUserVoted(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); } @@ -103,7 +103,7 @@ export class GovernanceMexV2ProposalResolver { @ResolveField() async userVoteType( @AuthUser() user: UserAuthResult, - @Parent() governanceProposal: GovernanceMexV2ProposalModel + @Parent() governanceProposal: GovernanceLKMEXProposalModel ): Promise { return this.governanceService.userVote(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); } diff --git a/src/modules/governance/services/governance.service.ts b/src/modules/governance/services/governance.service.ts index f8da645d3..706c30991 100644 --- a/src/modules/governance/services/governance.service.ts +++ b/src/modules/governance/services/governance.service.ts @@ -10,14 +10,9 @@ import { GovernanceTokenSnapshotContract, } from '../models/governance.contract.model'; import { GovernanceTokenSnapshotAbiService } from './governance.abi.service'; -import { - DescriptionV1, - GovernanceMexV2ProposalModel, - GovernanceProposalStatus, - VoteType, -} from '../models/governance.proposal.model'; +import { VoteType } from '../models/governance.proposal.model'; import { GovernanceComputeService } from './governance.compute.service'; -import { ProposalVotes } from '../models/governance.proposal.votes.model'; +import { createLkmexProposal } from '../entities/lkmex.proposal'; @Injectable() export class GovernanceService { @@ -57,35 +52,7 @@ export class GovernanceService { break; case GovernanceType.OLD_ENERGY: governance.push( - new GovernanceOldEnergyContract({ - address, - proposals: [ - new GovernanceMexV2ProposalModel({ - contractAddress: address, - proposalId: 1, - description: new DescriptionV1({ - title: 'Maiar DEX to transform Into xExchange with New MEX 2.0 Economic Model', - shortDescription: 'xExchange (Maiar DEX 2.0) presents a set of significant improvements and benefits, while correcting the most important limitations residing in the previous economics model.', - strapiId: 0, - version: 1, - }), - votes: new ProposalVotes({ - upVotes:"3615976209993", - downVotes:"210776056445", - downVetoVotes:"0", - abstainVotes:"274849971635", - totalVotes:"4101602200000", - upPercentage:"0.88", - downPercentage:"0.05", - downVetoPercentage:"0", - abstainPercentage:"0.06", - quorum:"0", - }), - status: GovernanceProposalStatus.Succeeded, - turnoutPercentage: "60.83", - }) - ] - }), + new GovernanceOldEnergyContract(createLkmexProposal(address)), ); break; } From c601d87e4ad317c5bb2d2a08f5246f60313d8eb1 Mon Sep 17 00:00:00 2001 From: Rebegea Dragos-Alexandru Date: Wed, 23 Aug 2023 17:37:30 +0300 Subject: [PATCH 3/4] MEX-359: GovernanceLKMEXProposal entity --- .../governance/entities/lkmex.proposal.ts | 69 +++++++++---------- .../governance/services/governance.service.ts | 12 ++-- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/modules/governance/entities/lkmex.proposal.ts b/src/modules/governance/entities/lkmex.proposal.ts index 6a4652f46..808bf5302 100644 --- a/src/modules/governance/entities/lkmex.proposal.ts +++ b/src/modules/governance/entities/lkmex.proposal.ts @@ -1,38 +1,37 @@ -import { - DescriptionV1, - GovernanceLKMEXProposalModel, - GovernanceProposalStatus, -} from '../models/governance.proposal.model'; +import { DescriptionV1, GovernanceProposalStatus } from '../models/governance.proposal.model'; import { ProposalVotes } from '../models/governance.proposal.votes.model'; -export function createLkmexProposal(address) { - return { - address, - proposals: [ - new GovernanceLKMEXProposalModel({ - contractAddress: address, - proposalId: 1, - description: new DescriptionV1({ - title: 'Maiar DEX to transform Into xExchange with New MEX 2.0 Economic Model', - shortDescription: 'xExchange (Maiar DEX 2.0) presents a set of significant improvements and benefits, while correcting the most important limitations residing in the previous economics model.', - strapiId: 0, - version: 1, - }), - votes: new ProposalVotes({ - upVotes:"3615976209993", - downVotes:"210776056445", - downVetoVotes:"0", - abstainVotes:"274849971635", - totalVotes:"4101602200000", - upPercentage:"0.88", - downPercentage:"0.05", - downVetoPercentage:"0", - abstainPercentage:"0.06", - quorum:"0", - }), - status: GovernanceProposalStatus.Succeeded, - turnoutPercentage: "60.83", - }) - ] - }; +export class GovernanceLKMEXProposal { + description = new DescriptionV1({ + title: 'Maiar DEX to transform Into xExchange with New MEX 2.0 Economic Model', + shortDescription: + 'xExchange (Maiar DEX 2.0) presents a set of significant improvements and benefits, while correcting the most important limitations residing in the previous economics model.', + strapiId: 0, + version: 1, + }); + votes = new ProposalVotes({ + upVotes: '3615976209993', + downVotes: '210776056445', + downVetoVotes: '0', + abstainVotes: '274849971635', + totalVotes: '4101602200000', + upPercentage: '0.88', + downPercentage: '0.05', + downVetoPercentage: '0', + abstainPercentage: '0.06', + quorum: '0', + }); + status = GovernanceProposalStatus.Succeeded; + turnoutPercentage = '60.83'; + proposalId = 1; + + toJSOSN() { + return { + proposalId: this.proposalId, + description: this.description, + votes: this.votes, + status: this.status, + turnoutPercentage: this.turnoutPercentage, + }; + } } diff --git a/src/modules/governance/services/governance.service.ts b/src/modules/governance/services/governance.service.ts index 706c30991..1ab9c1817 100644 --- a/src/modules/governance/services/governance.service.ts +++ b/src/modules/governance/services/governance.service.ts @@ -12,7 +12,7 @@ import { import { GovernanceTokenSnapshotAbiService } from './governance.abi.service'; import { VoteType } from '../models/governance.proposal.model'; import { GovernanceComputeService } from './governance.compute.service'; -import { createLkmexProposal } from '../entities/lkmex.proposal'; +import { GovernanceLKMEXProposal } from '../entities/lkmex.proposal'; @Injectable() export class GovernanceService { @@ -51,9 +51,13 @@ export class GovernanceService { ); break; case GovernanceType.OLD_ENERGY: - governance.push( - new GovernanceOldEnergyContract(createLkmexProposal(address)), - ); + governance.push(new GovernanceOldEnergyContract({ + address, + proposals: [{ + contractAddress: address, + ...new GovernanceLKMEXProposal().toJSOSN(), + }], + })); break; } From 874b8977ced3fe5bec2e48b5833e04f8e55d190f Mon Sep 17 00:00:00 2001 From: Rebegea Dragos-Alexandru Date: Wed, 23 Aug 2023 17:52:28 +0300 Subject: [PATCH 4/4] MEX-359: fix hasVoted field resolve --- src/config/mainnet.json | 3 +++ src/config/staging.json | 3 +++ .../governance/resolvers/governance.proposal.resolver.ts | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/config/mainnet.json b/src/config/mainnet.json index eddea6c84..581a56fbb 100644 --- a/src/config/mainnet.json +++ b/src/config/mainnet.json @@ -35,6 +35,9 @@ "lockedTokenWrapper": "erd1qqqqqqqqqqqqqpgqu64gygjs5ted4rupaewaszyhaxl9lv7m2jpsw47nzr", "escrow": "erd1qqqqqqqqqqqqqpgqeh4yv09rmyg4xgn5ma03mvm4v5gndu8w2jpsglz3cn", "governance": { + "oldEnergy": [ + "erd1qqqqqqqqqqqqqpgqdt9aady5jp7av97m7rqxh6e5ywyqsplz2jps5mw02n" + ], "energy": [], "tokenSnapshot": [ "erd1qqqqqqqqqqqqqpgq7cywmem5g66ad49rce0ctu6yqmscmp9v7j6q7cded4" diff --git a/src/config/staging.json b/src/config/staging.json index f35117c85..663de39de 100644 --- a/src/config/staging.json +++ b/src/config/staging.json @@ -35,6 +35,9 @@ "lockedTokenWrapper": "erd1qqqqqqqqqqqqqpgq97fctvqlskzu0str05muew2qyjttp8kfkp2sl9k0gx", "escrow": "erd1qqqqqqqqqqqqqpgqeh4yv09rmyg4xgn5ma03mvm4v5gndu8w2jpsglz3cn", "governance": { + "oldEnergy": [ + "erd1qqqqqqqqqqqqqpgqdt9aady5jp7av97m7rqxh6e5ywyqsplz2jps5mw02n" + ], "energy": [], "tokenSnapshot": [ "erd1qqqqqqqqqqqqqpgq7cywmem5g66ad49rce0ctu6yqmscmp9v7j6q7cded4" diff --git a/src/modules/governance/resolvers/governance.proposal.resolver.ts b/src/modules/governance/resolvers/governance.proposal.resolver.ts index de83e6557..aaff7fd08 100644 --- a/src/modules/governance/resolvers/governance.proposal.resolver.ts +++ b/src/modules/governance/resolvers/governance.proposal.resolver.ts @@ -96,7 +96,8 @@ export class GovernanceLKMEXProposalResolver { @AuthUser() user: UserAuthResult, @Parent() governanceProposal: GovernanceLKMEXProposalModel ): Promise { - return this.governanceService.hasUserVoted(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); + const userVoteType = await this.governanceService.userVote(governanceProposal.contractAddress, governanceProposal.proposalId, user.address); + return userVoteType !== VoteType.NotVoted; } @UseGuards(JwtOrNativeAuthGuard)