Skip to content

Commit

Permalink
fix poe proposal with sign and resolve actived
Browse files Browse the repository at this point in the history
  • Loading branch information
fraidev committed Feb 3, 2024
1 parent 7171c25 commit 1d871af
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 37 deletions.
12 changes: 6 additions & 6 deletions versioned/version0_1_1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ class Version0_1_1 extends Versioned {
proposals: proposals,
convertTezToMutez: boolean = true,
batch?: WalletOperationBatch,
isSigning?: boolean,
isResolving?: boolean
isSigning: boolean = false,
isResolving: boolean = false,
proposalIdOffset: BigNumber = BigNumber(1)
): Promise<[boolean, string]> {
let batchOp = batch;

Expand Down Expand Up @@ -196,17 +197,16 @@ class Version0_1_1 extends Versioned {
})
.filter(v => Object.keys(v).length !== 0);

let params = cc.methods.create_proposal(content).toTransferParams();

const params = cc.methods.create_proposal(content).toTransferParams();
if (isSigning) {
const storage = toStorage(this.version, await cc.storage(), BigNumber(0));
const proposalId = storage.proposal_counter.plus(1);
const proposalId = storage.proposal_counter.plus(proposalIdOffset);
return await this.signProposal(
cc,
t,
proposalId,
true,
isResolving ? true : false,
isResolving,
batchOp,
content
);
Expand Down
74 changes: 49 additions & 25 deletions versioned/version0_3_3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ class Version0_3_3 extends Versioned {
proposals: proposals,
convertTezToMutez: boolean = true,
batch?: WalletOperationBatch,
isSigning?: boolean,
isResolving?: boolean
isSigning: boolean = false,
isResolving: boolean = false,
proposalIdOffset: BigNumber = BigNumber(1)
): Promise<[boolean, string]> {
let batchOp = batch;

Expand Down Expand Up @@ -172,21 +173,27 @@ class Version0_3_3 extends Versioned {
})
.filter(v => Object.keys(v).length !== 0);

const params = cc.methodsObject.create_proposal(content);
batchOp.withContractCall(params);

if (isSigning) {
const storage = toStorage(this.version, await cc.storage(), BigNumber(0));
const proposalId = storage.proposal_counter.plus(1);
return await this.signProposal(
cc,
t,
proposalId,
true,
isResolving ? true : false,
batchOp,
content
);
if (content.length > 0) {
const params = cc.methodsObject.create_proposal(content);
batchOp.withContractCall(params);

if (isSigning) {
const storage = toStorage(
this.version,
await cc.storage(),
BigNumber(0)
);
const proposalId = storage.proposal_counter.plus(proposalIdOffset);
return await this.signProposal(
cc,
t,
proposalId,
true,
isResolving,
batchOp,
content
);
}
}

const op = await batchOp.send();
Expand Down Expand Up @@ -221,7 +228,32 @@ class Version0_3_3 extends Versioned {

let batchOp = batch;
if (batchOp === undefined) batchOp = t.wallet.batch();
this.genSignAndResolveOps(
result,
batchOp,
cc,
proposalId,
proposalContent,
resolve
);
const op = await batchOp.send();

const confirmationValue = await promiseWithTimeout(
op.confirmation(1),
DEFAULT_TIMEOUT
);

return [confirmationValue === -1, op.opHash];
}

genSignAndResolveOps(
result: boolean | undefined,
batchOp: WalletOperationBatch,
cc: WalletContract,
proposalId: BigNumber,
proposalContent: any,
resolve: boolean
) {
if (result !== undefined) {
batchOp.withContractCall(
cc.methodsObject.sign_proposal({
Expand All @@ -240,14 +272,6 @@ class Version0_3_3 extends Versioned {
})
);
}
const op = await batchOp.send();

const confirmationValue = await promiseWithTimeout(
op.confirmation(1),
DEFAULT_TIMEOUT
);

return [confirmationValue === -1, op.opHash];
}

async submitSettingsProposals(
Expand Down
37 changes: 31 additions & 6 deletions versioned/version0_3_4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { BigNumber } from "bignumber.js";
import { content, contractStorage as c1 } from "../types/Proposal0_3_4";
import { contractStorage } from "../types/app";
import { proposalContent } from "../types/display";
import { toStorage } from "./apis";
import { proposals } from "./interface";
import Version0_3_3 from "./version0_3_3";

Expand All @@ -19,26 +20,49 @@ class Version0_3_4 extends Version0_3_3 {
proposals: proposals,
convertTezToMutez: boolean = true,
batch?: WalletOperationBatch,
isSigning?: boolean,
isResolving?: boolean
isSigning: boolean = false,
isResolving: boolean = false,
proposalIdOffset: BigNumber = BigNumber(1)
): Promise<[boolean, string]> {
let batchOp = batch;
if (batchOp === undefined) batchOp = t.wallet.batch();

const poe_proposals = proposals.transfers.filter(v => v.type === "poe");
const regular_proposals = proposals.transfers.filter(v => v.type !== "poe");

let storage: contractStorage = await cc.storage();
if (poe_proposals.length > 0 && isSigning)
storage = toStorage(this.version, await cc.storage(), BigNumber(0));

poe_proposals.forEach(v => {
if (v.type === "poe") {
const params = cc.methods.proof_of_event_challenge(
char2Bytes(v.values.payload)
);
const content = char2Bytes(v.values.payload);
const params = cc.methods.proof_of_event_challenge(content);

if (!batchOp) {
throw new Error(
"Internal error: batchOp is undefined. It should never happen."
);
}
batchOp.withContractCall(params);

if (isSigning && isResolving !== undefined) {
const proposalId = storage.proposal_counter.plus(proposalIdOffset);
super.genSignAndResolveOps(
true,
batchOp,
cc,
proposalId,
[
{
proof_of_event: content,
},
],
isResolving
);
}

proposalIdOffset = proposalIdOffset.plus(1);
}
});

Expand All @@ -49,7 +73,8 @@ class Version0_3_4 extends Version0_3_3 {
convertTezToMutez,
batchOp,
isSigning,
isResolving
isResolving,
proposalIdOffset
);
}

Expand Down

0 comments on commit 1d871af

Please sign in to comment.