export: make ExportModal::view() generic
This commit is contained in:
parent
5dcecc5542
commit
b0e560c0b5
@ -8,7 +8,7 @@ use liana_ui::{component::modal::Modal, widget::Element};
|
||||
use tokio::task::JoinHandle;
|
||||
|
||||
use crate::{
|
||||
app::view::{self, export::export_modal},
|
||||
app::view::{export::export_modal, Close},
|
||||
daemon::Daemon,
|
||||
export::{self, get_path, ImportExportMessage, ImportExportState, ImportExportType, Progress},
|
||||
};
|
||||
@ -129,7 +129,11 @@ impl ExportModal {
|
||||
}
|
||||
Task::none()
|
||||
}
|
||||
pub fn view<'a>(&'a self, content: Element<'a, view::Message>) -> Element<view::Message> {
|
||||
|
||||
pub fn view<'a, M>(&'a self, content: Element<'a, M>) -> Element<M>
|
||||
where
|
||||
M: 'a + Close + Clone + From<export::ImportExportMessage>,
|
||||
{
|
||||
let modal = Modal::new(
|
||||
content,
|
||||
export_modal(&self.state, self.error.as_ref(), self.modal_title()),
|
||||
@ -138,7 +142,7 @@ impl ExportModal {
|
||||
ImportExportState::TimedOut
|
||||
| ImportExportState::Aborted
|
||||
| ImportExportState::Ended
|
||||
| ImportExportState::Closed => modal.on_blur(Some(view::Message::Close)),
|
||||
| ImportExportState::Closed => modal.on_blur(Some(M::close())),
|
||||
_ => modal,
|
||||
}
|
||||
.into()
|
||||
|
||||
@ -11,11 +11,10 @@ use liana_ui::{
|
||||
widget::Element,
|
||||
};
|
||||
|
||||
use crate::export::{Error, ImportExportMessage};
|
||||
use crate::{app::view::message::Message, export::ImportExportState};
|
||||
use crate::export::{Error, ImportExportMessage, ImportExportState};
|
||||
|
||||
/// Return the modal view for an export task
|
||||
pub fn export_modal<'a>(
|
||||
pub fn export_modal<'a, Message: From<ImportExportMessage> + Clone + 'a>(
|
||||
state: &ImportExportState,
|
||||
error: Option<&'a Error>,
|
||||
export_type: &str,
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
use crate::{app::menu::Menu, export::ImportExportMessage, node::bitcoind::RpcAuthType};
|
||||
use liana::miniscript::bitcoin::{bip32::Fingerprint, OutPoint};
|
||||
|
||||
pub trait Close {
|
||||
fn close() -> Self;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Message {
|
||||
Reload,
|
||||
@ -22,6 +26,12 @@ pub enum Message {
|
||||
ImportExport(ImportExportMessage),
|
||||
}
|
||||
|
||||
impl Close for Message {
|
||||
fn close() -> Self {
|
||||
Self::Close
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum LabelMessage {
|
||||
Edited(String),
|
||||
|
||||
@ -7,7 +7,9 @@ use std::path::PathBuf;
|
||||
use super::{context, Error};
|
||||
use crate::{
|
||||
app::settings::ProviderKey,
|
||||
app::view::Close,
|
||||
download::{DownloadError, Progress},
|
||||
export::ImportExportMessage,
|
||||
hw::HardwareWalletMessage,
|
||||
installer::descriptor::{Key, PathKind},
|
||||
lianalite::client::{auth::AuthClient, backend::api},
|
||||
@ -49,6 +51,19 @@ pub enum Message {
|
||||
RedeemNextKey,
|
||||
KeyRedeemed(ProviderKey, Result<(), services::Error>),
|
||||
AllKeysRedeemed,
|
||||
ImportExport(ImportExportMessage),
|
||||
}
|
||||
|
||||
impl Close for Message {
|
||||
fn close() -> Self {
|
||||
Self::Close
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ImportExportMessage> for Message {
|
||||
fn from(value: ImportExportMessage) -> Self {
|
||||
Self::ImportExport(value)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user