Browse Source

support multiple main wallet address by chain

pull/18/head
Sun 4 years ago
parent
commit
b9d63b074c
  1. 27
      src/apps/wallet/models.rs
  2. 2
      src/apps/wallet/rpc.rs

27
src/apps/wallet/models.rs

@ -49,6 +49,33 @@ impl ChainToken {
_ => ChainToken::ETH, _ => ChainToken::ETH,
} }
} }
pub fn update_main(&self, address: &str, old: &str) -> String {
let mut mains: HashMap<i64, &str> = old
.split(",")
.flat_map(|s| {
if s.len() > 2 {
let mut ss = s.split(":");
Some((
ss.next().and_then(|s| s.parse().ok()).unwrap_or(0),
ss.next().unwrap_or(""),
))
} else {
None
}
})
.collect();
mains
.entry(self.to_i64())
.and_modify(|old| *old = address)
.or_insert(address);
let mut last: Vec<String> = vec![];
for (key, s) in mains {
last.push(format!("{}:{}", key, s));
}
last.join(",")
}
} }
#[derive(Clone, Copy)] #[derive(Clone, Copy)]

2
src/apps/wallet/rpc.rs

@ -595,7 +595,7 @@ pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) {
let mut group_lock = state.group.write().await; let mut group_lock = state.group.write().await;
let account = group_lock.account_mut(&gid)?; let account = group_lock.account_mut(&gid)?;
account.wallet = address.address; account.wallet = address.chain.update_main(&address.address, &account.wallet);
account.update_info(&a_db)?; account.update_info(&a_db)?;
drop(group_lock); drop(group_lock);
Ok(HandleResult::new()) Ok(HandleResult::new())

Loading…
Cancel
Save