notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 19fe3703d9568ca69ccdf578290bd6b3d795ed77
parent a8eaea650922288d6884be06484cbc94307dceaf
Author: kernelkind <kernelkind@gmail.com>
Date:   Sat, 13 Sep 2025 17:15:58 -0400

fix: add tag for hashtag in reply

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/post.rs | 46++++++++++++++--------------------------------
1 file changed, 14 insertions(+), 32 deletions(-)

diff --git a/crates/notedeck_columns/src/post.rs b/crates/notedeck_columns/src/post.rs @@ -56,11 +56,12 @@ impl NewPost { } } - pub fn to_note(&self, seckey: &[u8; 32]) -> Note<'_> { - let mut content = self.content.clone(); + /// creates a NoteBuilder with all the shared data between note, reply & quote reply + fn builder_with_shared_tags<'a>(&self, mut content: String) -> NoteBuilder<'a> { append_urls(&mut content, &self.media); - let mut builder = add_client_tag(NoteBuilder::new()).kind(1).content(&content); + let mut builder = NoteBuilder::new().kind(1).content(&content); + builder = add_client_tag(builder); for hashtag in Self::extract_hashtags(&self.content) { builder = builder.start_tag().tag_str("t").tag_str(&hashtag); @@ -74,18 +75,21 @@ impl NewPost { builder = add_mention_tags(builder, &self.mentions); } + builder + } + + pub fn to_note(&self, seckey: &[u8; 32]) -> Note<'_> { + let builder = self.builder_with_shared_tags(self.content.clone()); + builder.sign(seckey).build().expect("note should be ok") } pub fn to_reply(&self, seckey: &[u8; 32], replying_to: &Note) -> Note<'_> { - let mut content = self.content.clone(); - append_urls(&mut content, &self.media); - - let builder = add_client_tag(NoteBuilder::new()).kind(1).content(&content); + let mut builder = self.builder_with_shared_tags(self.content.clone()); let nip10 = NoteReply::new(replying_to.tags()); - let mut builder = if let Some(root) = nip10.root() { + builder = if let Some(root) = nip10.root() { builder .start_tag() .tag_str("e") @@ -143,14 +147,6 @@ impl NewPost { builder = builder.start_tag().tag_str("p").tag_str(&hex::encode(id)); } - if !self.media.is_empty() { - builder = add_imeta_tags(builder, &self.media); - } - - if !self.mentions.is_empty() { - builder = add_mention_tags(builder, &self.mentions); - } - builder .sign(seckey) .build() @@ -158,27 +154,13 @@ impl NewPost { } pub fn to_quote(&self, seckey: &[u8; 32], quoting: &Note) -> Note<'_> { - let mut new_content = format!( + let new_content = format!( "{}\nnostr:{}", self.content, enostr::NoteId::new(*quoting.id()).to_bech().unwrap() ); - append_urls(&mut new_content, &self.media); - - let mut builder = NoteBuilder::new().kind(1).content(&new_content); - - for hashtag in Self::extract_hashtags(&self.content) { - builder = builder.start_tag().tag_str("t").tag_str(&hashtag); - } - - if !self.media.is_empty() { - builder = add_imeta_tags(builder, &self.media); - } - - if !self.mentions.is_empty() { - builder = add_mention_tags(builder, &self.mentions); - } + let builder = self.builder_with_shared_tags(new_content); builder .start_tag()