mirror of
https://github.com/13hannes11/toolbx-tuner.git
synced 2024-09-03 23:21:00 +02:00
refresh toolbox list every 10s #5
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
use relm4::factory::DynamicIndex;
|
||||
|
||||
use crate::toolbx::ToolbxContainer;
|
||||
|
||||
use super::model::ToolbxEntry;
|
||||
|
||||
pub enum AppMsg {
|
||||
ShowToolboxSettingsRequest,
|
||||
ShowToolboxAppsRequest,
|
||||
ToolbxListUpdate(Vec<ToolbxContainer>),
|
||||
ToolbxContainerToggleStartStop(DynamicIndex),
|
||||
OpenToolbxTerminal(DynamicIndex),
|
||||
ToolbxContainerChanged(DynamicIndex, ToolbxEntry),
|
||||
|
||||
@@ -61,6 +61,10 @@ impl AppUpdate for AppModel {
|
||||
toolbx_container.update_entry(container);
|
||||
}
|
||||
}
|
||||
AppMsg::ToolbxListUpdate(tbx_vec) => {
|
||||
println!("Updating Toolbox List");
|
||||
self.update_toolbxes(tbx_vec.into_iter());
|
||||
}
|
||||
|
||||
AppMsg::OpenToolbxTerminal(index) => {
|
||||
if let Some(toolbx_container) = self.toolboxes.get_mut(index.current_index()) {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
use std::time::Duration;
|
||||
|
||||
use relm4::factory::DynamicIndex;
|
||||
use relm4::{send, MessageHandler, Sender};
|
||||
use tokio::runtime::{Builder, Runtime};
|
||||
use tokio::sync::mpsc::{channel, Sender as TokioSender};
|
||||
|
||||
use crate::toolbx::ToolbxContainer;
|
||||
|
||||
use super::{
|
||||
messages::AppMsg,
|
||||
model::{AppModel, ToolbxEntry},
|
||||
@@ -18,6 +22,7 @@ pub struct AsyncHandler {
|
||||
pub enum AsyncHandlerMsg {
|
||||
StopToolbx(DynamicIndex, ToolbxEntry),
|
||||
StartToolbx(DynamicIndex, ToolbxEntry),
|
||||
UpdateToolbxes,
|
||||
}
|
||||
|
||||
impl MessageHandler<AppModel> for AsyncHandler {
|
||||
@@ -37,8 +42,11 @@ impl MessageHandler<AppModel> for AsyncHandler {
|
||||
while let Some(msg) = rx.recv().await {
|
||||
let parent_sender = parent_sender.clone();
|
||||
tokio::spawn(async move {
|
||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||
match msg {
|
||||
AsyncHandlerMsg::UpdateToolbxes => {
|
||||
let toolboxes = ToolbxContainer::get_toolboxes();
|
||||
send! {parent_sender, AppMsg::ToolbxListUpdate(toolboxes)};
|
||||
}
|
||||
AsyncHandlerMsg::StopToolbx(index, mut tbx) => {
|
||||
tbx.toolbx_container.stop();
|
||||
tbx.changing_status = false;
|
||||
@@ -54,6 +62,14 @@ impl MessageHandler<AppModel> for AsyncHandler {
|
||||
}
|
||||
});
|
||||
|
||||
let _sender = sender.clone();
|
||||
rt.spawn(async move {
|
||||
loop {
|
||||
tokio::time::sleep(Duration::from_secs(10)).await;
|
||||
_sender.send(AsyncHandlerMsg::UpdateToolbxes).await;
|
||||
}
|
||||
});
|
||||
|
||||
AsyncHandler { _rt: rt, sender }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user