mirror of
https://github.com/mikedilger/gossip.git
synced 2024-10-04 02:40:57 +00:00
bugfix/rework around updating last reply
This commit is contained in:
parent
9aa2845366
commit
0adfe4329f
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -1685,7 +1685,6 @@ dependencies = [
|
||||
name = "gossip"
|
||||
version = "0.3.1-unstable"
|
||||
dependencies = [
|
||||
"async-recursion",
|
||||
"base64 0.20.0",
|
||||
"dirs",
|
||||
"eframe",
|
||||
|
@ -12,7 +12,6 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
async-recursion = "1.0"
|
||||
base64 = "0.20"
|
||||
dirs = "4.0"
|
||||
eframe = { version = "0.20", features = [ "dark-light", "persistence" ] }
|
||||
|
@ -5,7 +5,6 @@ use crate::feed::Feed;
|
||||
use crate::relationship::Relationship;
|
||||
use crate::settings::Settings;
|
||||
use crate::signer::Signer;
|
||||
use async_recursion::async_recursion;
|
||||
use nostr_types::{Event, Id, IdHex, PublicKey, PublicKeyHex, Unixtime, Url};
|
||||
use rusqlite::Connection;
|
||||
use std::collections::HashMap;
|
||||
@ -210,9 +209,7 @@ impl Globals {
|
||||
.or_insert_with(|| vec![r]);
|
||||
}
|
||||
|
||||
#[async_recursion]
|
||||
pub async fn update_last_reply(id: Id, time: Unixtime) {
|
||||
{
|
||||
let mut last_reply = GLOBALS.last_reply.write().await;
|
||||
last_reply
|
||||
.entry(id)
|
||||
@ -222,14 +219,6 @@ impl Globals {
|
||||
}
|
||||
})
|
||||
.or_insert_with(|| time);
|
||||
} // drops lock
|
||||
|
||||
// Recurse upwards
|
||||
if let Some(event) = GLOBALS.events.write().await.get(&id).cloned() {
|
||||
if let Some((id, _maybe_url)) = event.replies_to() {
|
||||
Self::update_last_reply(id, event.created_at).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_replies_sync(id: Id) -> Vec<Id> {
|
||||
|
@ -136,7 +136,16 @@ pub async fn process_new_event(
|
||||
Globals::add_relationship(id, event.id, Relationship::Reply).await;
|
||||
|
||||
// Update last_reply
|
||||
Globals::update_last_reply(id, event.created_at);
|
||||
let mut id = id;
|
||||
Globals::update_last_reply(id, event.created_at).await;
|
||||
while let Some(ev) = GLOBALS.events.read().await.get(&id).cloned() {
|
||||
if let Some((pid, _)) = ev.replies_to() {
|
||||
id = pid;
|
||||
Globals::update_last_reply(id, event.created_at).await;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We desire all ancestors
|
||||
|
Loading…
Reference in New Issue
Block a user