Skip to content

Commit

Permalink
Fix 0 notes versions being always unread (#9030)
Browse files Browse the repository at this point in the history
Co-Authored-By: Max <[email protected]>
Co-Authored-By: Nathan <[email protected]>

Release Notes:

- Fixed empty notes always showing as unread

Co-authored-by: Max <[email protected]>
Co-authored-by: Nathan <[email protected]>
  • Loading branch information
3 people authored Mar 7, 2024
1 parent 284a57d commit e85f190
Showing 1 changed file with 24 additions and 35 deletions.
59 changes: 24 additions & 35 deletions crates/channel/src/channel_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ pub fn init(client: &Arc<Client>, user_store: Model<UserStore>, cx: &mut AppCont
cx.set_global(GlobalChannelStore(channel_store));
}

#[derive(Debug, Clone, Default)]
#[derive(Debug, Clone, Default, PartialEq)]
struct NotesVersion {
epoch: u64,
version: clock::Global,
Expand Down Expand Up @@ -81,12 +81,12 @@ pub struct Channel {
pub parent_path: Vec<ChannelId>,
}

#[derive(Default)]
#[derive(Default, Debug)]
pub struct ChannelState {
latest_chat_message: Option<u64>,
latest_notes_versions: Option<NotesVersion>,
latest_notes_version: NotesVersion,
observed_notes_version: NotesVersion,
observed_chat_message: Option<u64>,
observed_notes_versions: Option<NotesVersion>,
role: Option<ChannelRole>,
projects: HashSet<HostedProjectId>,
}
Expand Down Expand Up @@ -1236,19 +1236,12 @@ impl ChannelState {
}

fn has_channel_buffer_changed(&self) -> bool {
if let Some(latest_version) = &self.latest_notes_versions {
if let Some(observed_version) = &self.observed_notes_versions {
latest_version.epoch > observed_version.epoch
|| (latest_version.epoch == observed_version.epoch
&& latest_version
.version
.changed_since(&observed_version.version))
} else {
true
}
} else {
false
}
self.latest_notes_version.epoch > self.observed_notes_version.epoch
|| (self.latest_notes_version.epoch == self.observed_notes_version.epoch
&& self
.latest_notes_version
.version
.changed_since(&self.observed_notes_version.version))
}

fn has_new_messages(&self) -> bool {
Expand All @@ -1275,29 +1268,25 @@ impl ChannelState {
}

fn acknowledge_notes_version(&mut self, epoch: u64, version: &clock::Global) {
if let Some(existing) = &mut self.observed_notes_versions {
if existing.epoch == epoch {
existing.version.join(version);
return;
}
if self.observed_notes_version.epoch == epoch {
self.observed_notes_version.version.join(version);
} else {
self.observed_notes_version = NotesVersion {
epoch,
version: version.clone(),
};
}
self.observed_notes_versions = Some(NotesVersion {
epoch,
version: version.clone(),
});
}

fn update_latest_notes_version(&mut self, epoch: u64, version: &clock::Global) {
if let Some(existing) = &mut self.latest_notes_versions {
if existing.epoch == epoch {
existing.version.join(version);
return;
}
if self.latest_notes_version.epoch == epoch {
self.latest_notes_version.version.join(version);
} else {
self.latest_notes_version = NotesVersion {
epoch,
version: version.clone(),
};
}
self.latest_notes_versions = Some(NotesVersion {
epoch,
version: version.clone(),
});
}

fn add_hosted_project(&mut self, project_id: HostedProjectId) {
Expand Down

0 comments on commit e85f190

Please sign in to comment.