From 38f41de24038afc97422ca6f8eacb7b210806f38 Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Tue, 17 Jan 2023 07:08:32 +1300 Subject: [PATCH] Fix bug with new events not affecting the UI until you click around --- src/feed.rs | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/feed.rs b/src/feed.rs index 184372e9..6ab8b78c 100644 --- a/src/feed.rs +++ b/src/feed.rs @@ -95,36 +95,17 @@ impl Feed { } pub fn get_general(&self) -> Vec { - let now = Instant::now(); - if *self.last_computed.read() + Duration::from_millis(*self.interval_ms.read() as u64) < now - { - let now = now; - task::spawn(async move { - if let Err(e) = GLOBALS.feed.recompute().await { - tracing::error!("{}", e); - } - *GLOBALS.feed.last_computed.write() = now; - }); - } + self.maybe_recompute(); self.general_feed.read().clone() } pub fn get_replies(&self) -> Vec { - let now = Instant::now(); - if *self.last_computed.read() + Duration::from_millis(*self.interval_ms.read() as u64) < now - { - let now = now; - task::spawn(async move { - if let Err(e) = GLOBALS.feed.recompute().await { - tracing::error!("{}", e); - } - *GLOBALS.feed.last_computed.write() = now; - }); - } + self.maybe_recompute(); self.replies_feed.read().clone() } pub fn get_person_feed(&self, person: PublicKeyHex) -> Vec { + self.maybe_recompute(); let mut events: Vec = GLOBALS .events .iter() @@ -152,6 +133,7 @@ impl Feed { } pub fn get_thread_parent(&self) -> Option { + self.maybe_recompute(); *self.thread_parent.read() } @@ -160,6 +142,20 @@ impl Feed { *self.thread_parent.write() = Some(id); } + pub fn maybe_recompute(&self) { + let now = Instant::now(); + if *self.last_computed.read() + Duration::from_millis(*self.interval_ms.read() as u64) < now + { + let now = now; + task::spawn(async move { + if let Err(e) = GLOBALS.feed.recompute().await { + tracing::error!("{}", e); + } + *GLOBALS.feed.last_computed.write() = now; + }); + } + } + pub async fn recompute(&self) -> Result<(), Error> { let settings = GLOBALS.settings.read().await.clone(); *self.interval_ms.write() = settings.feed_recompute_interval_ms;