Use ruma/ruma master, address review issues
This commit is contained in:
parent
eb5949dbc2
commit
b1e7bc77a4
5 changed files with 44 additions and 20 deletions
|
@ -1492,11 +1492,8 @@ impl BaseClient {
|
|||
AnyStateEventStub::RoomTombstone(e) => {
|
||||
event_emitter.on_room_tombstone(room, &e).await
|
||||
}
|
||||
AnyStateEventStub::RoomJoinRules(_e) => {
|
||||
// TODO is this needed ??
|
||||
|
||||
// event_emitter
|
||||
// .on_room_join_rules(room, &e).await
|
||||
AnyStateEventStub::RoomJoinRules(e) => {
|
||||
event_emitter.on_room_join_rules(room, &e).await
|
||||
}
|
||||
AnyStateEventStub::Custom(e) => {
|
||||
event_emitter
|
||||
|
|
|
@ -141,6 +141,8 @@ pub trait EventEmitter: Send + Sync {
|
|||
async fn on_room_power_levels(&self, _: SyncRoom, _: &StateEventStub<PowerLevelsEventContent>) {
|
||||
}
|
||||
/// Fires when `Client` receives a `RoomEvent::Tombstone` event.
|
||||
async fn on_room_join_rules(&self, _: SyncRoom, _: &StateEventStub<JoinRulesEventContent>) {}
|
||||
/// Fires when `Client` receives a `RoomEvent::Tombstone` event.
|
||||
async fn on_room_tombstone(&self, _: SyncRoom, _: &StateEventStub<TombstoneEventContent>) {}
|
||||
|
||||
// `RoomEvent`s from `IncomingState`
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
//! feature is enabled.
|
||||
|
||||
use std::cmp::Ordering;
|
||||
use std::ops::Deref;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::vec::IntoIter;
|
||||
|
||||
use crate::events::room::message::MessageEventContent;
|
||||
|
@ -30,6 +30,12 @@ impl Deref for MessageWrapper {
|
|||
}
|
||||
}
|
||||
|
||||
impl DerefMut for MessageWrapper {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for MessageWrapper {
|
||||
fn eq(&self, other: &MessageWrapper) -> bool {
|
||||
self.0.event_id == other.0.event_id
|
||||
|
@ -98,6 +104,10 @@ impl MessageQueue {
|
|||
pub fn iter(&self) -> impl Iterator<Item = &MessageWrapper> {
|
||||
self.msgs.iter()
|
||||
}
|
||||
|
||||
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut MessageWrapper> {
|
||||
self.msgs.iter_mut()
|
||||
}
|
||||
}
|
||||
|
||||
impl IntoIterator for MessageQueue {
|
||||
|
|
|
@ -30,6 +30,7 @@ use crate::events::room::{
|
|||
member::{MemberEventContent, MembershipChange},
|
||||
name::NameEventContent,
|
||||
power_levels::{NotificationPowerLevels, PowerLevelsEventContent},
|
||||
redaction::RedactionEventStub,
|
||||
tombstone::TombstoneEventContent,
|
||||
};
|
||||
|
||||
|
@ -39,17 +40,17 @@ use crate::events::{
|
|||
};
|
||||
|
||||
#[cfg(feature = "messages")]
|
||||
use crate::events::{room::message::MessageEventContent as MsgContent, MessageEventStub};
|
||||
use crate::events::{
|
||||
room::message::{MessageEventContent, TextMessageEventContent},
|
||||
MessageEventStub,
|
||||
};
|
||||
|
||||
use crate::identifiers::{RoomAliasId, RoomId, UserId};
|
||||
|
||||
use crate::js_int::{Int, UInt};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[cfg(feature = "messages")]
|
||||
type SentMessageEvent = MessageEventStub<MsgContent>;
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Serialize, Deserialize, Clone)]
|
||||
#[derive(Debug, Default, PartialEq, Serialize, Deserialize)]
|
||||
#[cfg_attr(test, derive(Clone))]
|
||||
/// `RoomName` allows the calculation of a text room name.
|
||||
pub struct RoomName {
|
||||
|
@ -614,10 +615,29 @@ impl Room {
|
|||
/// Returns true if `MessageQueue` was added to.
|
||||
#[cfg(feature = "messages")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "messages")))]
|
||||
pub fn handle_message(&mut self, event: &SentMessageEvent) -> bool {
|
||||
pub fn handle_message(&mut self, event: &MessageEventStub<MessageEventContent>) -> bool {
|
||||
self.messages.push(event.clone())
|
||||
}
|
||||
|
||||
/// Handle a room.redaction event and update the `MessageQueue` if necessary.
|
||||
///
|
||||
/// Returns true if `MessageQueue` was updated.
|
||||
#[cfg(feature = "messages")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "messages")))]
|
||||
pub fn handle_redaction(&mut self, event: &RedactionEventStub) -> bool {
|
||||
if let Some(msg) = self
|
||||
.messages
|
||||
.iter_mut()
|
||||
.find(|msg| event.redacts == msg.event_id)
|
||||
{
|
||||
// TODO make msg an enum or use AnyMessageEventStub enum to represent
|
||||
msg.content = MessageEventContent::Text(TextMessageEventContent::new_plain("Redacted"));
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/// Handle a room.aliases event, updating the room state if necessary.
|
||||
///
|
||||
/// Returns true if the room name changed, false otherwise.
|
||||
|
@ -722,8 +742,8 @@ impl Room {
|
|||
AnyRoomEventStub::Message(event) => match &event {
|
||||
#[cfg(feature = "messages")]
|
||||
AnyMessageEventStub::RoomMessage(event) => self.handle_message(&event),
|
||||
// TODO if a redaction event deletes one of our saved messages delete it?
|
||||
AnyMessageEventStub::RoomRedaction(_) => false,
|
||||
#[cfg(feature = "messages")]
|
||||
AnyMessageEventStub::RoomRedaction(event) => self.handle_redaction(&event),
|
||||
_ => false,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -12,13 +12,8 @@ version = "0.1.0"
|
|||
|
||||
[dependencies]
|
||||
js_int = "0.1.5"
|
||||
# ruma-api = "0.16.1"
|
||||
# ruma-client-api = "0.9.0"
|
||||
# ruma-events = "0.21.2"
|
||||
# ruma-identifiers = "0.16.1"
|
||||
|
||||
ruma = { git = "https://github.com/DevinR528/ruma", features = ["client-api", "rand"], branch = "matrix-sdk2"}
|
||||
# ruma = { path = "../../ruma/ruma", features = ["client-api", "rand"] }
|
||||
ruma = { git = "https://github.com/ruma/ruma", features = ["client-api", "rand"] }
|
||||
|
||||
instant = { version = "0.1.4", features = ["wasm-bindgen", "now"] }
|
||||
|
||||
|
|
Loading…
Reference in a new issue