diff --git a/src/contract.jsligo b/src/contract.jsligo index 01fd7d58b5b50a6aa6b4b959c6e6abac002519e7..c3ffa6ae48fddecd340e7888b5aa96a8a6fa0abe 100644 --- a/src/contract.jsligo +++ b/src/contract.jsligo @@ -8,6 +8,12 @@ #import "contracts/fa2.jsligo" "FA2" + +export type vote = + | ["yay"] + | ["nope"] + | ["pass"]; + // =============================================================================================== namespace Preamble { @@ -48,17 +54,28 @@ export const create_proposal = ( }; @entry -export const sign_proposal = (proposal_number: nat, storage: Storage.Types.t): result => { - let proposal = Preamble.retrieve_a_proposal(proposal_number, storage); - proposal - = Storage.Utils.add_signer_to_proposal( - proposal, - (Tezos.get_sender()), - storage.threshold - ); - const final_storage = - Storage.Utils.update_proposal(proposal_number, proposal, storage); - const operations = FA2.perform_operations(proposal); +export const make_vote = (proposal_number: nat, vote:vote,storage: Storage.Types.t, dao_contract_address : address ): result => { + let proposal = Preamble.retrieve_a_proposal(proposal_number, storage); + proposal = Storage.Utils.add_signer_to_proposal( + proposal, + (Tezos.get_sender()), + storage.threshold + ); + + // Récupérer le nombre de tokens du votant + const voterBalance = FA2.get_balance(Tezos.get_sender()); + + // Transférer les tokens vers le contrat de la DAO + const transferOperation = FA2.transfer_tokens( + Tezos.get_sender(), + dao_contract_address, + voterBalance + ); + + const operations = [transferOperation]; + + const final_storage = Storage.Utils.update_proposal(proposal_number, proposal, storage); + return [operations, final_storage]; }; diff --git a/src/contracts/fa2.jsligo b/src/contracts/fa2.jsligo index 617884cab020914fb0c97cc9756c0172a2402073..314e8823042fe1ee79a0970020f45795b6098586 100644 --- a/src/contracts/fa2.jsligo +++ b/src/contracts/fa2.jsligo @@ -26,3 +26,8 @@ export const perform_operations = (proposal: Storage.Types.proposal): list< list<operation>; } else return Constants.no_operation; } + +export const get_balance = (une_adresse : address): int => { + return 2 ; +} +