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:
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)));
}