mirror of
https://github.com/aljazceru/notedeck.git
synced 2025-12-21 18:24:21 +01:00
add preview flag to NoteAction
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
@@ -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()));
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user