add optional txn_id to room_send, add docs to room_messages
parent
0d8702b292
commit
fb10e9bf87
|
@ -479,15 +479,15 @@ impl AsyncClient {
|
|||
/// ```ignore
|
||||
/// use matrix_sdk::{AsyncClient, RoomBuilder};
|
||||
///
|
||||
/// let mut bldr = RoomBuilder::default();
|
||||
/// bldr.creation_content(false)
|
||||
/// let mut builder = RoomBuilder::default();
|
||||
/// builder.creation_content(false)
|
||||
/// .initial_state(vec![])
|
||||
/// .visibility(Visibility::Public)
|
||||
/// .name("name")
|
||||
/// .room_version("v1.0");
|
||||
///
|
||||
/// let mut cli = AsyncClient::new(homeserver, Some(session)).unwrap();
|
||||
/// assert!(cli.create_room(bldr).await.is_ok());
|
||||
/// assert!(cli.create_room(builder).await.is_ok());
|
||||
/// ```
|
||||
///
|
||||
pub async fn create_room<R: Into<create_room::Request>>(
|
||||
|
@ -505,25 +505,27 @@ impl AsyncClient {
|
|||
/// # Arguments
|
||||
///
|
||||
/// * request - The easiest way to create a `Request` is using the `GetMessageBuilder`
|
||||
///
|
||||
/// # Examples
|
||||
/// ```ignore
|
||||
/// use matrix_sdk::{AsyncClient, RoomBuilder};
|
||||
///
|
||||
/// let mut builder = RoomMessageBuilder::new();
|
||||
/// builder.room_id(RoomId::try_from("!roomid:example.com").unwrap())
|
||||
/// .from("t47429-4392820_219380_26003_2265".to_string())
|
||||
/// .to("t4357353_219380_26003_2265".to_string())
|
||||
/// .direction(Direction::Backward)
|
||||
/// .limit(UInt::new(10).unwrap());
|
||||
///
|
||||
/// let mut cli = AsyncClient::new(homeserver, Some(session)).unwrap();
|
||||
/// assert!(cli.create_room(builder).await.is_ok());
|
||||
/// ```
|
||||
pub async fn room_messages<R: Into<get_message_events::Request>>(
|
||||
&mut self,
|
||||
request: R,
|
||||
) -> Result<get_message_events::IncomingResponse> {
|
||||
let req = request.into();
|
||||
let room_id = req.room_id.clone();
|
||||
let mut res = self.send(req).await?;
|
||||
let mut client = self.base_client.write().await;
|
||||
// TODO should we support this event? to keep emitting these msg events this is needed
|
||||
for mut event in &mut res.chunk {
|
||||
client
|
||||
.receive_joined_timeline_event(&room_id, &mut event)
|
||||
.await;
|
||||
|
||||
if let EventResult::Ok(e) = event {
|
||||
client.emit_timeline_event(&room_id, e).await;
|
||||
}
|
||||
}
|
||||
Ok(res)
|
||||
self.send(req).await
|
||||
}
|
||||
|
||||
/// Synchronize the client's state with the latest state on the server.
|
||||
|
@ -827,6 +829,9 @@ impl AsyncClient {
|
|||
/// * `room_id` - The id of the room that should receive the message.
|
||||
///
|
||||
/// * `content` - The content of the message event.
|
||||
///
|
||||
/// * `txn_id` - A unique `Uuid` that can be attached to a `MessageEvent` held
|
||||
/// in it's unsigned field as `transaction_id`.
|
||||
///
|
||||
/// # Example
|
||||
/// ```no_run
|
||||
|
@ -842,21 +847,23 @@ impl AsyncClient {
|
|||
/// # let homeserver = Url::parse("http://localhost:8080").unwrap();
|
||||
/// # let mut client = AsyncClient::new(homeserver, None).unwrap();
|
||||
/// # let room_id = RoomId::try_from("!test:localhost").unwrap();
|
||||
///
|
||||
/// use uuid::Uuid;
|
||||
///
|
||||
/// let content = MessageEventContent::Text(TextMessageEventContent {
|
||||
/// body: "Hello world".to_owned(),
|
||||
/// format: None,
|
||||
/// formatted_body: None,
|
||||
/// relates_to: None,
|
||||
/// });
|
||||
///
|
||||
/// client.room_send(&room_id, content).await.unwrap();
|
||||
/// let txn_id = Uuid::new_v4();
|
||||
/// client.room_send(&room_id, content, Some(uuid)).await.unwrap();
|
||||
/// })
|
||||
/// ```
|
||||
pub async fn room_send(
|
||||
&mut self,
|
||||
room_id: &RoomId,
|
||||
#[allow(unused_mut)] mut content: MessageEventContent,
|
||||
txn_id: Option<Uuid>,
|
||||
) -> Result<create_message_event::Response> {
|
||||
#[allow(unused_mut)]
|
||||
let mut event_type = EventType::RoomMessage;
|
||||
|
@ -915,7 +922,7 @@ impl AsyncClient {
|
|||
let request = create_message_event::Request {
|
||||
room_id: room_id.clone(),
|
||||
event_type,
|
||||
txn_id: Uuid::new_v4().to_string(),
|
||||
txn_id: txn_id.unwrap_or(Uuid::new_v4()).to_string(),
|
||||
data: content,
|
||||
};
|
||||
|
||||
|
|
|
@ -23,14 +23,14 @@ use js_int::UInt;
|
|||
/// # let homeserver = Url::parse("http://example.com").unwrap();
|
||||
/// # let mut rt = tokio::runtime::Runtime::new().unwrap();
|
||||
/// # rt.block_on(async {
|
||||
/// let mut bldr = RoomBuilder::default();
|
||||
/// bldr.creation_content(false)
|
||||
/// let mut builder = RoomBuilder::default();
|
||||
/// builder.creation_content(false)
|
||||
/// .initial_state(vec![])
|
||||
/// .visibility(Visibility::Public)
|
||||
/// .name("name")
|
||||
/// .room_version("v1.0");
|
||||
/// let mut cli = AsyncClient::new(homeserver, None).unwrap();
|
||||
/// cli.create_room(bldr).await;
|
||||
/// cli.create_room(builder).await;
|
||||
/// # })
|
||||
/// ```
|
||||
#[derive(Clone, Default)]
|
||||
|
@ -218,12 +218,12 @@ impl RoomMessageBuilder {
|
|||
/// # let last_sync_token = "".to_string();;
|
||||
/// let mut cli = AsyncClient::new(homeserver, None).unwrap();
|
||||
///
|
||||
/// let mut bldr = RoomMessageBuilder::new();
|
||||
/// bldr.room_id(room_id)
|
||||
/// let mut builder = RoomMessageBuilder::new();
|
||||
/// builder.room_id(room_id)
|
||||
/// .from(last_sync_token)
|
||||
/// .direction(Direction::Forward);
|
||||
///
|
||||
/// cli.room_messages(bldr).await.is_err();
|
||||
/// cli.room_messages(builder).await.is_err();
|
||||
/// # })
|
||||
/// ```
|
||||
pub fn new() -> Self {
|
||||
|
@ -314,8 +314,8 @@ mod test {
|
|||
device_id: "DEVICEID".to_owned(),
|
||||
};
|
||||
|
||||
let mut bldr = RoomBuilder::new();
|
||||
bldr.creation_content(false)
|
||||
let mut builder = RoomBuilder::new();
|
||||
builder.creation_content(false)
|
||||
.initial_state(vec![])
|
||||
.visibility(Visibility::Public)
|
||||
.name("room_name")
|
||||
|
@ -341,7 +341,7 @@ mod test {
|
|||
.topic("room topic")
|
||||
.visibility(Visibility::Private);
|
||||
let mut cli = AsyncClient::new(homeserver, Some(session)).unwrap();
|
||||
assert!(cli.create_room(bldr).await.is_ok());
|
||||
assert!(cli.create_room(builder).await.is_ok());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -362,8 +362,8 @@ mod test {
|
|||
device_id: "DEVICEID".to_owned(),
|
||||
};
|
||||
|
||||
let mut bldr = RoomMessageBuilder::new();
|
||||
bldr.room_id(RoomId::try_from("!roomid:example.com").unwrap())
|
||||
let mut builder = RoomMessageBuilder::new();
|
||||
builder.room_id(RoomId::try_from("!roomid:example.com").unwrap())
|
||||
.from("t47429-4392820_219380_26003_2265".to_string())
|
||||
.to("t4357353_219380_26003_2265".to_string())
|
||||
.direction(Direction::Backward)
|
||||
|
@ -372,6 +372,6 @@ mod test {
|
|||
// .filter(RoomEventFilter::default());
|
||||
|
||||
let mut cli = AsyncClient::new(homeserver, Some(session)).unwrap();
|
||||
assert!(cli.room_messages(bldr).await.is_ok());
|
||||
assert!(cli.room_messages(builder).await.is_ok());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue