mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-06-26 21:36:37 +02:00
Add option to select which event to set the state at to
This commit is contained in:
parent
6e16a6ef8f
commit
9fcda9649c
2 changed files with 27 additions and 15 deletions
|
@ -239,10 +239,11 @@ pub(super) async fn get_remote_pdu(
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
| Err(e) =>
|
| Err(e) => {
|
||||||
return Err!(
|
return Err!(
|
||||||
"Remote server did not have PDU or failed sending request to remote server: {e}"
|
"Remote server did not have PDU or failed sending request to remote server: {e}"
|
||||||
),
|
);
|
||||||
|
},
|
||||||
| Ok(response) => {
|
| Ok(response) => {
|
||||||
let json: CanonicalJsonObject =
|
let json: CanonicalJsonObject =
|
||||||
serde_json::from_str(response.pdu.get()).map_err(|e| {
|
serde_json::from_str(response.pdu.get()).map_err(|e| {
|
||||||
|
@ -384,8 +385,9 @@ pub(super) async fn change_log_level(&self, filter: Option<String>, reset: bool)
|
||||||
.reload
|
.reload
|
||||||
.reload(&old_filter_layer, Some(handles))
|
.reload(&old_filter_layer, Some(handles))
|
||||||
{
|
{
|
||||||
| Err(e) =>
|
| Err(e) => {
|
||||||
return Err!("Failed to modify and reload the global tracing log level: {e}"),
|
return Err!("Failed to modify and reload the global tracing log level: {e}");
|
||||||
|
},
|
||||||
| Ok(()) => {
|
| Ok(()) => {
|
||||||
let value = &self.services.server.config.log;
|
let value = &self.services.server.config.log;
|
||||||
let out = format!("Successfully changed log level back to config value {value}");
|
let out = format!("Successfully changed log level back to config value {value}");
|
||||||
|
@ -408,8 +410,9 @@ pub(super) async fn change_log_level(&self, filter: Option<String>, reset: bool)
|
||||||
.reload(&new_filter_layer, Some(handles))
|
.reload(&new_filter_layer, Some(handles))
|
||||||
{
|
{
|
||||||
| Ok(()) => return self.write_str("Successfully changed log level").await,
|
| Ok(()) => return self.write_str("Successfully changed log level").await,
|
||||||
| Err(e) =>
|
| Err(e) => {
|
||||||
return Err!("Failed to modify and reload the global tracing log level: {e}"),
|
return Err!("Failed to modify and reload the global tracing log level: {e}");
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,7 +430,7 @@ pub(super) async fn sign_json(&self) -> Result {
|
||||||
|
|
||||||
let string = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n");
|
let string = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n");
|
||||||
match serde_json::from_str(&string) {
|
match serde_json::from_str(&string) {
|
||||||
| Err(e) => return Err!("Invalid json: {e}"),
|
| Err(e) => return Err!("Infirst_pdu.event_id.clone()valid json: {e}"),
|
||||||
| Ok(mut value) => {
|
| Ok(mut value) => {
|
||||||
self.services.server_keys.sign_json(&mut value)?;
|
self.services.server_keys.sign_json(&mut value)?;
|
||||||
let json_text = serde_json::to_string_pretty(&value)?;
|
let json_text = serde_json::to_string_pretty(&value)?;
|
||||||
|
@ -529,6 +532,7 @@ pub(super) async fn force_set_room_state_from_server(
|
||||||
&self,
|
&self,
|
||||||
room_id: OwnedRoomId,
|
room_id: OwnedRoomId,
|
||||||
server_name: OwnedServerName,
|
server_name: OwnedServerName,
|
||||||
|
at_event: Option<OwnedEventId>,
|
||||||
) -> Result {
|
) -> Result {
|
||||||
if !self
|
if !self
|
||||||
.services
|
.services
|
||||||
|
@ -540,13 +544,18 @@ pub(super) async fn force_set_room_state_from_server(
|
||||||
return Err!("We are not participating in the room / we don't know about the room ID.");
|
return Err!("We are not participating in the room / we don't know about the room ID.");
|
||||||
}
|
}
|
||||||
|
|
||||||
let first_pdu = self
|
let at_event_id = match at_event {
|
||||||
|
| Some(event_id) => event_id,
|
||||||
|
| None => self
|
||||||
.services
|
.services
|
||||||
.rooms
|
.rooms
|
||||||
.timeline
|
.timeline
|
||||||
.latest_pdu_in_room(&room_id)
|
.latest_pdu_in_room(&room_id)
|
||||||
.await
|
.await
|
||||||
.map_err(|_| err!(Database("Failed to find the latest PDU in database")))?;
|
.map_err(|_| err!(Database("Failed to find the latest PDU in database")))?
|
||||||
|
.event_id
|
||||||
|
.clone(),
|
||||||
|
};
|
||||||
|
|
||||||
let room_version = self.services.rooms.state.get_room_version(&room_id).await?;
|
let room_version = self.services.rooms.state.get_room_version(&room_id).await?;
|
||||||
|
|
||||||
|
@ -557,7 +566,7 @@ pub(super) async fn force_set_room_state_from_server(
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(&server_name, get_room_state::v1::Request {
|
.send_federation_request(&server_name, get_room_state::v1::Request {
|
||||||
room_id: room_id.clone(),
|
room_id: room_id.clone(),
|
||||||
event_id: first_pdu.event_id.clone(),
|
event_id: at_event_id,
|
||||||
})
|
})
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,9 @@ pub(super) enum DebugCommand {
|
||||||
room_id: OwnedRoomId,
|
room_id: OwnedRoomId,
|
||||||
/// The server we will use to query the room state for
|
/// The server we will use to query the room state for
|
||||||
server_name: OwnedServerName,
|
server_name: OwnedServerName,
|
||||||
|
/// The event ID of the latest known PDU in the room. Will be found
|
||||||
|
/// automatically if not provided.
|
||||||
|
event_id: Option<OwnedEventId>,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// - Runs a server name through conduwuit's true destination resolution
|
/// - Runs a server name through conduwuit's true destination resolution
|
||||||
|
|
Loading…
Add table
Reference in a new issue