clippy: fix enum too large issue
Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -7,11 +7,12 @@ use egui::{
|
|||||||
};
|
};
|
||||||
use enostr::Pubkey;
|
use enostr::Pubkey;
|
||||||
use nostrdb::{Ndb, Transaction};
|
use nostrdb::{Ndb, Transaction};
|
||||||
|
use tracing::error;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
login_manager::AcquireKeyState,
|
login_manager::AcquireKeyState,
|
||||||
route::Route,
|
route::Route,
|
||||||
timeline::{kind::ListKind, PubkeySource, Timeline, TimelineKind},
|
timeline::{kind::ListKind, PubkeySource, TimelineKind},
|
||||||
ui::anim::ICON_EXPANSION_MULTIPLE,
|
ui::anim::ICON_EXPANSION_MULTIPLE,
|
||||||
Damus,
|
Damus,
|
||||||
};
|
};
|
||||||
@@ -22,7 +23,7 @@ use tokenator::{ParseError, TokenParser, TokenSerializable, TokenWriter};
|
|||||||
use super::{anim::AnimationHelper, padding, ProfilePreview};
|
use super::{anim::AnimationHelper, padding, ProfilePreview};
|
||||||
|
|
||||||
pub enum AddColumnResponse {
|
pub enum AddColumnResponse {
|
||||||
Timeline(Timeline),
|
Timeline(TimelineKind),
|
||||||
UndecidedNotification,
|
UndecidedNotification,
|
||||||
ExternalNotification,
|
ExternalNotification,
|
||||||
Hashtag,
|
Hashtag,
|
||||||
@@ -56,7 +57,6 @@ enum AddColumnOption {
|
|||||||
Notification(PubkeySource),
|
Notification(PubkeySource),
|
||||||
Contacts(PubkeySource),
|
Contacts(PubkeySource),
|
||||||
UndecidedHashtag,
|
UndecidedHashtag,
|
||||||
Hashtag(String),
|
|
||||||
UndecidedIndividual,
|
UndecidedIndividual,
|
||||||
ExternalIndividual,
|
ExternalIndividual,
|
||||||
Individual(PubkeySource),
|
Individual(PubkeySource),
|
||||||
@@ -138,46 +138,24 @@ impl TokenSerializable for AddColumnRoute {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AddColumnOption {
|
impl AddColumnOption {
|
||||||
pub fn take_as_response(
|
pub fn take_as_response(self, cur_account: &UserAccount) -> AddColumnResponse {
|
||||||
self,
|
|
||||||
ndb: &Ndb,
|
|
||||||
cur_account: Option<&UserAccount>,
|
|
||||||
) -> Option<AddColumnResponse> {
|
|
||||||
let txn = Transaction::new(ndb).unwrap();
|
|
||||||
match self {
|
match self {
|
||||||
AddColumnOption::Algo(algo_option) => Some(AddColumnResponse::Algo(algo_option)),
|
AddColumnOption::Algo(algo_option) => AddColumnResponse::Algo(algo_option),
|
||||||
AddColumnOption::Universe => TimelineKind::Universe
|
AddColumnOption::Universe => AddColumnResponse::Timeline(TimelineKind::Universe),
|
||||||
.into_timeline(&txn, ndb)
|
AddColumnOption::Notification(pubkey) => AddColumnResponse::Timeline(
|
||||||
.map(AddColumnResponse::Timeline),
|
TimelineKind::Notifications(*pubkey.as_pubkey(&cur_account.pubkey)),
|
||||||
AddColumnOption::Notification(pubkey) => {
|
),
|
||||||
TimelineKind::Notifications(*pubkey.as_pubkey(&cur_account.map(|kp| kp.pubkey)?))
|
AddColumnOption::UndecidedNotification => AddColumnResponse::UndecidedNotification,
|
||||||
.into_timeline(&txn, ndb)
|
AddColumnOption::Contacts(pk_src) => AddColumnResponse::Timeline(
|
||||||
.map(AddColumnResponse::Timeline)
|
TimelineKind::contact_list(*pk_src.as_pubkey(&cur_account.pubkey)),
|
||||||
}
|
),
|
||||||
AddColumnOption::UndecidedNotification => {
|
AddColumnOption::ExternalNotification => AddColumnResponse::ExternalNotification,
|
||||||
Some(AddColumnResponse::UndecidedNotification)
|
AddColumnOption::UndecidedHashtag => AddColumnResponse::Hashtag,
|
||||||
}
|
AddColumnOption::UndecidedIndividual => AddColumnResponse::UndecidedIndividual,
|
||||||
AddColumnOption::Contacts(pk_src) => {
|
AddColumnOption::ExternalIndividual => AddColumnResponse::ExternalIndividual,
|
||||||
let tlk = TimelineKind::contact_list(
|
AddColumnOption::Individual(pubkey_source) => AddColumnResponse::Timeline(
|
||||||
*pk_src.as_pubkey(&cur_account.map(|kp| kp.pubkey)?),
|
TimelineKind::profile(*pubkey_source.as_pubkey(&cur_account.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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -209,7 +187,7 @@ impl<'a> AddColumnView<'a> {
|
|||||||
for column_option_data in self.get_base_options() {
|
for column_option_data in self.get_base_options() {
|
||||||
let option = column_option_data.option.clone();
|
let option = column_option_data.option.clone();
|
||||||
if self.column_option_ui(ui, column_option_data).clicked() {
|
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));
|
ui.add(Separator::default().spacing(0.0));
|
||||||
@@ -223,7 +201,7 @@ impl<'a> AddColumnView<'a> {
|
|||||||
for column_option_data in self.get_notifications_options() {
|
for column_option_data in self.get_notifications_options() {
|
||||||
let option = column_option_data.option.clone();
|
let option = column_option_data.option.clone();
|
||||||
if self.column_option_ui(ui, column_option_data).clicked() {
|
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));
|
ui.add(Separator::default().spacing(0.0));
|
||||||
@@ -255,7 +233,7 @@ impl<'a> AddColumnView<'a> {
|
|||||||
|
|
||||||
let option = algo_option.option.clone();
|
let option = algo_option.option.clone();
|
||||||
if self.column_option_ui(ui, algo_option).clicked() {
|
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 {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@@ -271,7 +249,7 @@ impl<'a> AddColumnView<'a> {
|
|||||||
|
|
||||||
let option = algo_option.option.clone();
|
let option = algo_option.option.clone();
|
||||||
if self.column_option_ui(ui, algo_option).clicked() {
|
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 {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@@ -282,7 +260,7 @@ impl<'a> AddColumnView<'a> {
|
|||||||
for column_option_data in self.get_individual_options() {
|
for column_option_data in self.get_individual_options() {
|
||||||
let option = column_option_data.option.clone();
|
let option = column_option_data.option.clone();
|
||||||
if self.column_option_ui(ui, column_option_data).clicked() {
|
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));
|
ui.add(Separator::default().spacing(0.0));
|
||||||
@@ -349,7 +327,8 @@ impl<'a> AddColumnView<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ui.add(add_column_button()).clicked() {
|
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 {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@@ -634,14 +613,23 @@ pub fn render_add_column_routes(
|
|||||||
},
|
},
|
||||||
AddColumnRoute::UndecidedNotification => add_column_view.notifications_ui(ui),
|
AddColumnRoute::UndecidedNotification => add_column_view.notifications_ui(ui),
|
||||||
AddColumnRoute::ExternalNotification => add_column_view.external_notification_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::UndecidedIndividual => add_column_view.individual_ui(ui),
|
||||||
AddColumnRoute::ExternalIndividual => add_column_view.external_individual_ui(ui),
|
AddColumnRoute::ExternalIndividual => add_column_view.external_individual_ui(ui),
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(resp) = resp {
|
if let Some(resp) = resp {
|
||||||
match 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(
|
crate::timeline::setup_new_timeline(
|
||||||
&mut timeline,
|
&mut timeline,
|
||||||
ctx.ndb,
|
ctx.ndb,
|
||||||
@@ -706,7 +694,7 @@ pub fn render_add_column_routes(
|
|||||||
|
|
||||||
// TODO: spin off the list search here instead
|
// 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(
|
pub fn hashtag_ui(
|
||||||
ui: &mut Ui,
|
ui: &mut Ui,
|
||||||
ndb: &Ndb,
|
|
||||||
id_string_map: &mut HashMap<Id, String>,
|
id_string_map: &mut HashMap<Id, String>,
|
||||||
) -> Option<AddColumnResponse> {
|
) -> Option<AddColumnResponse> {
|
||||||
padding(16.0, ui, |ui| {
|
padding(16.0, ui, |ui| {
|
||||||
@@ -777,9 +764,9 @@ pub fn hashtag_ui(
|
|||||||
.clicked()
|
.clicked()
|
||||||
{
|
{
|
||||||
let resp =
|
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);
|
id_string_map.remove(&id);
|
||||||
resp
|
Some(resp)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user