From 2be8b12ffd844c198681abdc2b19d1873f68c27e Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sat, 24 Dec 2022 13:11:51 +1300 Subject: [PATCH] Move GLOBALS accessors into Globals impl --- src/globals.rs | 126 +++++++++++++++++++++++++------------------------ src/ui/feed.rs | 3 +- 2 files changed, 66 insertions(+), 63 deletions(-) diff --git a/src/globals.rs b/src/globals.rs index d17b2435..5071f15b 100644 --- a/src/globals.rs +++ b/src/globals.rs @@ -69,71 +69,73 @@ lazy_static! { }; } -#[allow(dead_code)] -pub async fn get_feed(threaded: bool) -> Vec { - let feed: Vec = GLOBALS - .feed_events - .lock() - .await - .iter() - .map(|(_, e)| e) - .filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote) - .filter(|e| { - if threaded { - e.in_reply_to.is_none() - } else { - true - } - }) // only root events - .cloned() - .collect(); +impl Globals { + #[allow(dead_code)] + pub async fn get_feed(threaded: bool) -> Vec { + let feed: Vec = GLOBALS + .feed_events + .lock() + .await + .iter() + .map(|(_, e)| e) + .filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote) + .filter(|e| { + if threaded { + e.in_reply_to.is_none() + } else { + true + } + }) // only root events + .cloned() + .collect(); - sort_feed(feed, threaded) -} - -#[allow(dead_code)] -pub fn blocking_get_feed(threaded: bool) -> Vec { - let feed: Vec = GLOBALS - .feed_events - .blocking_lock() - .iter() - .map(|(_, e)| e) - .filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote) - .filter(|e| { - if threaded { - e.in_reply_to.is_none() - } else { - true - } - }) // only root events - .cloned() - .collect(); - - sort_feed(feed, threaded) -} - -fn sort_feed(mut feed: Vec, threaded: bool) -> Vec { - if threaded { - feed.sort_unstable_by(|a, b| b.last_reply_at.cmp(&a.last_reply_at)); - } else { - feed.sort_unstable_by(|a, b| { - if a.event.is_some() && b.event.is_some() { - b.event - .as_ref() - .unwrap() - .created_at - .cmp(&a.event.as_ref().unwrap().created_at) - } else if a.event.is_some() { - std::cmp::Ordering::Greater - } else if b.event.is_some() { - std::cmp::Ordering::Less - } else { - std::cmp::Ordering::Equal - } - }); + Self::sort_feed(feed, threaded) } - feed.iter().map(|e| e.id).collect() + #[allow(dead_code)] + pub fn blocking_get_feed(threaded: bool) -> Vec { + let feed: Vec = GLOBALS + .feed_events + .blocking_lock() + .iter() + .map(|(_, e)| e) + .filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote) + .filter(|e| { + if threaded { + e.in_reply_to.is_none() + } else { + true + } + }) // only root events + .cloned() + .collect(); + + Self::sort_feed(feed, threaded) + } + + fn sort_feed(mut feed: Vec, threaded: bool) -> Vec { + if threaded { + feed.sort_unstable_by(|a, b| b.last_reply_at.cmp(&a.last_reply_at)); + } else { + feed.sort_unstable_by(|a, b| { + if a.event.is_some() && b.event.is_some() { + b.event + .as_ref() + .unwrap() + .created_at + .cmp(&a.event.as_ref().unwrap().created_at) + } else if a.event.is_some() { + std::cmp::Ordering::Greater + } else if b.event.is_some() { + std::cmp::Ordering::Less + } else { + std::cmp::Ordering::Equal + } + }); + } + + feed.iter().map(|e| e.id).collect() + } } pub async fn add_event(event: &Event) -> Result<(), Error> { diff --git a/src/ui/feed.rs b/src/ui/feed.rs index 4881fe01..b0b1580e 100644 --- a/src/ui/feed.rs +++ b/src/ui/feed.rs @@ -1,11 +1,12 @@ use super::GossipUi; +use crate::globals::Globals; use eframe::egui; use egui::{Align, Color32, Context, Layout, RichText, ScrollArea, TextStyle, Ui, Vec2}; use nostr_types::{EventKind, Id, PublicKey}; use tracing::info; pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Frame, ui: &mut Ui) { - let feed = crate::globals::blocking_get_feed(true); + let feed = Globals::blocking_get_feed(true); //let screen_rect = ctx.input().screen_rect; // Rect