notedeck

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

commit db695affa3c342ecd82576aa934744c098460759
parent b58b1ca640ff781a52e616d16414ce54872f166d
Author: kernelkind <kernelkind@gmail.com>
Date:   Tue, 24 Feb 2026 18:37:38 -0500

feat(outbox-int): use outbox for sending reactions & zaps

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

Diffstat:
Mcrates/notedeck_columns/src/actionbar.rs | 25++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/crates/notedeck_columns/src/actionbar.rs b/crates/notedeck_columns/src/actionbar.rs @@ -18,7 +18,8 @@ use notedeck::{ get_wallet_for, is_future_timestamp, note::{reaction_sent_id, ReactAction, ZapTargetAmount}, unix_time_secs, Accounts, GlobalWallet, Images, MediaJobSender, NoteAction, NoteCache, - NoteZapTargetOwned, RemoteApi, UnknownIds, ZapAction, ZapTarget, ZappingError, Zaps, + NoteZapTargetOwned, PublishApi, RelayType, RemoteApi, UnknownIds, ZapAction, ZapTarget, + ZappingError, Zaps, }; use notedeck_ui::media::MediaViewerFlags; use tracing::error; @@ -101,7 +102,10 @@ fn execute_note_action( } NoteAction::React(react_action) => { if let Some(filled) = accounts.selected_filled() { - if let Err(err) = send_reaction_event(ndb, txn, pool, filled, &react_action) { + let mut publisher = remote.publisher(&*accounts); + if let Err(err) = + send_reaction_event(ndb, txn, &mut publisher, filled, &react_action) + { tracing::error!("Failed to send reaction: {err}"); } ui.ctx().data_mut(|d| { @@ -192,7 +196,7 @@ fn execute_note_action( send_zap( &sender, zaps, - pool, + accounts, target, wallet.default_zap.get_default_zap_msats(), ) @@ -315,7 +319,7 @@ pub fn execute_and_process_note_action( fn send_reaction_event( ndb: &mut Ndb, txn: &Transaction, - pool: &mut RelayPool, + publisher: &mut PublishApi<'_, '_>, kp: FilledKeypair<'_>, reaction: &ReactAction, ) -> Result<(), String> { @@ -377,7 +381,7 @@ fn send_reaction_event( let _ = ndb.process_event_with(&json, IngestMetadata::new().client(true)); - pool.send(event); + publisher.publish_note(&note, RelayType::AccountsWrite); Ok(()) } @@ -403,7 +407,7 @@ fn find_addressable_d_tag(note: &nostrdb::Note<'_>) -> Option<String> { fn send_zap( sender: &Pubkey, zaps: &mut Zaps, - pool: &RelayPool, + accounts: &Accounts, target_amount: &ZapTargetAmount, default_msats: u64, ) { @@ -411,7 +415,14 @@ fn send_zap( let msats = target_amount.specified_msats.unwrap_or(default_msats); - let sender_relays: Vec<String> = pool.relays.iter().map(|r| r.url().to_string()).collect(); + let sender_relays: Vec<String> = accounts + .selected_account_write_relays() + .into_iter() + .filter_map(|r| match r { + enostr::RelayId::Websocket(norm_relay_url) => Some(norm_relay_url.to_string()), + enostr::RelayId::Multicast => None, + }) + .collect(); zaps.send_zap(sender.bytes(), sender_relays, zap_target, msats); }