mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-20 09:11:24 +01:00
Revert "Remove support for MSC3575 (sliding sync)"
This reverts commit d87848b9a6.
This commit is contained in:
parent
bbd0439001
commit
dd705a2bb2
9 changed files with 954 additions and 7 deletions
|
|
@ -7,6 +7,7 @@ use lru_cache::LruCache;
|
|||
use ruma::{
|
||||
events::{
|
||||
room::{
|
||||
avatar::RoomAvatarEventContent,
|
||||
history_visibility::{
|
||||
HistoryVisibility, RoomHistoryVisibilityEventContent,
|
||||
},
|
||||
|
|
@ -17,8 +18,8 @@ use ruma::{
|
|||
StateEventType,
|
||||
},
|
||||
state_res::Event,
|
||||
EventId, OwnedRoomId, OwnedServerName, OwnedUserId, RoomId, ServerName,
|
||||
UserId,
|
||||
EventId, JsOption, OwnedRoomId, OwnedServerName, OwnedUserId, RoomId,
|
||||
ServerName, UserId,
|
||||
};
|
||||
use serde_json::value::to_raw_value;
|
||||
use tracing::{error, warn};
|
||||
|
|
@ -507,6 +508,23 @@ impl Service {
|
|||
)
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub(crate) fn get_avatar(
|
||||
&self,
|
||||
room_id: &RoomId,
|
||||
) -> Result<JsOption<RoomAvatarEventContent>> {
|
||||
self.room_state_get(room_id, &StateEventType::RoomAvatar, "")?.map_or(
|
||||
Ok(JsOption::Undefined),
|
||||
|s| {
|
||||
serde_json::from_str(s.content.get()).map_err(|_| {
|
||||
Error::bad_database(
|
||||
"Invalid room avatar event in database.",
|
||||
)
|
||||
})
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
// Allowed because this function uses `services()`
|
||||
#[allow(clippy::unused_self)]
|
||||
#[tracing::instrument(skip(self), ret(level = "trace"))]
|
||||
|
|
@ -535,6 +553,24 @@ impl Service {
|
|||
.is_ok()
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub(crate) fn get_member(
|
||||
&self,
|
||||
room_id: &RoomId,
|
||||
user_id: &UserId,
|
||||
) -> Result<Option<RoomMemberEventContent>> {
|
||||
self.room_state_get(
|
||||
room_id,
|
||||
&StateEventType::RoomMember,
|
||||
user_id.as_str(),
|
||||
)?
|
||||
.map_or(Ok(None), |s| {
|
||||
serde_json::from_str(s.content.get()).map_err(|_| {
|
||||
Error::bad_database("Invalid room member event in database.")
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/// Checks if a given user can redact a given event
|
||||
///
|
||||
/// If `federation` is `true`, it allows redaction events from any user of
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue