diff --git a/src/ui/account_management.rs b/src/ui/account_management.rs index 7814c17..b68d4c5 100644 --- a/src/ui/account_management.rs +++ b/src/ui/account_management.rs @@ -10,8 +10,6 @@ use egui::{Align, Button, Frame, Image, InnerResponse, Layout, RichText, ScrollA use nostrdb::{Ndb, Transaction}; use super::profile::preview::SimpleProfilePreview; -use super::profile::ProfilePreviewOp; -use super::profile_preview_controller::profile_preview_view; pub struct AccountsView<'a> { ndb: &'a Ndb, @@ -26,6 +24,12 @@ pub enum AccountsViewResponse { RouteToLogin, } +#[derive(Debug)] +enum ProfilePreviewOp { + RemoveAccount, + SwitchTo, +} + impl<'a> AccountsView<'a> { pub fn new(ndb: &'a Ndb, accounts: &'a AccountManager, img_cache: &'a mut ImageCache) -> Self { AccountsView { @@ -86,9 +90,13 @@ impl<'a> AccountsView<'a> { false }; - if let Some(op) = - profile_preview_view(ui, profile.as_ref(), img_cache, is_selected) - { + let profile_peview_view = { + let width = ui.available_width(); + let preview = SimpleProfilePreview::new(profile.as_ref(), img_cache); + show_profile_card(ui, preview, width, is_selected) + }; + + if let Some(op) = profile_peview_view { return_op = Some(match op { ProfilePreviewOp::SwitchTo => AccountsViewResponse::SelectAccount(i), ProfilePreviewOp::RemoveAccount => { @@ -119,7 +127,7 @@ impl<'a> AccountsView<'a> { } } -pub fn show_profile_card( +fn show_profile_card( ui: &mut egui::Ui, preview: SimpleProfilePreview, width: f32, diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 8b829e5..ac35e1c 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -15,7 +15,7 @@ pub use account_management::AccountsView; pub use mention::Mention; pub use note::{NoteResponse, NoteView, PostReplyView, PostView}; pub use preview::{Preview, PreviewApp, PreviewConfig}; -pub use profile::{profile_preview_controller, ProfilePic, ProfilePreview}; +pub use profile::{ProfilePic, ProfilePreview}; pub use relay::RelayView; pub use side_panel::{DesktopSidePanel, SidePanelAction}; pub use thread::ThreadView; diff --git a/src/ui/profile/mod.rs b/src/ui/profile/mod.rs index 7c8328a..dafd7b3 100644 --- a/src/ui/profile/mod.rs +++ b/src/ui/profile/mod.rs @@ -1,7 +1,5 @@ pub mod picture; pub mod preview; -pub mod profile_preview_controller; pub use picture::ProfilePic; pub use preview::ProfilePreview; -pub use profile_preview_controller::ProfilePreviewOp; diff --git a/src/ui/profile/profile_preview_controller.rs b/src/ui/profile/profile_preview_controller.rs deleted file mode 100644 index f8bbd7d..0000000 --- a/src/ui/profile/profile_preview_controller.rs +++ /dev/null @@ -1,126 +0,0 @@ -use egui::Ui; -use nostrdb::{Ndb, ProfileRecord, Transaction}; - -use crate::{ - imgcache::ImageCache, ui::account_management::show_profile_card, Damus, DisplayName, Result, -}; - -use super::{ - preview::{get_display_name, get_profile_url, SimpleProfilePreview}, - ProfilePic, -}; - -#[derive(Debug)] -pub enum ProfilePreviewOp { - RemoveAccount, - SwitchTo, -} - -pub fn profile_preview_view( - ui: &mut Ui, - profile: Option<&'_ ProfileRecord<'_>>, - img_cache: &mut ImageCache, - is_selected: bool, -) -> Option { - let width = ui.available_width(); - - let preview = SimpleProfilePreview::new(profile, img_cache); - show_profile_card(ui, preview, width, is_selected) -} - -pub fn view_profile_previews( - app: &mut Damus, - ui: &mut egui::Ui, - add_preview_ui: fn( - ui: &mut egui::Ui, - preview: SimpleProfilePreview, - width: f32, - is_selected: bool, - index: usize, - ) -> bool, -) -> Option { - let width = ui.available_width(); - - let txn = if let Ok(txn) = Transaction::new(app.ndb()) { - txn - } else { - return None; - }; - - for i in 0..app.accounts().num_accounts() { - let account = if let Some(account) = app.accounts().get_account(i) { - account - } else { - continue; - }; - - let profile = app - .ndb() - .get_profile_by_pubkey(&txn, account.pubkey.bytes()) - .ok(); - - let is_selected = if let Some(selected) = app.accounts().get_selected_account_index() { - i == selected - } else { - false - }; - - let preview = SimpleProfilePreview::new(profile.as_ref(), app.img_cache_mut()); - - if add_preview_ui(ui, preview, width, is_selected, i) { - return Some(i); - } - } - - None -} - -pub fn show_with_nickname( - ndb: &Ndb, - ui: &mut egui::Ui, - key: &[u8; 32], - ui_element: fn(ui: &mut egui::Ui, username: &DisplayName) -> egui::Response, -) -> Result { - let txn = Transaction::new(ndb)?; - let profile = ndb.get_profile_by_pubkey(&txn, key)?; - Ok(ui_element(ui, &get_display_name(Some(&profile)))) -} - -pub fn show_with_selected_pfp( - app: &mut Damus, - ui: &mut egui::Ui, - ui_element: fn(ui: &mut egui::Ui, pfp: ProfilePic) -> egui::Response, -) -> Option { - let selected_account = app.accounts().get_selected_account(); - if let Some(selected_account) = selected_account { - if let Ok(txn) = Transaction::new(app.ndb()) { - let profile = app - .ndb() - .get_profile_by_pubkey(&txn, selected_account.pubkey.bytes()); - - return Some(ui_element( - ui, - ProfilePic::new(app.img_cache_mut(), get_profile_url(profile.ok().as_ref())), - )); - } - } - - None -} - -pub fn show_with_pfp( - app: &mut Damus, - ui: &mut egui::Ui, - key: &[u8; 32], - ui_element: fn(ui: &mut egui::Ui, pfp: ProfilePic) -> egui::Response, -) -> Option { - if let Ok(txn) = Transaction::new(app.ndb()) { - let profile = app.ndb().get_profile_by_pubkey(&txn, key); - - return Some(ui_element( - ui, - ProfilePic::new(app.img_cache_mut(), get_profile_url(profile.ok().as_ref())), - )); - } - None -}