Move GLOBALS accessors into Globals impl

This commit is contained in:
Mike Dilger 2022-12-24 13:11:51 +13:00
parent 91b0c5bd6f
commit 2be8b12ffd
2 changed files with 66 additions and 63 deletions

View File

@ -69,71 +69,73 @@ lazy_static! {
}; };
} }
#[allow(dead_code)] impl Globals {
pub async fn get_feed(threaded: bool) -> Vec<Id> { #[allow(dead_code)]
let feed: Vec<FeedEvent> = GLOBALS pub async fn get_feed(threaded: bool) -> Vec<Id> {
.feed_events let feed: Vec<FeedEvent> = GLOBALS
.lock() .feed_events
.await .lock()
.iter() .await
.map(|(_, e)| e) .iter()
.filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote) .map(|(_, e)| e)
.filter(|e| { .filter(|e| e.event.is_some() && e.event.as_ref().unwrap().kind == EventKind::TextNote)
if threaded { .filter(|e| {
e.in_reply_to.is_none() if threaded {
} else { e.in_reply_to.is_none()
true } else {
} true
}) // only root events }
.cloned() }) // only root events
.collect(); .cloned()
.collect();
sort_feed(feed, threaded) Self::sort_feed(feed, threaded)
}
#[allow(dead_code)]
pub fn blocking_get_feed(threaded: bool) -> Vec<Id> {
let feed: Vec<FeedEvent> = 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<FeedEvent>, threaded: bool) -> Vec<Id> {
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() #[allow(dead_code)]
pub fn blocking_get_feed(threaded: bool) -> Vec<Id> {
let feed: Vec<FeedEvent> = 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<FeedEvent>, threaded: bool) -> Vec<Id> {
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> { pub async fn add_event(event: &Event) -> Result<(), Error> {

View File

@ -1,11 +1,12 @@
use super::GossipUi; use super::GossipUi;
use crate::globals::Globals;
use eframe::egui; use eframe::egui;
use egui::{Align, Color32, Context, Layout, RichText, ScrollArea, TextStyle, Ui, Vec2}; use egui::{Align, Color32, Context, Layout, RichText, ScrollArea, TextStyle, Ui, Vec2};
use nostr_types::{EventKind, Id, PublicKey}; use nostr_types::{EventKind, Id, PublicKey};
use tracing::info; use tracing::info;
pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Frame, ui: &mut Ui) { 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 //let screen_rect = ctx.input().screen_rect; // Rect