Skip to content

Commit

Permalink
Update code with example of how to loop a Map value
Browse files Browse the repository at this point in the history
  • Loading branch information
earrietadev committed Sep 8, 2023
1 parent 16d999f commit 9861da4
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 17 deletions.
26 changes: 11 additions & 15 deletions dao/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 14,7 @@ pub trait DaoContractTrait {
gov_token_symbol: String,
voting_power: u32,
proposal_power: u32,
shareholders: Vec<(Address, i128)>,
shareholders: Map<Address, i128>,
// shareholders: Vec<Map<Address, i128>>,
) -> u32;
// fn init(
Expand Down Expand Up @@ -42,7 42,7 @@ impl DaoContractTrait for DaoContract {
gov_token_symbol: String,
voting_power: u32,
proposal_power: u32,
shareholders: Vec<(Address, i128)>,
shareholders: Map<Address, i128>,
// shareholders: Vec<Map<Address, i128>>,
) -> u32 {
can_init_contract(&env);
Expand Down Expand Up @@ -70,19 70,15 @@ impl DaoContractTrait for DaoContract {

let proposal_power_res: Val = env.invoke_contract(&id, &set_proposal_power_fn, vec![&env, proposal_power.into_val(&env)] as Vec<Val>);
let voting_power_res: Val = env.invoke_contract(&id, &set_voting_power_fn, vec![&env, voting_power.into_val(&env)] as Vec<Val>);
for shareholder in shareholders {
match shareholder {
(shareholder_address, amount) => {
let shareholder_address_raw: Val = shareholder_address.to_val();

let auth_args: Vec<Val> = vec![&env, shareholder_address_raw, true.into_val(&env)] as Vec<Val>;
let auth_res: Val = env.invoke_contract(&id, &authorize_fn, auth_args);

let mint_args: Vec<Val> =
vec![&env, shareholder_address_raw, amount.into_val(&env)] as Vec<Val>;
let mint_res: Val = env.invoke_contract(&id, &mint_fn, mint_args);
}
}
for (shareholder_address, amount) in shareholders.iter() {
let shareholder_address_raw: Val = shareholder_address.to_val();

let auth_args: Vec<Val> = vec![&env, shareholder_address_raw, true.into_val(&env)] as Vec<Val>;
let auth_res: Val = env.invoke_contract(&id, &authorize_fn, auth_args);

let mint_args: Vec<Val> =
vec![&env, shareholder_address_raw, amount.into_val(&env)] as Vec<Val>;
let mint_res: Val = env.invoke_contract(&id, &mint_fn, mint_args);
}
// set_core_state(
// &env,
Expand Down
6 changes: 4 additions & 2 deletions dao/src/test.rs
Original file line number Diff line number Diff line change
@@ -1,7 1,7 @@
#![cfg(test)]

use crate::{contract::DaoContract, DaoContractClient};
use soroban_sdk::{testutils::Address as _, Address, BytesN, Env, IntoVal, Vec, String};
use soroban_sdk::{testutils::Address as _, Address, BytesN, Env, IntoVal, Vec, String, Map};

// The contract that will be deployed by the deployer contract.
mod contract {
Expand All @@ -25,7 25,9 @@ fn test() {
let salt = BytesN::from_array(&env, &[0; 32]);
let voting_power = 2;
let proposal_power = 2;
let shareholders: Vec<(Address, i128)> = Vec::from_array(&env, [(admin1.clone(), 200000i128)]);
let mut shareholders: Map<Address, i128> = Map::new(&env);
shareholders.set(admin1.clone(), 200000i128);

let val = client.init(
&salt,
&token_wasm_hash,
Expand Down

0 comments on commit 9861da4

Please sign in to comment.