fix: show loading spinner during startup

This commit is contained in:
uku 2025-05-19 19:26:47 +02:00
parent dd2616f0e5
commit 3315b38806
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o

View file

@ -12,6 +12,7 @@ use relm4::{
Component, ComponentController, Controller, RelmApp, Sender, Component, ComponentController, Controller, RelmApp, Sender,
adw::{self, prelude::*}, adw::{self, prelude::*},
gtk::{self, gio}, gtk::{self, gio},
loading_widgets::LoadingWidgets,
prelude::{AsyncComponent, AsyncComponentParts}, prelude::{AsyncComponent, AsyncComponentParts},
tokio, tokio,
}; };
@ -264,8 +265,6 @@ impl AsyncComponent for Tyrolienne {
.forward(sender.input_sender(), |_| Message::Nothing), .forward(sender.input_sender(), |_| Message::Nothing),
}; };
// TODO consider using the "loading" (?) mechanism from relm4
// https://relm4.org/book/stable/threads_and_async/async.html
let folders = match zipline::get_folders(&model.config).await { let folders = match zipline::get_folders(&model.config).await {
Ok(v) => v, Ok(v) => v,
Err(e) => { Err(e) => {
@ -296,6 +295,21 @@ impl AsyncComponent for Tyrolienne {
AsyncComponentParts { model, widgets } AsyncComponentParts { model, widgets }
} }
fn init_loading_widgets(root: Self::Root) -> Option<LoadingWidgets> {
relm4::view! {
#[local]
root {
#[name(spinner)]
gtk::Spinner {
start: (),
set_halign: gtk::Align::Center,
}
}
}
Some(LoadingWidgets::new(root, spinner))
}
async fn update( async fn update(
&mut self, &mut self,
message: Self::Input, message: Self::Input,