[fractal/fractal-next] room: Don't create `Event` objs from a SyncResponse
- From: Julian Sparber <jsparber src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal/fractal-next] room: Don't create `Event` objs from a SyncResponse
- Date: Tue, 15 Feb 2022 13:51:49 +0000 (UTC)
commit aed326e12f0c62a545fb7b0e58d3d1d8afee5ef9
Author: Julian Sparber <julian sparber net>
Date: Thu Feb 10 12:05:20 2022 +0100
room: Don't create `Event` objs from a SyncResponse
src/session/room/mod.rs | 25 ++++++-------------------
1 file changed, 6 insertions(+), 19 deletions(-)
---
diff --git a/src/session/room/mod.rs b/src/session/room/mod.rs
index 809a26c9c..c8d3a7881 100644
--- a/src/session/room/mod.rs
+++ b/src/session/room/mod.rs
@@ -17,7 +17,7 @@ use gettextrs::gettext;
use gtk::{glib, glib::clone, prelude::*, subclass::prelude::*};
use log::{debug, error, info, warn};
use matrix_sdk::{
- deserialized_responses::{JoinedRoom, LeftRoom},
+ deserialized_responses::{JoinedRoom, LeftRoom, SyncRoomEvent},
room::Room as MatrixRoom,
ruma::{
api::client::r0::sync::sync_events::InvitedRoom,
@@ -799,14 +799,15 @@ impl Room {
}
/// Update the room state based on the new sync response
- pub fn append_events(&self, batch: Vec<Event>) {
+ /// FIXME: We should use the sdk's event handler to get updates
+ pub fn update_for_events(&self, batch: Vec<SyncRoomEvent>) {
let priv_ = self.imp();
// FIXME: notify only when the count has changed
self.notify_notification_count();
let mut latest_change = self.latest_change();
- for event in batch.iter().flat_map(Event::matrix_event) {
+ for event in batch.iter().flat_map(|e| e.event.deserialize().ok()) {
match &event {
AnySyncRoomEvent::State(AnySyncStateEvent::RoomMember(event)) => {
self.members().update_member_for_member_event(event)
@@ -1108,14 +1109,7 @@ impl Room {
pub fn handle_left_response(&self, response_room: LeftRoom) {
self.set_matrix_room(self.session().client().get_room(self.room_id()).unwrap());
- self.append_events(
- response_room
- .timeline
- .events
- .into_iter()
- .map(|event| Event::new(event, self))
- .collect(),
- );
+ self.update_for_events(response_room.timeline.events);
}
pub fn handle_joined_response(&self, response_room: JoinedRoom) {
@@ -1130,14 +1124,7 @@ impl Room {
self.load_category();
}
- self.append_events(
- response_room
- .timeline
- .events
- .into_iter()
- .map(|event| Event::new(event, self))
- .collect(),
- );
+ self.update_for_events(response_room.timeline.events);
}
pub fn handle_invited_response(&self, response_room: InvitedRoom) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]