notedeck

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

commit bd78be1659796b4c5cbd27093855e82625bf99d4
parent 4260d3e9dab8e26147c8dcc37efb1bf78a73f033
Author: kernelkind <kernelkind@gmail.com>
Date:   Tue, 15 Apr 2025 17:22:17 -0400

move error out of `AnyZapState`

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

Diffstat:
Mcrates/notedeck/src/zaps/cache.rs | 17++++++++---------
Mcrates/notedeck_columns/src/ui/note/mod.rs | 33++++++++++++++++++---------------
2 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/crates/notedeck/src/zaps/cache.rs b/crates/notedeck/src/zaps/cache.rs @@ -340,10 +340,10 @@ impl Zaps { &'a self, sender: &[u8; 32], target: ZapTarget<'a>, - ) -> AnyZapState { + ) -> Result<AnyZapState, ZappingError> { let key = ZapKey { sender, target }; let Some(ids) = self.zap_keys.get(&key) else { - return AnyZapState::None; + return Ok(AnyZapState::None); }; let mut has_confirmed = false; @@ -363,21 +363,21 @@ impl Zaps { } ZapState::Pending(p) => { if let Err(e) = p { - return AnyZapState::Error(e.to_owned()); + return Err(e.to_owned()); } - return AnyZapState::Pending; + return Ok(AnyZapState::Pending); } } } if has_local_confirmed { - return AnyZapState::LocalOnly; + return Ok(AnyZapState::LocalOnly); } if has_confirmed { - AnyZapState::Confirmed + Ok(AnyZapState::Confirmed) } else { - AnyZapState::None + Ok(AnyZapState::None) } } @@ -397,11 +397,10 @@ impl Zaps { } } +#[derive(Clone)] pub enum AnyZapState { None, Pending, - #[allow(dead_code)] - Error(ZappingError), LocalOnly, Confirmed, } diff --git a/crates/notedeck_columns/src/ui/note/mod.rs b/crates/notedeck_columns/src/ui/note/mod.rs @@ -612,22 +612,25 @@ fn render_note_actionbar( }); let zap_state = cur_acc.map_or_else( - || AnyZapState::None, + || Ok(AnyZapState::None), |kp| zaps.any_zap_state_for(kp.pubkey.bytes(), zap_target), ); - let zap_resp = cur_acc - .filter(|k| k.secret_key.is_some()) - .map(|_| match &zap_state { - AnyZapState::None => ui.add(zap_button(false)), - AnyZapState::Pending => ui.spinner(), - AnyZapState::LocalOnly | AnyZapState::Confirmed => ui.add(zap_button(true)), - AnyZapState::Error(zapping_error) => { - let (rect, _) = - ui.allocate_at_least(egui::vec2(10.0, 10.0), egui::Sense::click()); - ui.add(x_button(rect)) - .on_hover_text(format!("{zapping_error}")) - } - }); + let zap_resp = + cur_acc + .filter(|k| k.secret_key.is_some()) + .map(|_| match zap_state.clone() { + Ok(any_zap_state) => match any_zap_state { + AnyZapState::None => ui.add(zap_button(false)), + AnyZapState::Pending => ui.spinner(), + AnyZapState::LocalOnly | AnyZapState::Confirmed => ui.add(zap_button(true)), + }, + Err(zapping_error) => { + let (rect, _) = + ui.allocate_at_least(egui::vec2(10.0, 10.0), egui::Sense::click()); + ui.add(x_button(rect)) + .on_hover_text(format!("{zapping_error}")) + } + }); let to_noteid = |id: &[u8; 32]| NoteId::new(*id); @@ -652,7 +655,7 @@ fn render_note_actionbar( zap_recipient: Pubkey::new(*note_pubkey), }; - if matches!(zap_state, AnyZapState::Error(_)) { + if zap_state.is_err() { break 's Some(NoteAction::Zap(ZapAction::ClearError(target))); }