commit 99432684f227c10283cf0731dda6f1efb985487c
parent 411ae630685cb817f55a34dd045bab51b751ef80
Author: Marcel <mtrnord1@gmail.com>
Date: Fri, 10 Jul 2020 19:17:48 +0200
Some more migration to the monorepo
Took 17 minutes
Diffstat:
6 files changed, 55 insertions(+), 10 deletions(-)
diff --git a/src/app/components/event_list.rs b/src/app/components/event_list.rs
@@ -1,11 +1,9 @@
use std::{collections::HashMap, rc::Rc};
+use crate::utils::ruma::AnyMessageEventExt;
use log::*;
use matrix_sdk::{
- events::{
- room::message::MessageEventContent, AnyMessageEvent, AnyMessageEventContent,
- AnyMessageEventStub,
- },
+ events::{room::message::MessageEventContent, AnyMessageEventContent, AnyMessageEventStub},
identifiers::RoomId,
Room,
};
@@ -27,7 +25,7 @@ pub struct EventList {
#[derive(Default)]
pub struct State {
// TODO handle all events
- pub events: HashMap<RoomId, Vec<AnyMessageEvent>>,
+ pub events: HashMap<RoomId, Vec<AnyMessageEventStub>>,
}
#[allow(clippy::large_enum_variant)]
@@ -94,10 +92,11 @@ impl Component for EventList {
}
}
Response::OldMessages((room_id, messages)) => {
- let mut deserialized_messages: Vec<AnyMessageEvent> = messages
+ let mut deserialized_messages: Vec<AnyMessageEventStub> = messages
.iter()
.map(|x| x.deserialize())
.filter_map(Result::ok)
+ .map(|x| x.without_room_id())
.collect();
// This is a clippy false positive
#[allow(clippy::map_entry)]
diff --git a/src/app/components/room_list/item.rs b/src/app/components/room_list/item.rs
@@ -57,7 +57,7 @@ impl Component for RoomItem {
if let AnyMessageEventContent::RoomMessage(MessageEventContent::Text(text_event)) =
m.content.clone()
{
- text_event.body.clone()
+ text_event.body
} else {
"".to_string()
}
diff --git a/src/app/matrix/mod.rs b/src/app/matrix/mod.rs
@@ -6,8 +6,7 @@ use matrix_sdk::{
api::r0::{filter::RoomEventFilter, message::get_message_events::Direction},
events::{
room::message::{
- FormattedBody, MessageEventContent, MessageFormat,
- TextMessageEventContent,
+ FormattedBody, MessageEventContent, MessageFormat, TextMessageEventContent,
},
AnyMessageEvent, AnyMessageEventStub, AnyRoomEvent, EventJson,
},
diff --git a/src/app/matrix/sync.rs b/src/app/matrix/sync.rs
@@ -7,7 +7,6 @@ use log::*;
use matrix_sdk::{
api::r0::sync::sync_events::Response as SyncResponse,
events::{
-
room::message::MessageEventContent, AnyMessageEventStub, AnyRoomEventStub,
AnyStateEventStub, EventJson,
},
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
@@ -1,2 +1,3 @@
pub mod notifications;
+pub mod ruma;
pub mod string_utils;
diff --git a/src/utils/ruma.rs b/src/utils/ruma.rs
@@ -0,0 +1,47 @@
+use matrix_sdk::events::{
+ room::redaction::RedactionEventStub, AnyMessageEvent, AnyMessageEventStub, MessageEvent,
+ MessageEventContent, MessageEventStub,
+};
+
+pub trait AnyMessageEventExt {
+ fn without_room_id(self) -> AnyMessageEventStub;
+}
+
+impl AnyMessageEventExt for AnyMessageEvent {
+ fn without_room_id(self) -> AnyMessageEventStub {
+ fn without_room_id<C>(ev: MessageEvent<C>) -> MessageEventStub<C>
+ where
+ C: MessageEventContent,
+ {
+ MessageEventStub {
+ content: ev.content,
+ event_id: ev.event_id,
+ sender: ev.sender,
+ origin_server_ts: ev.origin_server_ts,
+ unsigned: ev.unsigned,
+ }
+ }
+
+ use AnyMessageEventStub::*;
+
+ match self {
+ Self::CallAnswer(ev) => CallAnswer(without_room_id(ev)),
+ Self::CallInvite(ev) => CallInvite(without_room_id(ev)),
+ Self::CallHangup(ev) => CallHangup(without_room_id(ev)),
+ Self::CallCandidates(ev) => CallCandidates(without_room_id(ev)),
+ Self::RoomEncrypted(ev) => RoomEncrypted(without_room_id(ev)),
+ Self::RoomMessage(ev) => RoomMessage(without_room_id(ev)),
+ Self::RoomMessageFeedback(ev) => RoomMessageFeedback(without_room_id(ev)),
+ Self::Sticker(ev) => Sticker(without_room_id(ev)),
+ Self::Custom(ev) => Custom(without_room_id(ev)),
+ Self::RoomRedaction(ev) => RoomRedaction(RedactionEventStub {
+ content: ev.content,
+ event_id: ev.event_id,
+ sender: ev.sender,
+ origin_server_ts: ev.origin_server_ts,
+ unsigned: ev.unsigned,
+ redacts: ev.redacts,
+ }),
+ }
+ }
+}