notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 72c44bdf2d7ebbf8cdfb52ce99778b88e4e0d9fc
parent 34f0c3b0ce052b234ddc4683cc7ee5b52254ecdd
Author: kernelkind <kernelkind@gmail.com>
Date:   Thu,  5 Dec 2024 19:48:30 -0500

use new serialization

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Msrc/app.rs | 81+++++++++++++++++++++----------------------------------------------------------
Msrc/storage/mod.rs | 4++--
2 files changed, 23 insertions(+), 62 deletions(-)

diff --git a/src/app.rs b/src/app.rs @@ -1,5 +1,5 @@ use crate::{ - accounts::{Accounts, AccountsRoute}, + accounts::Accounts, app_creation::setup_cc, app_size_handler::AppSizeHandler, args::Args, @@ -450,13 +450,19 @@ impl Damus { .as_ref() .map(|a| a.pubkey.bytes()); - let columns = if parsed_args.columns.is_empty() { - if let Some(serializable_columns) = storage::load_columns(&path) { - info!("Using columns from disk"); - serializable_columns.into_columns(&ndb, account) + let decks_cache = if parsed_args.columns.is_empty() { + if let Some(decks_cache) = storage::load_decks_cache(&path, &ndb) { + info!("Using decks cache from disk"); + decks_cache } else { - info!("Could not load columns from disk"); - Columns::new() + info!("Could read not decks cache from disk"); + let mut cache = DecksCache::new_with_demo_config(&ndb); + for account in accounts.get_accounts() { + cache.add_deck_default(account.pubkey); + } + set_demo(&mut cache, &ndb, &mut accounts, &mut unknown_ids); + + cache } } else { let mut columns: Columns = Columns::new(); @@ -466,41 +472,18 @@ impl Damus { } } - columns - }; - - let mut decks_cache = { let mut decks_cache = DecksCache::default(); - let mut decks = Decks::default(); *decks.active_mut().columns_mut() = columns; if let Some(acc) = account { decks_cache.add_decks(Pubkey::new(*acc), decks); } - decks_cache }; let debug = parsed_args.debug; - if get_active_columns(&accounts, &decks_cache) - .columns() - .is_empty() - { - if accounts.get_accounts().is_empty() { - set_demo( - &path, - &ndb, - &mut accounts, - &mut decks_cache, - &mut unknown_ids, - ); - } else { - get_active_columns_mut(&accounts, &mut decks_cache).new_column_picker(); - } - } - let app_rect_handler = AppSizeHandler::new(&path); let support = Support::new(&path); @@ -659,7 +642,7 @@ fn render_damus_mobile(ctx: &egui::Context, app: &mut Damus) { if !app.columns().columns().is_empty() && nav::render_nav(0, app, ui).process_render_nav_response(app) { - storage::save_columns(&app.path, app.columns().as_serializable_columns()); + storage::save_decks_cache(&app.path, &app.decks_cache); } }); } @@ -774,7 +757,7 @@ fn timelines_view(ui: &mut egui::Ui, sizes: Size, app: &mut Damus) { } if save_cols { - storage::save_columns(&app.path, app.columns().as_serializable_columns()); + storage::save_decks_cache(&app.path, &app.decks_cache); } }); } @@ -829,36 +812,14 @@ pub fn get_decks_mut<'a>(accounts: &Accounts, decks_cache: &'a mut DecksCache) - } pub fn set_demo( - data_path: &DataPath, + decks_cache: &mut DecksCache, ndb: &Ndb, accounts: &mut Accounts, - decks_cache: &mut DecksCache, unk_ids: &mut UnknownIds, ) { - let demo_pubkey = *decks_cache.get_fallback_pubkey(); - let columns = get_active_columns_mut(accounts, decks_cache); - - { - let txn = Transaction::new(ndb).expect("txn"); - accounts - .add_account(Keypair::only_pubkey(demo_pubkey)) - .process_action(unk_ids, ndb, &txn); - accounts.select_account(0); - } - - columns.add_column(crate::column::Column::new(vec![ - crate::route::Route::AddColumn(ui::add_column::AddColumnRoute::Base), - crate::route::Route::Accounts(AccountsRoute::Accounts), - ])); - - if let Some(timeline) = - timeline::TimelineKind::contact_list(timeline::PubkeySource::Explicit(demo_pubkey)) - .into_timeline(ndb, Some(demo_pubkey.bytes())) - { - columns.add_new_timeline_column(timeline); - } - - columns.add_new_timeline_column(Timeline::hashtag("introductions".to_string())); - - storage::save_columns(data_path, columns.as_serializable_columns()); + let txn = Transaction::new(ndb).expect("txn"); + accounts + .add_account(Keypair::only_pubkey(*decks_cache.get_fallback_pubkey())) + .process_action(unk_ids, ndb, &txn); + accounts.select_account(accounts.num_accounts() - 1); } diff --git a/src/storage/mod.rs b/src/storage/mod.rs @@ -1,8 +1,8 @@ -mod columns; +mod decks; mod file_key_storage; mod file_storage; -pub use columns::{load_columns, save_columns}; +pub use decks::{load_decks_cache, save_decks_cache}; pub use file_key_storage::FileKeyStorage; pub use file_storage::{delete_file, write_file, DataPath, DataPathType, Directory};