Skip to content

Commit b8774dc

Browse files
committed
columns.json migration integration
Signed-off-by: kernelkind <[email protected]>
1 parent 5d10d48 commit b8774dc

File tree

2 files changed

+44
-24
lines changed

2 files changed

+44
-24
lines changed

src/app.rs

+41-23
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
app_size_handler::AppSizeHandler,
55
args::Args,
66
column::Columns,
7-
decks::{Decks, DecksCache},
7+
decks::{Decks, DecksCache, FALLBACK_PUBKEY},
88
draft::Drafts,
99
filter::FilterState,
1010
frame_history::FrameHistory,
@@ -450,36 +450,37 @@ impl Damus {
450450
.as_ref()
451451
.map(|a| a.pubkey.bytes());
452452

453-
let decks_cache = if parsed_args.columns.is_empty() {
454-
if let Some(decks_cache) = storage::load_decks_cache(&path, &ndb) {
455-
info!("Using decks cache from disk");
456-
decks_cache
457-
} else {
458-
info!("Could read not decks cache from disk");
459-
let mut cache = DecksCache::new_with_demo_config(&ndb);
460-
for account in accounts.get_accounts() {
461-
cache.add_deck_default(account.pubkey);
462-
}
463-
set_demo(&mut cache, &ndb, &mut accounts, &mut unknown_ids);
464-
465-
cache
466-
}
467-
} else {
453+
let decks_cache = if !parsed_args.columns.is_empty() {
454+
info!("DecksCache: loading from command line arguments");
468455
let mut columns: Columns = Columns::new();
469456
for col in parsed_args.columns {
470457
if let Some(timeline) = col.into_timeline(&ndb, account) {
471458
columns.add_new_timeline_column(timeline);
472459
}
473460
}
474461

475-
let mut decks_cache = DecksCache::default();
476-
let mut decks = Decks::default();
477-
*decks.active_mut().columns_mut() = columns;
478-
479-
if let Some(acc) = account {
480-
decks_cache.add_decks(Pubkey::new(*acc), decks);
481-
}
462+
columns_to_decks_cache(columns, account)
463+
} else if let Some(decks_cache) = storage::load_decks_cache(&path, &ndb) {
464+
info!(
465+
"DecksCache: loading from disk {}",
466+
crate::storage::DECKS_CACHE_FILE
467+
);
482468
decks_cache
469+
} else if let Some(cols) = storage::deserialize_columns(&path, &ndb, account) {
470+
info!(
471+
"DecksCache: loading from disk at depreciated location {}",
472+
crate::storage::COLUMNS_FILE
473+
);
474+
columns_to_decks_cache(cols, account)
475+
} else {
476+
info!("DecksCache: creating new with demo configuration");
477+
let mut cache = DecksCache::new_with_demo_config(&ndb);
478+
for account in accounts.get_accounts() {
479+
cache.add_deck_default(account.pubkey);
480+
}
481+
set_demo(&mut cache, &ndb, &mut accounts, &mut unknown_ids);
482+
483+
cache
483484
};
484485

485486
let debug = parsed_args.debug;
@@ -823,3 +824,20 @@ pub fn set_demo(
823824
.process_action(unk_ids, ndb, &txn);
824825
accounts.select_account(accounts.num_accounts() - 1);
825826
}
827+
828+
fn columns_to_decks_cache(cols: Columns, key: Option<&[u8; 32]>) -> DecksCache {
829+
let mut account_to_decks: HashMap<Pubkey, Decks> = Default::default();
830+
let decks = Decks::new(crate::decks::Deck::new_with_columns(
831+
crate::decks::Deck::default().icon,
832+
"My Deck".to_owned(),
833+
cols,
834+
));
835+
836+
let account = if let Some(key) = key {
837+
Pubkey::new(*key)
838+
} else {
839+
Pubkey::from_hex(FALLBACK_PUBKEY).unwrap()
840+
};
841+
account_to_decks.insert(account, decks);
842+
DecksCache::new(account_to_decks)
843+
}

src/storage/mod.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
mod decks;
22
mod file_key_storage;
33
mod file_storage;
4+
mod migration;
45

5-
pub use decks::{load_decks_cache, save_decks_cache};
6+
pub use decks::{load_decks_cache, save_decks_cache, DECKS_CACHE_FILE};
67
pub use file_key_storage::FileKeyStorage;
78
pub use file_storage::{delete_file, write_file, DataPath, DataPathType, Directory};
9+
pub use migration::{deserialize_columns, COLUMNS_FILE};
810

911
#[cfg(target_os = "macos")]
1012
mod security_framework_key_storage;

0 commit comments

Comments
 (0)