installer: add progress information

This commit is contained in:
edouard 2022-11-29 09:48:56 +01:00
parent 0365794f91
commit 0577b971b7
4 changed files with 40 additions and 14 deletions

View File

@ -160,7 +160,7 @@ impl Installer {
self.steps
.get(self.current)
.expect("There is always a step")
.view()
.view((self.current, self.steps.len() - 1))
}
}

View File

@ -158,11 +158,12 @@ impl Step for DefineDescriptor {
true
}
fn view(&self) -> Element<Message> {
fn view(&self, progress: (usize, usize)) -> Element<Message> {
if let Some(modal) = &self.modal {
modal.view()
} else {
view::define_descriptor(
progress,
self.network,
self.network_valid,
&self.user_xpub,
@ -372,8 +373,9 @@ impl Step for ImportDescriptor {
}
}
fn view(&self) -> Element<Message> {
fn view(&self, progress: (usize, usize)) -> Element<Message> {
view::import_descriptor(
progress,
self.network,
self.network_valid,
&self.imported_descriptor,
@ -473,9 +475,10 @@ impl Step for RegisterDescriptor {
Message::ConnectedHardwareWallets,
)
}
fn view(&self) -> Element<Message> {
fn view(&self, progress: (usize, usize)) -> Element<Message> {
let desc = self.descriptor.as_ref().unwrap();
view::register_descriptor(
progress,
desc.to_string(),
&self.hws,
self.error.as_ref(),
@ -519,9 +522,9 @@ impl Step for BackupDescriptor {
fn load_context(&mut self, ctx: &Context) {
self.descriptor = ctx.descriptor.clone();
}
fn view(&self) -> Element<Message> {
fn view(&self, progress: (usize, usize)) -> Element<Message> {
let desc = self.descriptor.as_ref().unwrap();
view::backup_descriptor(desc.to_string(), self.done)
view::backup_descriptor(progress, desc.to_string(), self.done)
}
}

View File

@ -24,7 +24,7 @@ pub trait Step {
fn update(&mut self, _message: Message) -> Command<Message> {
Command::none()
}
fn view(&self) -> Element<Message>;
fn view(&self, progress: (usize, usize)) -> Element<Message>;
fn load_context(&mut self, _ctx: &Context) {}
fn load(&self) -> Command<Message> {
Command::none()
@ -69,7 +69,7 @@ impl Context {
pub struct Welcome {}
impl Step for Welcome {
fn view(&self) -> Element<Message> {
fn view(&self, _progress: (usize, usize)) -> Element<Message> {
view::welcome()
}
}
@ -191,8 +191,8 @@ impl Step for DefineBitcoind {
}
}
fn view(&self) -> Element<Message> {
view::define_bitcoin(&self.address, &self.cookie_path)
fn view(&self, progress: (usize, usize)) -> Element<Message> {
view::define_bitcoin(progress, &self.address, &self.cookie_path)
}
}
@ -252,10 +252,11 @@ impl Step for Final {
Command::none()
}
fn view(&self) -> Element<Message> {
fn view(&self, progress: (usize, usize)) -> Element<Message> {
let ctx = self.context.as_ref().unwrap();
let desc = ctx.descriptor.as_ref().unwrap().to_string();
view::install(
progress,
ctx,
desc,
self.generating,

View File

@ -118,6 +118,7 @@ pub fn welcome<'a>() -> Element<'a, Message> {
}
pub fn define_descriptor<'a>(
progress: (usize, usize),
network: bitcoin::Network,
network_valid: bool,
user_xpub: &form::Value<String>,
@ -207,6 +208,7 @@ pub fn define_descriptor<'a>(
.spacing(10);
layout(
progress,
Column::new()
.push(text("Create the wallet").bold().size(50))
.push(
@ -239,6 +241,7 @@ pub fn define_descriptor<'a>(
}
pub fn import_descriptor<'a>(
progress: (usize, usize),
network: bitcoin::Network,
network_valid: bool,
imported_descriptor: &form::Value<String>,
@ -273,6 +276,7 @@ pub fn import_descriptor<'a>(
)
.spacing(10);
layout(
progress,
Column::new()
.push(text("Import the wallet").bold().size(50))
.push(
@ -298,6 +302,7 @@ pub fn import_descriptor<'a>(
}
pub fn register_descriptor<'a>(
progress: (usize, usize),
descriptor: String,
hws: &[(HardwareWallet, Option<[u8; 32]>, bool)],
error: Option<&Error>,
@ -305,6 +310,7 @@ pub fn register_descriptor<'a>(
chosen_hw: Option<usize>,
) -> Element<'a, Message> {
layout(
progress,
Column::new()
.push(text("Register descriptor").bold().size(50))
.push(card::simple(
@ -368,8 +374,13 @@ pub fn register_descriptor<'a>(
)
}
pub fn backup_descriptor<'a>(descriptor: String, done: bool) -> Element<'a, Message> {
pub fn backup_descriptor<'a>(
progress: (usize, usize),
descriptor: String,
done: bool,
) -> Element<'a, Message> {
layout(
progress,
Column::new()
.push(
text("Did you backup your wallet descriptor ?")
@ -442,6 +453,7 @@ pub fn help_backup<'a>() -> Element<'a, Message> {
}
pub fn define_bitcoin<'a>(
progress: (usize, usize),
address: &form::Value<String>,
cookie_path: &form::Value<String>,
) -> Element<'a, Message> {
@ -470,6 +482,7 @@ pub fn define_bitcoin<'a>(
.spacing(10);
layout(
progress,
Column::new()
.push(
text("Set up connection to the Bitcoin full node")
@ -492,6 +505,7 @@ pub fn define_bitcoin<'a>(
}
pub fn install<'a>(
progress: (usize, usize),
context: &Context,
descriptor: String,
generating: bool,
@ -606,7 +620,7 @@ pub fn install<'a>(
);
}
layout(col)
layout(progress, col)
}
pub fn hardware_wallet_xpubs_modal<'a>(
@ -715,13 +729,21 @@ fn hw_list_view<'a>(
.into()
}
fn layout<'a>(content: impl Into<Element<'a, Message>>) -> Element<'a, Message> {
fn layout<'a>(
progress: (usize, usize),
content: impl Into<Element<'a, Message>>,
) -> Element<'a, Message> {
Container::new(Scrollable::new(
Column::new()
.push(
Container::new(button::transparent(None, "< Previous").on_press(Message::Previous))
.padding(5),
)
.push(
Container::new(text(format!("{}/{}", progress.0, progress.1)))
.width(Length::Fill)
.center_x(),
)
.push(Container::new(content).width(Length::Fill).center_x()),
))
.center_x()