mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-29 08:21:47 +00:00
Add 'E' tags when generating events
This commit is contained in:
parent
2596eff98a
commit
94651b8ca0
@ -11,8 +11,8 @@ use crate::people::Person;
|
||||
use crate::person_relay::PersonRelay;
|
||||
use crate::relay::Relay;
|
||||
use crate::tags::{
|
||||
add_addr_to_tags, add_event_to_tags, add_pubkey_hex_to_tags, add_pubkey_to_tags,
|
||||
add_subject_to_tags_if_missing,
|
||||
add_addr_to_tags, add_event_parent_to_tags, add_event_to_tags, add_pubkey_hex_to_tags,
|
||||
add_pubkey_to_tags, add_subject_to_tags_if_missing,
|
||||
};
|
||||
use gossip_relay_picker::{Direction, RelayAssignment};
|
||||
use http::StatusCode;
|
||||
@ -1407,17 +1407,19 @@ impl Overlord {
|
||||
// Add an 'e' tag for the root
|
||||
add_event_to_tags(&mut tags, root, "root").await;
|
||||
|
||||
// Add an 'e' tag for the note we are replying to
|
||||
// Add an 'e' and 'E' tag for the note we are replying to
|
||||
add_event_to_tags(&mut tags, parent_id, "reply").await;
|
||||
add_event_parent_to_tags(&mut tags, parent_id).await;
|
||||
} else {
|
||||
let ancestors = parent.referred_events();
|
||||
if ancestors.is_empty() {
|
||||
// parent is the root
|
||||
add_event_to_tags(&mut tags, parent_id, "root").await;
|
||||
} else {
|
||||
// Add an 'e' tag for the note we are replying to
|
||||
// Add an 'e' and 'E' tag for the note we are replying to
|
||||
// (and we don't know about the root, the parent is malformed).
|
||||
add_event_to_tags(&mut tags, parent_id, "reply").await;
|
||||
add_event_parent_to_tags(&mut tags, parent_id).await;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,31 @@ pub async fn add_pubkey_to_tags(existing_tags: &mut Vec<Tag>, added: &PublicKey)
|
||||
add_pubkey_hex_to_tags(existing_tags, &added.as_hex_string().into()).await
|
||||
}
|
||||
|
||||
pub async fn add_event_parent_to_tags(existing_tags: &mut Vec<Tag>, added: Id) -> usize {
|
||||
let newtag = Tag::EventParent {
|
||||
id: added,
|
||||
recommended_relay_url: Relay::recommended_relay_for_reply(added)
|
||||
.await
|
||||
.ok()
|
||||
.flatten()
|
||||
.map(|rr| rr.to_unchecked_url()),
|
||||
trailing: Vec::new(),
|
||||
};
|
||||
|
||||
match existing_tags.iter().position(|existing_tag| {
|
||||
matches!(
|
||||
existing_tag,
|
||||
Tag::EventParent { id: existing_e, .. } if existing_e.0 == added.0
|
||||
)
|
||||
}) {
|
||||
None => {
|
||||
existing_tags.push(newtag);
|
||||
existing_tags.len() - 1
|
||||
}
|
||||
Some(idx) => idx,
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn add_event_to_tags(existing_tags: &mut Vec<Tag>, added: Id, marker: &str) -> usize {
|
||||
let newtag = Tag::Event {
|
||||
id: added,
|
||||
|
Loading…
Reference in New Issue
Block a user