From 954f9904587970782bb0b150cd23c1d26870b895 Mon Sep 17 00:00:00 2001 From: Koloina <mamy.rakotondramanana@worldline.com> Date: Sun, 31 Mar 2024 14:00:21 +0200 Subject: [PATCH] Adding condition && compiling FA2 tranfert --- common/errors.mligo | 3 +++ fa2/errors.mligo | 3 +++ src/conditions.jsligo | 5 +++++ src/contract.jsligo | 15 +++++++++++---- src/contracts/fa2.jsligo | 7 +++++++ 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/common/errors.mligo b/common/errors.mligo index 2772c77..935383d 100644 --- a/common/errors.mligo +++ b/common/errors.mligo @@ -13,3 +13,6 @@ let has_already_signed = "You have already signed this proposal" [@no_mutation] let unknown_contract_entrypoint = "Cannot connect to the target transfer token entrypoint" + +[@no_mutation] +let insufficient_balance = "FA2_BALANCE" diff --git a/fa2/errors.mligo b/fa2/errors.mligo index 94fb56b..7863a69 100644 --- a/fa2/errors.mligo +++ b/fa2/errors.mligo @@ -27,3 +27,6 @@ let rec_hook_undef = "FA2_RECEIVER_HOOK_UNDEFINED" [@no_mutation] let send_hook_under = "FA2_SENDER_HOOK_UNDEFINED" + +[@no_mutation] +let insufficient_balance = "FA2_BALANCE" diff --git a/src/conditions.jsligo b/src/conditions.jsligo index 3454959..e770587 100644 --- a/src/conditions.jsligo +++ b/src/conditions.jsligo @@ -19,3 +19,8 @@ export const not_yet_signer = (proposal: Storage.Types.proposal): unit => ! Set.mem((Tezos.get_sender()), proposal.approved_signers), Errors.has_already_signed ); + +@inline +export const insufficient_balance = (a_number: int) : unit=> { + assert_with_error(a_number == (0 as int), Errors.insufficient_balance); +}; \ No newline at end of file diff --git a/src/contract.jsligo b/src/contract.jsligo index e5fd758..8524cc3 100644 --- a/src/contract.jsligo +++ b/src/contract.jsligo @@ -8,6 +8,7 @@ #import "contracts/fa2.jsligo" "FA2" + export type vote = ["yay"] | ["nope"] | ["pass"]; // =============================================================================================== @@ -52,8 +53,9 @@ export const make_vote = ( proposal_number: nat, vote: vote, storage: Storage.Types.t, - dao_contract_address: address -): result => { + dao_contract_address: address, + +): { operations: list<operation>, final_storage: Storage.Types.t } => { let proposal = Preamble.retrieve_a_proposal(proposal_number, storage); proposal = Storage.Utils.add_signer_to_proposal( @@ -63,6 +65,10 @@ export const make_vote = ( ); // Récupérer le nombre de tokens du votant const voterBalance = FA2.get_balance(Tezos.get_sender()); + + Conditions.insufficient_balance(voterBalance); + + // Transférer les tokens vers le contrat de la DAO const transferOperation = FA2.transfer_tokens( @@ -70,12 +76,13 @@ export const make_vote = ( dao_contract_address, voterBalance ); - const operations = [transferOperation]; const final_storage = Storage.Utils.update_proposal(proposal_number, proposal, storage); - return [operations, final_storage]; + return { operations: transferOperation, final_storage: final_storage }; }; + + // =============================================================================================== @entry diff --git a/src/contracts/fa2.jsligo b/src/contracts/fa2.jsligo index 314e882..21a9755 100644 --- a/src/contracts/fa2.jsligo +++ b/src/contracts/fa2.jsligo @@ -31,3 +31,10 @@ export const get_balance = (une_adresse : address): int => { return 2 ; } +export const transfer_tokens = ( + sender: address, + recipient: address, + amount: int +) : list<operation> => { + return list([]) ; +}; -- GitLab