add preview flag to NoteAction

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-06-17 12:36:18 -04:00
parent b3569e90d6
commit 87b4b5fc70
5 changed files with 30 additions and 9 deletions

View File

@@ -18,7 +18,7 @@ pub enum NoteAction {
Profile(Pubkey), Profile(Pubkey),
/// User has clicked a note link /// User has clicked a note link
Note(NoteId), Note { note_id: NoteId, preview: bool },
/// User has selected some context option /// User has selected some context option
Context(ContextSelection), Context(ContextSelection),
@@ -30,6 +30,15 @@ pub enum NoteAction {
Media(MediaAction), Media(MediaAction),
} }
impl NoteAction {
pub fn note(id: NoteId) -> NoteAction {
NoteAction::Note {
note_id: id,
preview: false,
}
}
}
#[derive(Debug, Eq, PartialEq, Clone)] #[derive(Debug, Eq, PartialEq, Clone)]
pub enum ZapAction { pub enum ZapAction {
Send(ZapTargetAmount), Send(ZapTargetAmount),

View File

@@ -60,7 +60,7 @@ fn execute_note_action(
router_action = Some(RouterAction::route_to(Route::Timeline(kind.clone()))); router_action = Some(RouterAction::route_to(Route::Timeline(kind.clone())));
timeline_res = timeline_cache.open(ndb, note_cache, txn, pool, &kind); timeline_res = timeline_cache.open(ndb, note_cache, txn, pool, &kind);
} }
NoteAction::Note(note_id) => 'ex: { NoteAction::Note { note_id, preview } => 'ex: {
let Ok(thread_selection) = ThreadSelection::from_note_id(ndb, note_cache, txn, note_id) let Ok(thread_selection) = ThreadSelection::from_note_id(ndb, note_cache, txn, note_id)
else { else {
tracing::error!("No thread selection for {}?", hex::encode(note_id.bytes())); tracing::error!("No thread selection for {}?", hex::encode(note_id.bytes()));

View File

@@ -184,7 +184,13 @@ fn show_notes(
} }
fn strip_note_action(action: NoteAction) -> Option<NoteAction> { fn strip_note_action(action: NoteAction) -> Option<NoteAction> {
if matches!(action, NoteAction::Note(_)) { if matches!(
action,
NoteAction::Note {
note_id: _,
preview: false,
}
) {
return None; return None;
} }

View File

@@ -270,11 +270,17 @@ pub fn render_note_contents(
} }
}); });
let preview_note_action = if let Some((id, _block_str)) = inline_note { let preview_note_action = inline_note.and_then(|(id, _)| {
render_note_preview(ui, note_context, cur_acc, txn, id, note_key, options, jobs).action render_note_preview(ui, note_context, cur_acc, txn, id, note_key, options, jobs)
} else { .action
None .map(|a| match a {
}; NoteAction::Note { note_id, .. } => NoteAction::Note {
note_id,
preview: true,
},
other => other,
})
});
let mut media_action = None; let mut media_action = None;
if !supported_medias.is_empty() && !options.has_textmode() { if !supported_medias.is_empty() && !options.has_textmode() {

View File

@@ -609,7 +609,7 @@ impl<'a, 'd> NoteView<'a, 'd> {
} }
note_action = note_hitbox_clicked(ui, hitbox_id, &response.response.rect, maybe_hitbox) note_action = note_hitbox_clicked(ui, hitbox_id, &response.response.rect, maybe_hitbox)
.then_some(NoteAction::Note(NoteId::new(*self.note.id()))) .then_some(NoteAction::note(NoteId::new(*self.note.id())))
.or(note_action); .or(note_action);
NoteResponse::new(response.response) NoteResponse::new(response.response)