From 4c352df050065b872d88e36dcba35dcb9c94df4e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 13 Dec 2024 23:04:59 -0600 Subject: [PATCH] attempting to make async work --- src/main.rs | 35 +++++++++++++++++++++-------------- src/ui/presenter.rs | 12 ++++++------ 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index a8090f0..7ad3219 100644 --- a/src/main.rs +++ b/src/main.rs @@ -372,31 +372,38 @@ impl cosmic::Application for App { None } - fn update( - &mut self, - message: Message, - ) -> cosmic::Task> { + fn update(&mut self, message: Message) -> Task { match message { Message::Present(message) => { debug!(?message); - let task = self.presenter.update(message); if self.presentation_open { if let Some(video) = &mut self.presenter.video { video.set_muted(false); } } + let task = self.presenter.update(message); debug!("Past"); + // let task = Task::perform( + // async { debug!("inside async") }, + // |_| cosmic::app::Message::App(Message::None), + // ); // self.core.nav_bar_toggle(); - // task.then(|x| { - // debug!(?x); - // Task::none() - // }) - let task = task.map(|x| { + task.then(move |x| { debug!(?x); - cosmic::app::Message::None - }); - task - // Task::batch([task]) + Task::perform( + async move { + println!("hi"); + debug!(?x); + }, + |_| cosmic::app::Message::App(Message::None), + ) + }) + // let task = task.map(|x| { + // debug!(?x); + // cosmic::app::Message::App(Message::None) + // }); + // task.chain(Task::none()) + // task } Message::File(file) => { self.file = file; diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs index 8cd4651..a41ca61 100644 --- a/src/ui/presenter.rs +++ b/src/ui/presenter.rs @@ -111,10 +111,7 @@ impl Presenter { } } - pub fn update( - &mut self, - message: Message, - ) -> Task> { + pub fn update(&mut self, message: Message) -> Task { match message { Message::NextSlide => { debug!("next slide"); @@ -195,7 +192,7 @@ impl Presenter { let _ = self.update(Message::EndAudio); } } - op.map(|x| cosmic::app::Message::App(x)) + op } Message::EndVideo => { // if self.current_slide.video_loop() { @@ -252,7 +249,10 @@ impl Presenter { debug!("hi"); start_audio(Arc::clone(&self.sink.1), audio); } - Task::none() + Task::perform( + async { debug!("inside async") }, + |_| Message::None, + ) } Message::EndAudio => { self.sink.1.stop();