@swaptoshi/governance-module
Version:
Klayr governance on-chain module
39 lines • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProposalVoterStore = exports.defaultProposalVoters = void 0;
const klayr_framework_1 = require("klayr-framework");
const db = require("@liskhq/lisk-db");
const utils = require("@klayr/utils");
const schema_1 = require("../schema");
const utils_1 = require("@swaptoshi/utils");
exports.defaultProposalVoters = Object.freeze({
voters: [],
});
class ProposalVoterStore extends klayr_framework_1.Modules.BaseStore {
constructor() {
super(...arguments);
this.schema = schema_1.proposalVoterStoreSchema;
}
async getOrDefault(context, proposalId) {
try {
const proposalVoters = await this.get(context, utils_1.bytes.numberToBytes(proposalId));
return proposalVoters;
}
catch (error) {
if (!(error instanceof db.NotFoundError)) {
throw error;
}
return utils.objects.cloneDeep(exports.defaultProposalVoters);
}
}
async addVoter(context, proposalId, address) {
const proposalVoters = await this.getOrDefault(context, proposalId);
const index = proposalVoters.voters.findIndex(voter => voter.equals(address));
if (index === -1) {
proposalVoters.voters.push(address);
await this.set(context, utils_1.bytes.numberToBytes(proposalId), proposalVoters);
}
}
}
exports.ProposalVoterStore = ProposalVoterStore;
//# sourceMappingURL=proposal_voter.js.map