Update dependencies and send displayname updates again
This commit is contained in:
parent
8f67c01efd
commit
551308e9a8
6 changed files with 123 additions and 112 deletions
|
@ -12,7 +12,7 @@ use ruma_client_api::{
|
|||
account::{get_username_availability, register},
|
||||
alias::get_alias,
|
||||
capabilities::get_capabilities,
|
||||
client_exchange::send_event_to_device,
|
||||
to_device::send_event_to_device,
|
||||
config::{get_global_account_data, set_global_account_data},
|
||||
directory::{self, get_public_rooms_filtered},
|
||||
filter::{self, create_filter, get_filter},
|
||||
|
@ -42,7 +42,7 @@ use ruma_client_api::{
|
|||
};
|
||||
use ruma_events::{collections::only::Event as EduEvent, EventType};
|
||||
use ruma_identifiers::{RoomId, UserId};
|
||||
use serde_json::json;
|
||||
use serde_json::{json, value::RawValue};
|
||||
|
||||
use crate::{server_server, utils, Database, MatrixResult, Ruma};
|
||||
|
||||
|
@ -105,7 +105,7 @@ pub fn register_route(
|
|||
stages: vec!["m.login.dummy".to_owned()],
|
||||
}],
|
||||
completed: vec![],
|
||||
params: json!({}),
|
||||
params: RawValue::from_string("".to_owned()).unwrap(),
|
||||
session: Some(utils::random_string(SESSION_ID_LENGTH)),
|
||||
auth_error: None,
|
||||
})));
|
||||
|
@ -185,7 +185,7 @@ pub fn register_route(
|
|||
actions: vec![
|
||||
ruma_events::push_rules::Action::Notify,
|
||||
ruma_events::push_rules::Action::SetTweak(
|
||||
ruma_events::push_rules::Tweak::Highlight { value: false },
|
||||
ruma_common::push::Tweak::Highlight(false),
|
||||
),
|
||||
],
|
||||
default: true,
|
||||
|
@ -318,10 +318,7 @@ pub fn get_pushrules_all_route() -> MatrixResult<get_pushrules_all::Response> {
|
|||
vec![push::PushRule {
|
||||
actions: vec![
|
||||
push::Action::Notify,
|
||||
push::Action::SetTweak {
|
||||
kind: push::TweakKind::Highlight,
|
||||
value: Some(false.into()),
|
||||
},
|
||||
push::Action::SetTweak(ruma_common::push::Tweak::Highlight(false))
|
||||
],
|
||||
default: true,
|
||||
enabled: true,
|
||||
|
@ -363,7 +360,7 @@ pub fn set_pushrule_route(
|
|||
actions: vec![
|
||||
ruma_events::push_rules::Action::Notify,
|
||||
ruma_events::push_rules::Action::SetTweak(
|
||||
ruma_events::push_rules::Tweak::Highlight { value: false },
|
||||
ruma_common::push::Tweak::Highlight(false),
|
||||
),
|
||||
],
|
||||
default: true,
|
||||
|
@ -467,8 +464,21 @@ pub fn set_displayname_route(
|
|||
.users
|
||||
.set_displayname(&user_id, Some(displayname.clone()))
|
||||
.unwrap();
|
||||
// TODO: send a new m.presence event with the updated displayname
|
||||
}
|
||||
|
||||
// Send a new membership event into all joined rooms
|
||||
for room_id in db.rooms.rooms_joined(&user_id) {
|
||||
db.rooms.append_pdu(
|
||||
room_id.unwrap(),
|
||||
user_id.clone(),
|
||||
EventType::RoomMember,
|
||||
json!({"membership": "join", "displayname": displayname}),
|
||||
None,
|
||||
Some(user_id.to_string()),
|
||||
&db.globals
|
||||
).unwrap();
|
||||
}
|
||||
// TODO: send a new m.presence event
|
||||
} else {
|
||||
// Send error on None
|
||||
// Synapse returns a parsing error but the spec doesn't require this
|
||||
|
@ -734,7 +744,7 @@ pub fn create_room_route(
|
|||
body: Ruma<create_room::Request>,
|
||||
) -> MatrixResult<create_room::Response> {
|
||||
// TODO: check if room is unique
|
||||
let room_id = RoomId::new(db.globals.hostname()).expect("host is valid");
|
||||
let room_id = RoomId::try_from(db.globals.hostname()).expect("host is valid");
|
||||
let user_id = body.user_id.clone().expect("user is authenticated");
|
||||
|
||||
db
|
||||
|
@ -1104,7 +1114,7 @@ pub fn create_message_event_route(
|
|||
)
|
||||
.expect("message events are always okay");
|
||||
|
||||
MatrixResult(Ok(create_message_event::Response { event_id }))
|
||||
MatrixResult(Ok(create_message_event::Response { event_id: Some(event_id) }))
|
||||
}
|
||||
|
||||
#[put(
|
||||
|
@ -1134,7 +1144,7 @@ pub fn create_state_event_for_key_route(
|
|||
)
|
||||
.unwrap();
|
||||
|
||||
MatrixResult(Ok(create_state_event_for_key::Response { event_id }))
|
||||
MatrixResult(Ok(create_state_event_for_key::Response { event_id: Some(event_id) }))
|
||||
}
|
||||
|
||||
#[put(
|
||||
|
@ -1163,7 +1173,7 @@ pub fn create_state_event_for_empty_key_route(
|
|||
)
|
||||
.unwrap();
|
||||
|
||||
MatrixResult(Ok(create_state_event_for_empty_key::Response { event_id }))
|
||||
MatrixResult(Ok(create_state_event_for_empty_key::Response { event_id: Some(event_id) }))
|
||||
}
|
||||
|
||||
#[get("/_matrix/client/r0/sync", data = "<body>")]
|
||||
|
@ -1171,7 +1181,7 @@ pub fn sync_route(
|
|||
db: State<'_, Database>,
|
||||
body: Ruma<sync_events::Request>,
|
||||
) -> MatrixResult<sync_events::Response> {
|
||||
std::thread::sleep(Duration::from_millis(100));
|
||||
std::thread::sleep(Duration::from_millis(1500));
|
||||
let user_id = body.user_id.clone().expect("user is authenticated");
|
||||
let next_batch = db.globals.current_count().unwrap().to_string();
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ impl Database {
|
|||
globals: globals::Globals::load(db.open_tree("global").unwrap(), hostname.to_owned()),
|
||||
users: users::Users {
|
||||
userid_password: db.open_tree("userid_password").unwrap(),
|
||||
userdeviceid: db.open_tree("userdeviceid").unwrap(),
|
||||
userdeviceids: db.open_tree("userdeviceids").unwrap(),
|
||||
userid_displayname: db.open_tree("userid_displayname").unwrap(),
|
||||
userid_avatarurl: db.open_tree("userid_avatarurl").unwrap(),
|
||||
userdeviceid_token: db.open_tree("userdeviceid_token").unwrap(),
|
||||
|
@ -49,8 +49,8 @@ impl Database {
|
|||
rooms: rooms::Rooms {
|
||||
edus: rooms::RoomEdus {
|
||||
roomuserid_lastread: db.open_tree("roomuserid_lastread").unwrap(),
|
||||
roomlatestid_roomlatest: db.open_tree("roomlatestid_roomlatest").unwrap(),
|
||||
roomactiveid_roomactive: db.open_tree("roomactiveid_roomactive").unwrap(),
|
||||
roomlatestid_roomlatest: db.open_tree("roomlatestid_roomlatest").unwrap(), // Read receipts
|
||||
roomactiveid_roomactive: db.open_tree("roomactiveid_roomactive").unwrap(), // Typing notifs
|
||||
},
|
||||
pduid_pdu: db.open_tree("pduid_pdu").unwrap(),
|
||||
eventid_pduid: db.open_tree("eventid_pduid").unwrap(),
|
||||
|
|
|
@ -17,7 +17,7 @@ pub struct Rooms {
|
|||
pub(super) pduid_pdu: sled::Tree, // PduId = RoomId + Count
|
||||
pub(super) eventid_pduid: sled::Tree,
|
||||
pub(super) roomid_pduleaves: sled::Tree,
|
||||
pub(super) roomstateid_pdu: sled::Tree, // Room + StateType + StateKey
|
||||
pub(super) roomstateid_pdu: sled::Tree, // RoomStateId = Room + StateType + StateKey
|
||||
|
||||
pub(super) userroomid_joined: sled::Tree,
|
||||
pub(super) roomuserid_joined: sled::Tree,
|
||||
|
@ -29,11 +29,10 @@ pub struct Rooms {
|
|||
impl Rooms {
|
||||
/// Checks if a room exists.
|
||||
pub fn exists(&self, room_id: &RoomId) -> Result<bool> {
|
||||
// Look for PDUs in that room.
|
||||
|
||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
||||
prefix.push(0xff);
|
||||
|
||||
// Look for PDUs in that room.
|
||||
Ok(self
|
||||
.pduid_pdu
|
||||
.get_gt(&prefix)?
|
||||
|
|
|
@ -6,7 +6,7 @@ pub struct Users {
|
|||
pub(super) userid_password: sled::Tree,
|
||||
pub(super) userid_displayname: sled::Tree,
|
||||
pub(super) userid_avatarurl: sled::Tree,
|
||||
pub(super) userdeviceid: sled::Tree,
|
||||
pub(super) userdeviceids: sled::Tree,
|
||||
pub(super) userdeviceid_token: sled::Tree,
|
||||
pub(super) token_userid: sled::Tree,
|
||||
}
|
||||
|
@ -63,18 +63,6 @@ impl Users {
|
|||
}
|
||||
|
||||
Ok(())
|
||||
/* TODO:
|
||||
for room_id in self.rooms_joined(user_id) {
|
||||
self.pdu_append(
|
||||
room_id.clone(),
|
||||
user_id.clone(),
|
||||
EventType::RoomMember,
|
||||
json!({"membership": "join", "displayname": displayname}),
|
||||
None,
|
||||
Some(user_id.to_string()),
|
||||
);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/// Get a the avatar_url of a user.
|
||||
|
@ -108,7 +96,7 @@ impl Users {
|
|||
key.push(0xff);
|
||||
key.extend_from_slice(device_id.as_bytes());
|
||||
|
||||
self.userdeviceid.insert(key, &[])?;
|
||||
self.userdeviceids.insert(key, &[])?;
|
||||
|
||||
self.set_token(user_id, device_id, token)?;
|
||||
|
||||
|
@ -121,7 +109,7 @@ impl Users {
|
|||
key.push(0xff);
|
||||
key.extend_from_slice(device_id.as_bytes());
|
||||
|
||||
if self.userdeviceid.get(&key)?.is_none() {
|
||||
if self.userdeviceids.get(&key)?.is_none() {
|
||||
return Err(Error::BadRequest(
|
||||
"Tried to set token for nonexistent device",
|
||||
));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue