gui: update liana:master
This commit is contained in:
parent
0873cdb944
commit
28aaca919a
2
gui/Cargo.lock
generated
2
gui/Cargo.lock
generated
@ -2113,7 +2113,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "liana"
|
||||
version = "2.0.0"
|
||||
source = "git+https://github.com/wizardsardine/liana?branch=master#4f2ff1abc0e2700d563f3077eb71c22ef9573e5c"
|
||||
source = "git+https://github.com/wizardsardine/liana?branch=master#6869d8554a6214d8e73614adf3c9334c1c6188d4"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bip39",
|
||||
|
||||
@ -35,5 +35,5 @@ pub enum Message {
|
||||
ConnectedHardwareWallets(Vec<HardwareWallet>),
|
||||
HistoryTransactions(Result<Vec<HistoryTransaction>, Error>),
|
||||
PendingTransactions(Result<Vec<HistoryTransaction>, Error>),
|
||||
LabelsUpdated(Result<HashMap<String, String>, Error>),
|
||||
LabelsUpdated(Result<HashMap<String, Option<String>>, Error>),
|
||||
}
|
||||
|
||||
@ -50,12 +50,18 @@ impl LabelsEdited {
|
||||
}
|
||||
}
|
||||
view::LabelMessage::Confirm => {
|
||||
let mut updated_labels = HashMap::<LabelItem, String>::new();
|
||||
let mut updated_labels_str = HashMap::<String, String>::new();
|
||||
let mut updated_labels = HashMap::<LabelItem, Option<String>>::new();
|
||||
let mut updated_labels_str = HashMap::<String, Option<String>>::new();
|
||||
for item in items {
|
||||
if let Some(label) = self.0.get(&item).cloned() {
|
||||
updated_labels.insert(label_item_from_str(&item), label.value.clone());
|
||||
updated_labels_str.insert(item, label.value);
|
||||
let item_str = label_item_from_str(&item);
|
||||
if label.value.is_empty() {
|
||||
updated_labels.insert(item_str, None);
|
||||
updated_labels_str.insert(item, None);
|
||||
} else {
|
||||
updated_labels.insert(item_str, Some(label.value.clone()));
|
||||
updated_labels_str.insert(item, Some(label.value));
|
||||
}
|
||||
}
|
||||
}
|
||||
return Ok(Command::perform(
|
||||
|
||||
@ -182,9 +182,11 @@ impl Action for SaveAction {
|
||||
Message::View(view::Message::Spend(view::SpendTxMessage::Confirm)) => {
|
||||
let daemon = daemon.clone();
|
||||
let psbt = tx.psbt.clone();
|
||||
let mut labels = HashMap::<LabelItem, String>::new();
|
||||
let mut labels = HashMap::<LabelItem, Option<String>>::new();
|
||||
for (item, label) in tx.labels() {
|
||||
labels.insert(label_item_from_str(item), label.clone());
|
||||
if !label.is_empty() {
|
||||
labels.insert(label_item_from_str(item), Some(label.clone()));
|
||||
}
|
||||
}
|
||||
return Command::perform(
|
||||
async move {
|
||||
|
||||
@ -157,8 +157,8 @@ impl<C: Client + Debug> Daemon for Lianad<C> {
|
||||
Ok(res.labels)
|
||||
}
|
||||
|
||||
fn update_labels(&self, items: &HashMap<LabelItem, String>) -> Result<(), DaemonError> {
|
||||
let labels: HashMap<String, String> =
|
||||
fn update_labels(&self, items: &HashMap<LabelItem, Option<String>>) -> Result<(), DaemonError> {
|
||||
let labels: HashMap<String, Option<String>> =
|
||||
HashMap::from_iter(items.iter().map(|(a, l)| (a.to_string(), l.clone())));
|
||||
let _res: serde_json::value::Value = self.call("updatelabels", Some(vec![labels]))?;
|
||||
Ok(())
|
||||
|
||||
@ -135,7 +135,7 @@ impl Daemon for EmbeddedDaemon {
|
||||
Ok(self.handle.control.get_labels(items).labels)
|
||||
}
|
||||
|
||||
fn update_labels(&self, items: &HashMap<LabelItem, String>) -> Result<(), DaemonError> {
|
||||
fn update_labels(&self, items: &HashMap<LabelItem, Option<String>>) -> Result<(), DaemonError> {
|
||||
self.handle.control.update_labels(items);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ pub mod model;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::fmt::Debug;
|
||||
use std::io::ErrorKind;
|
||||
use std::iter::FromIterator;
|
||||
|
||||
use liana::{
|
||||
commands::LabelItem,
|
||||
@ -80,7 +81,8 @@ pub trait Daemon: Debug {
|
||||
&self,
|
||||
labels: &HashSet<LabelItem>,
|
||||
) -> Result<HashMap<String, String>, DaemonError>;
|
||||
fn update_labels(&self, labels: &HashMap<LabelItem, String>) -> Result<(), DaemonError>;
|
||||
fn update_labels(&self, labels: &HashMap<LabelItem, Option<String>>)
|
||||
-> Result<(), DaemonError>;
|
||||
|
||||
fn list_spend_transactions(&self) -> Result<Vec<model::SpendTx>, DaemonError> {
|
||||
let info = self.get_info()?;
|
||||
@ -228,7 +230,12 @@ fn load_labels<T: model::Labelled, D: Daemon + ?Sized>(
|
||||
items.insert(item);
|
||||
}
|
||||
}
|
||||
let labels = daemon.get_labels(&items)?;
|
||||
let labels = HashMap::from_iter(
|
||||
daemon
|
||||
.get_labels(&items)?
|
||||
.into_iter()
|
||||
.map(|(k, v)| (k, Some(v))),
|
||||
);
|
||||
for target in targets {
|
||||
target.load_labels(&labels);
|
||||
}
|
||||
|
||||
@ -346,13 +346,17 @@ impl Labelled for HistoryTransaction {
|
||||
pub trait Labelled {
|
||||
fn labelled(&self) -> Vec<LabelItem>;
|
||||
fn labels(&mut self) -> &mut HashMap<String, String>;
|
||||
fn load_labels(&mut self, new_labels: &HashMap<String, String>) {
|
||||
fn load_labels(&mut self, new_labels: &HashMap<String, Option<String>>) {
|
||||
let items = self.labelled();
|
||||
let labels = self.labels();
|
||||
for item in items {
|
||||
let item_str = item.to_string();
|
||||
if let Some(l) = new_labels.get(&item_str) {
|
||||
labels.insert(item_str, l.to_string());
|
||||
if let Some(label) = new_labels.get(&item_str) {
|
||||
if let Some(l) = label {
|
||||
labels.insert(item_str, l.to_string());
|
||||
} else {
|
||||
labels.remove(&item_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user