Fix notifications for membership changes too
This commit is contained in:
parent
0eff7c6ca9
commit
aa4b8d7246
12 changed files with 470 additions and 260 deletions
|
@ -939,27 +939,11 @@ impl ChannelStore {
|
|||
|
||||
if channels_changed {
|
||||
if !payload.delete_channels.is_empty() {
|
||||
let mut channels_to_delete: Vec<u64> = Vec::new();
|
||||
let mut channels_to_rehome: Vec<u64> = Vec::new();
|
||||
for channel_id in payload.delete_channels {
|
||||
if payload
|
||||
.channels
|
||||
.iter()
|
||||
.any(|channel| channel.id == channel_id)
|
||||
{
|
||||
channels_to_rehome.push(channel_id)
|
||||
} else {
|
||||
channels_to_delete.push(channel_id)
|
||||
}
|
||||
}
|
||||
|
||||
self.channel_index.delete_channels(&channels_to_delete);
|
||||
self.channel_index
|
||||
.delete_paths_through_channels(&channels_to_rehome);
|
||||
self.channel_index.delete_channels(&payload.delete_channels);
|
||||
self.channel_participants
|
||||
.retain(|channel_id, _| !channels_to_delete.contains(channel_id));
|
||||
.retain(|channel_id, _| !&payload.delete_channels.contains(channel_id));
|
||||
|
||||
for channel_id in &channels_to_delete {
|
||||
for channel_id in &payload.delete_channels {
|
||||
let channel_id = *channel_id;
|
||||
if payload
|
||||
.channels
|
||||
|
|
|
@ -24,14 +24,8 @@ impl ChannelIndex {
|
|||
|
||||
/// Delete the given channels from this index.
|
||||
pub fn delete_channels(&mut self, channels: &[ChannelId]) {
|
||||
dbg!("delete_channels", &channels);
|
||||
self.channels_by_id
|
||||
.retain(|channel_id, _| !channels.contains(channel_id));
|
||||
self.delete_paths_through_channels(channels)
|
||||
}
|
||||
|
||||
pub fn delete_paths_through_channels(&mut self, channels: &[ChannelId]) {
|
||||
dbg!("rehome_channels", &channels);
|
||||
self.paths
|
||||
.retain(|path| !path.iter().any(|channel_id| channels.contains(channel_id)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue