1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
use crate::imports::*;
#[derive(Default, Handler)]
#[help("Manage application settings")]
pub struct Settings;
impl Settings {
async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, _argv: Vec<String>, _cmd: &str) -> Result<()> {
let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
tprintln!(ctx, "\nSettings:\n");
let list = WalletSettings::list();
let list = list
.iter()
.map(|setting| {
let value: String = ctx.wallet().settings().get(setting.clone()).unwrap_or_else(|| "-".to_string());
let descr = setting.descr();
(setting.as_str().to_lowercase(), value, descr)
})
.collect::<Vec<(_, _, _)>>();
let c1 = list.iter().map(|(c, _, _)| c.len()).fold(0, |a, b| a.max(b)) + 4;
let c2 = list.iter().map(|(_, c, _)| c.len()).fold(0, |a, b| a.max(b)) + 4;
list.iter().for_each(|(k, v, d)| {
tprintln!(ctx, "{}: {} \t {}", k.pad_to_width_with_alignment(c1, pad::Alignment::Right), v.pad_to_width(c2), d);
});
tprintln!(ctx);
/*
this is deprecated in favor of dedicated `network`, `server` and `open <wallet name>` commands
else if argv.len() != 2 {
tprintln!(ctx, "usage: set <key> <value>");
return Ok(());
} else {
let key = argv[0].as_str();
let value = argv[1].as_str().trim();
if value.contains(' ') || value.contains('\t') {
return Err(Error::Custom("Whitespace in settings is not allowed".to_string()));
}
match key {
"network" => {
let network: NetworkId = value.parse()?;
ctx.wallet().settings().set(WalletSettings::Network, network).await?;
}
"server" => {
ctx.wallet().settings().set(WalletSettings::Server, value).await?;
}
"wallet" => {
ctx.wallet().settings().set(WalletSettings::Wallet, value).await?;
}
// "scrollback" => {
// ctx.wallet().settings().set(WalletSettings::Wallet, value).await?;
// }
_ => return Err(Error::Custom(format!("Unknown setting '{}'", key))),
}
ctx.wallet().settings().try_store().await?;
}
*/
Ok(())
}
}