bugfix: unsubscribe from timelines on deck deletion
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -265,10 +265,25 @@ impl Decks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn remove_deck(&mut self, index: usize) {
|
pub fn remove_deck(
|
||||||
|
&mut self,
|
||||||
|
index: usize,
|
||||||
|
timeline_cache: &mut TimelineCache,
|
||||||
|
ndb: &mut nostrdb::Ndb,
|
||||||
|
pool: &mut enostr::RelayPool,
|
||||||
|
) {
|
||||||
|
let Some(deck) = self.remove_deck_internal(index) else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
delete_deck(deck, timeline_cache, ndb, pool);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn remove_deck_internal(&mut self, index: usize) -> Option<Deck> {
|
||||||
|
let mut res = None;
|
||||||
if index < self.decks.len() {
|
if index < self.decks.len() {
|
||||||
if self.decks.len() > 1 {
|
if self.decks.len() > 1 {
|
||||||
self.decks.remove(index);
|
res = Some(self.decks.remove(index));
|
||||||
|
|
||||||
let info_prefix = format!("Removed deck at index {index}");
|
let info_prefix = format!("Removed deck at index {index}");
|
||||||
match index.cmp(&self.active_deck) {
|
match index.cmp(&self.active_deck) {
|
||||||
@@ -311,6 +326,26 @@ impl Decks {
|
|||||||
} else {
|
} else {
|
||||||
error!("index was out of bounds");
|
error!("index was out of bounds");
|
||||||
}
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn delete_deck(
|
||||||
|
mut deck: Deck,
|
||||||
|
timeline_cache: &mut TimelineCache,
|
||||||
|
ndb: &mut nostrdb::Ndb,
|
||||||
|
pool: &mut enostr::RelayPool,
|
||||||
|
) {
|
||||||
|
let cols = deck.columns_mut();
|
||||||
|
let num_cols = cols.num_columns();
|
||||||
|
for i in (0..num_cols).rev() {
|
||||||
|
let kinds_to_pop = cols.delete_column(i);
|
||||||
|
|
||||||
|
for kind in &kinds_to_pop {
|
||||||
|
if let Err(err) = timeline_cache.pop(kind, ndb, pool) {
|
||||||
|
error!("error popping timeline: {err}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,12 @@ impl SwitchingAction {
|
|||||||
get_decks_mut(ctx.accounts, decks_cache).set_active(index)
|
get_decks_mut(ctx.accounts, decks_cache).set_active(index)
|
||||||
}
|
}
|
||||||
DecksAction::Removing(index) => {
|
DecksAction::Removing(index) => {
|
||||||
get_decks_mut(ctx.accounts, decks_cache).remove_deck(index)
|
get_decks_mut(ctx.accounts, decks_cache).remove_deck(
|
||||||
|
index,
|
||||||
|
timeline_cache,
|
||||||
|
ctx.ndb,
|
||||||
|
ctx.pool,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user