diff --git a/contracts/msig-launcher/src/contract.rs b/contracts/msig-launcher/src/contract.rs index 38bf2f7..912d0ae 100644 --- a/contracts/msig-launcher/src/contract.rs +++ b/contracts/msig-launcher/src/contract.rs @@ -210,16 +210,36 @@ mod tests { .unwrap(); // Queried - wasm.query::<_, PageResult>( - &launcher, - &QueryMsg::MSigs { - pagination: Pagination { - user: Addr::unchecked(user.address()), - limit: None, - start_at: None, + let res = wasm + .query::<_, PageResult>( + &launcher, + &QueryMsg::MSigs { + pagination: Pagination { + user: Addr::unchecked(user.address()), + limit: None, + start_at: None, + }, }, - }, - ) - .unwrap(); + ) + .unwrap(); + let main = res.data.get(0).unwrap(); + + for addr in member_accounts { + let res = wasm + .query::<_, PageResult>( + &launcher, + &QueryMsg::MSigs { + pagination: Pagination { + user: Addr::unchecked(addr.address()), + limit: None, + start_at: None, + }, + }, + ) + .unwrap(); + let msig = res.data.get(0).unwrap(); + + assert_eq!(msig, main); + } } } diff --git a/contracts/msig-launcher/src/execute.rs b/contracts/msig-launcher/src/execute.rs index 6824d98..b3b7793 100644 --- a/contracts/msig-launcher/src/execute.rs +++ b/contracts/msig-launcher/src/execute.rs @@ -21,6 +21,11 @@ pub fn execute_instantiate( let label = format!("{}-{}", info.sender, env.block.height); let code_ids = MSIG_CODE_IDS.load(deps.storage)?; + let mut involved_addrs = vec![info.sender]; + for member in members.iter() { + involved_addrs.push(deps.api.addr_validate(member.addr.as_str())?); + } + let msg = dao_interface::msg::InstantiateMsg { admin: None, name, @@ -83,7 +88,7 @@ pub fn execute_instantiate( return Err(ContractError::UnexpectedDoubleTx {}); } - PENDING_MSIG.save(deps.storage, &(info.sender, env.block.height))?; + PENDING_MSIG.save(deps.storage, &(involved_addrs, env.block.height))?; // Temporarily set the contract's admin to be the smart contract to setup some information Ok(Response::default().add_submessage(SubMsg::reply_on_success( diff --git a/contracts/msig-launcher/src/reply.rs b/contracts/msig-launcher/src/reply.rs index 638fd78..c3358f8 100644 --- a/contracts/msig-launcher/src/reply.rs +++ b/contracts/msig-launcher/src/reply.rs @@ -36,7 +36,7 @@ fn set_metadatas(resp: &mut Response, env: &Env, dao_core: String, target_contra pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result { let mut resp = Response::default(); let code_ids = MSIG_CODE_IDS.load(deps.storage)?; - let (sender, block) = PENDING_MSIG.load(deps.storage)?; + let (involved_addrs, block) = PENDING_MSIG.load(deps.storage)?; PENDING_MSIG.remove(deps.storage); let mut builder = MSigBuilder::default(); @@ -74,9 +74,12 @@ pub fn reply(deps: DepsMut, env: Env, msg: Reply) -> Result) { - events.push(("creator", creator.to_string()).into()); + pub fn append_attrs(&self, creator: &[Addr], events: &mut Vec) { + let mut iter = creator.iter(); + + events.push(("creator", iter.next().unwrap()).into()); + for addr in iter { + events.push(("member", addr).into()); + } events.push(("dao_dao_address", self.dao_dao_contract.to_string()).into()); events.push(("voting_address", self.voting_contract.to_string()).into()); events.push(("proposal_address", self.proposal_contract.to_string()).into()); @@ -91,5 +96,5 @@ impl MSig { } pub static MSIG_CODE_IDS: Item = Item::new("msig_code_ids"); -pub static PENDING_MSIG: Item<(Addr, u64)> = Item::new("pending_msig"); +pub static PENDING_MSIG: Item<(Vec, u64)> = Item::new("pending_msig"); pub static MSIG: Map<(Addr, u64), MSig> = Map::new("msig");