notedeck

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

commit 6741ea8a012df06ab7121bc632f2f4f565b70377
parent cc541cd4ffa7fd6218b79fd59261d57389505b1e
Author: kernelkind <kernelkind@gmail.com>
Date:   Sat,  5 Jul 2025 13:55:24 -0400

construct NoteBuilder from existing note

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

Diffstat:
Mcrates/notedeck_columns/src/profile.rs | 30++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+), 0 deletions(-)

diff --git a/crates/notedeck_columns/src/profile.rs b/crates/notedeck_columns/src/profile.rs @@ -65,3 +65,33 @@ impl ProfileAction { } } } + +pub fn builder_from_note<F>(note: Note<'_>, skip_tag: Option<F>) -> NoteBuilder<'_> +where + F: Fn(&nostrdb::Tag<'_>) -> bool, +{ + let mut builder = NoteBuilder::new(); + + builder = builder.content(note.content()); + builder = builder.options(NoteBuildOptions::default()); + builder = builder.kind(note.kind()); + builder = builder.pubkey(note.pubkey()); + + for tag in note.tags() { + if let Some(skip) = &skip_tag { + if skip(&tag) { + continue; + } + } + + builder = builder.start_tag(); + for tag_item in tag { + builder = match tag_item.variant() { + nostrdb::NdbStrVariant::Id(i) => builder.tag_id(i), + nostrdb::NdbStrVariant::Str(s) => builder.tag_str(s), + }; + } + } + + builder +}