commit d0be18c80e764c274bdadae4c3e24227891df473
parent 194fa6864143753403672f4c401d7bf8378ec4c6
Author: William Casarin <jb55@jb55.com>
Date: Mon, 10 Feb 2025 16:33:58 -0800
clippy: fix enum too large issue
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
1 file changed, 41 insertions(+), 54 deletions(-)
diff --git a/crates/notedeck_columns/src/ui/add_column.rs b/crates/notedeck_columns/src/ui/add_column.rs
@@ -7,11 +7,12 @@ use egui::{
};
use enostr::Pubkey;
use nostrdb::{Ndb, Transaction};
+use tracing::error;
use crate::{
login_manager::AcquireKeyState,
route::Route,
- timeline::{kind::ListKind, PubkeySource, Timeline, TimelineKind},
+ timeline::{kind::ListKind, PubkeySource, TimelineKind},
ui::anim::ICON_EXPANSION_MULTIPLE,
Damus,
};
@@ -22,7 +23,7 @@ use tokenator::{ParseError, TokenParser, TokenSerializable, TokenWriter};
use super::{anim::AnimationHelper, padding, ProfilePreview};
pub enum AddColumnResponse {
- Timeline(Timeline),
+ Timeline(TimelineKind),
UndecidedNotification,
ExternalNotification,
Hashtag,
@@ -56,7 +57,6 @@ enum AddColumnOption {
Notification(PubkeySource),
Contacts(PubkeySource),
UndecidedHashtag,
- Hashtag(String),
UndecidedIndividual,
ExternalIndividual,
Individual(PubkeySource),
@@ -138,46 +138,24 @@ impl TokenSerializable for AddColumnRoute {
}
impl AddColumnOption {
- pub fn take_as_response(
- self,
- ndb: &Ndb,
- cur_account: Option<&UserAccount>,
- ) -> Option<AddColumnResponse> {
- let txn = Transaction::new(ndb).unwrap();
+ pub fn take_as_response(self, cur_account: &UserAccount) -> AddColumnResponse {
match self {
- AddColumnOption::Algo(algo_option) => Some(AddColumnResponse::Algo(algo_option)),
- AddColumnOption::Universe => TimelineKind::Universe
- .into_timeline(&txn, ndb)
- .map(AddColumnResponse::Timeline),
- AddColumnOption::Notification(pubkey) => {
- TimelineKind::Notifications(*pubkey.as_pubkey(&cur_account.map(|kp| kp.pubkey)?))
- .into_timeline(&txn, ndb)
- .map(AddColumnResponse::Timeline)
- }
- AddColumnOption::UndecidedNotification => {
- Some(AddColumnResponse::UndecidedNotification)
- }
- AddColumnOption::Contacts(pk_src) => {
- let tlk = TimelineKind::contact_list(
- *pk_src.as_pubkey(&cur_account.map(|kp| kp.pubkey)?),
- );
- tlk.into_timeline(&txn, ndb)
- .map(AddColumnResponse::Timeline)
- }
- AddColumnOption::ExternalNotification => Some(AddColumnResponse::ExternalNotification),
- AddColumnOption::UndecidedHashtag => Some(AddColumnResponse::Hashtag),
- AddColumnOption::Hashtag(hashtag) => TimelineKind::Hashtag(hashtag)
- .into_timeline(&txn, ndb)
- .map(AddColumnResponse::Timeline),
- AddColumnOption::UndecidedIndividual => Some(AddColumnResponse::UndecidedIndividual),
- AddColumnOption::ExternalIndividual => Some(AddColumnResponse::ExternalIndividual),
- AddColumnOption::Individual(pubkey_source) => {
- let tlk = TimelineKind::profile(
- *pubkey_source.as_pubkey(&cur_account.map(|kp| kp.pubkey)?),
- );
- tlk.into_timeline(&txn, ndb)
- .map(AddColumnResponse::Timeline)
- }
+ AddColumnOption::Algo(algo_option) => AddColumnResponse::Algo(algo_option),
+ AddColumnOption::Universe => AddColumnResponse::Timeline(TimelineKind::Universe),
+ AddColumnOption::Notification(pubkey) => AddColumnResponse::Timeline(
+ TimelineKind::Notifications(*pubkey.as_pubkey(&cur_account.pubkey)),
+ ),
+ AddColumnOption::UndecidedNotification => AddColumnResponse::UndecidedNotification,
+ AddColumnOption::Contacts(pk_src) => AddColumnResponse::Timeline(
+ TimelineKind::contact_list(*pk_src.as_pubkey(&cur_account.pubkey)),
+ ),
+ AddColumnOption::ExternalNotification => AddColumnResponse::ExternalNotification,
+ AddColumnOption::UndecidedHashtag => AddColumnResponse::Hashtag,
+ AddColumnOption::UndecidedIndividual => AddColumnResponse::UndecidedIndividual,
+ AddColumnOption::ExternalIndividual => AddColumnResponse::ExternalIndividual,
+ AddColumnOption::Individual(pubkey_source) => AddColumnResponse::Timeline(
+ TimelineKind::profile(*pubkey_source.as_pubkey(&cur_account.pubkey)),
+ ),
}
}
}
@@ -209,7 +187,7 @@ impl<'a> AddColumnView<'a> {
for column_option_data in self.get_base_options() {
let option = column_option_data.option.clone();
if self.column_option_ui(ui, column_option_data).clicked() {
- selected_option = option.take_as_response(self.ndb, self.cur_account);
+ selected_option = self.cur_account.map(|acct| option.take_as_response(acct))
}
ui.add(Separator::default().spacing(0.0));
@@ -223,7 +201,7 @@ impl<'a> AddColumnView<'a> {
for column_option_data in self.get_notifications_options() {
let option = column_option_data.option.clone();
if self.column_option_ui(ui, column_option_data).clicked() {
- selected_option = option.take_as_response(self.ndb, self.cur_account);
+ selected_option = self.cur_account.map(|acct| option.take_as_response(acct));
}
ui.add(Separator::default().spacing(0.0));
@@ -255,7 +233,7 @@ impl<'a> AddColumnView<'a> {
let option = algo_option.option.clone();
if self.column_option_ui(ui, algo_option).clicked() {
- option.take_as_response(self.ndb, self.cur_account)
+ self.cur_account.map(|acct| option.take_as_response(acct))
} else {
None
}
@@ -271,7 +249,7 @@ impl<'a> AddColumnView<'a> {
let option = algo_option.option.clone();
if self.column_option_ui(ui, algo_option).clicked() {
- option.take_as_response(self.ndb, self.cur_account)
+ self.cur_account.map(|acct| option.take_as_response(acct))
} else {
None
}
@@ -282,7 +260,7 @@ impl<'a> AddColumnView<'a> {
for column_option_data in self.get_individual_options() {
let option = column_option_data.option.clone();
if self.column_option_ui(ui, column_option_data).clicked() {
- selected_option = option.take_as_response(self.ndb, self.cur_account);
+ selected_option = self.cur_account.map(|acct| option.take_as_response(acct));
}
ui.add(Separator::default().spacing(0.0));
@@ -349,7 +327,8 @@ impl<'a> AddColumnView<'a> {
}
if ui.add(add_column_button()).clicked() {
- to_option(keypair.pubkey).take_as_response(self.ndb, self.cur_account)
+ self.cur_account
+ .map(|acc| to_option(keypair.pubkey).take_as_response(acc))
} else {
None
}
@@ -634,14 +613,23 @@ pub fn render_add_column_routes(
},
AddColumnRoute::UndecidedNotification => add_column_view.notifications_ui(ui),
AddColumnRoute::ExternalNotification => add_column_view.external_notification_ui(ui),
- AddColumnRoute::Hashtag => hashtag_ui(ui, ctx.ndb, &mut app.view_state.id_string_map),
+ AddColumnRoute::Hashtag => hashtag_ui(ui, &mut app.view_state.id_string_map),
AddColumnRoute::UndecidedIndividual => add_column_view.individual_ui(ui),
AddColumnRoute::ExternalIndividual => add_column_view.external_individual_ui(ui),
};
if let Some(resp) = resp {
match resp {
- AddColumnResponse::Timeline(mut timeline) => {
+ AddColumnResponse::Timeline(timeline_kind) => 'leave: {
+ let txn = Transaction::new(ctx.ndb).unwrap();
+ let mut timeline =
+ if let Some(timeline) = timeline_kind.into_timeline(&txn, ctx.ndb) {
+ timeline
+ } else {
+ error!("Could not convert column response to timeline");
+ break 'leave;
+ };
+
crate::timeline::setup_new_timeline(
&mut timeline,
ctx.ndb,
@@ -706,7 +694,7 @@ pub fn render_add_column_routes(
// TODO: spin off the list search here instead
- ui.label(format!("error: could not find {:?}", &list_kind));
+ ui.label(format!("error: could not find {:?}", list_kind));
}
}
},
@@ -753,7 +741,6 @@ pub fn render_add_column_routes(
pub fn hashtag_ui(
ui: &mut Ui,
- ndb: &Ndb,
id_string_map: &mut HashMap<Id, String>,
) -> Option<AddColumnResponse> {
padding(16.0, ui, |ui| {
@@ -777,9 +764,9 @@ pub fn hashtag_ui(
.clicked()
{
let resp =
- AddColumnOption::Hashtag(sanitize_hashtag(text_buffer)).take_as_response(ndb, None);
+ AddColumnResponse::Timeline(TimelineKind::Hashtag(sanitize_hashtag(text_buffer)));
id_string_map.remove(&id);
- resp
+ Some(resp)
} else {
None
}