dao_pre_propose_base/
helpers.rs

1use cosmwasm_std::{Addr, Deps, StdResult};
2
3/// validate addresses and add to and/or remove from an existing list of
4/// addresses, removing any duplicates. mutates the original list.
5pub fn add_and_remove_addresses(
6    deps: Deps,
7    list: &mut Vec<Addr>,
8    add: Option<Vec<String>>,
9    remove: Option<Vec<String>>,
10) -> StdResult<()> {
11    if let Some(add) = add {
12        let mut addrs = add
13            .iter()
14            .map(|addr| deps.api.addr_validate(addr))
15            .collect::<StdResult<Vec<Addr>>>()?;
16
17        list.append(&mut addrs);
18        list.sort();
19        list.dedup();
20    }
21
22    if let Some(remove) = remove {
23        let addrs = remove
24            .iter()
25            .map(|addr| deps.api.addr_validate(addr))
26            .collect::<StdResult<Vec<Addr>>>()?;
27
28        list.retain(|a| !addrs.contains(a));
29    }
30
31    Ok(())
32}