introduce decks_cache

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2024-12-05 18:42:39 -05:00
committed by William Casarin
parent 35613f2e74
commit 69e93b0ebf
7 changed files with 176 additions and 82 deletions

View File

@@ -2,7 +2,6 @@ use crate::colors::PINK;
use crate::imgcache::ImageCache;
use crate::{
accounts::Accounts,
route::{Route, Router},
ui::{Preview, PreviewConfig, View},
Damus,
};
@@ -203,15 +202,12 @@ mod preview {
pub struct AccountsPreview {
app: Damus,
router: Router<Route>,
}
impl AccountsPreview {
fn new() -> Self {
let app = test_data::test_app();
let router = Router::new(vec![Route::accounts()]);
AccountsPreview { app, router }
AccountsPreview { app }
}
}
@@ -224,7 +220,12 @@ mod preview {
.ui(ui)
.inner
{
process_accounts_view_response(self.app.accounts_mut(), response, &mut self.router);
process_accounts_view_response(
&mut self.app.accounts,
&mut self.app.decks_cache,
0,
response,
);
}
}
}

View File

@@ -4,9 +4,11 @@ use egui::{
use tracing::info;
use crate::{
accounts::AccountsRoute,
accounts::{Accounts, AccountsRoute},
app::get_active_columns_mut,
app_style, colors,
column::{Column, Columns},
column::Column,
decks::DecksCache,
imgcache::ImageCache,
route::Route,
support::Support,
@@ -27,6 +29,7 @@ pub struct DesktopSidePanel<'a> {
ndb: &'a nostrdb::Ndb,
img_cache: &'a mut ImageCache,
selected_account: Option<&'a UserAccount>,
decks_cache: &'a DecksCache,
}
impl View for DesktopSidePanel<'_> {
@@ -63,11 +66,13 @@ impl<'a> DesktopSidePanel<'a> {
ndb: &'a nostrdb::Ndb,
img_cache: &'a mut ImageCache,
selected_account: Option<&'a UserAccount>,
decks_cache: &'a DecksCache,
) -> Self {
Self {
ndb,
img_cache,
selected_account,
decks_cache,
}
}
@@ -200,8 +205,13 @@ impl<'a> DesktopSidePanel<'a> {
helper.take_animation_response()
}
pub fn perform_action(columns: &mut Columns, support: &mut Support, action: SidePanelAction) {
let router = columns.get_first_router();
pub fn perform_action(
decks_cache: &mut DecksCache,
accounts: &Accounts,
support: &mut Support,
action: SidePanelAction,
) {
let router = get_active_columns_mut(accounts, decks_cache).get_first_router();
match action {
SidePanelAction::Panel => {} // TODO
SidePanelAction::Account => {
@@ -232,7 +242,7 @@ impl<'a> DesktopSidePanel<'a> {
{
router.go_back();
} else {
columns.new_column_picker();
get_active_columns_mut(accounts, decks_cache).new_column_picker();
}
}
SidePanelAction::ComposeNote => {
@@ -470,6 +480,7 @@ mod preview {
use egui_extras::{Size, StripBuilder};
use crate::{
app::get_active_columns_mut,
test_data,
ui::{Preview, PreviewConfig},
};
@@ -483,7 +494,8 @@ mod preview {
impl DesktopSidePanelPreview {
fn new() -> Self {
let mut app = test_data::test_app();
app.columns.add_column(Column::new(vec![Route::accounts()]));
get_active_columns_mut(&app.accounts, &mut app.decks_cache)
.add_column(Column::new(vec![Route::accounts()]));
DesktopSidePanelPreview { app }
}
}
@@ -500,11 +512,13 @@ mod preview {
&self.app.ndb,
&mut self.app.img_cache,
self.app.accounts.get_selected_account(),
&self.app.decks_cache,
);
let response = panel.show(ui);
DesktopSidePanel::perform_action(
&mut self.app.columns,
&mut self.app.decks_cache,
&self.app.accounts,
&mut self.app.support,
response.action,
);