Skip to content

Commit 52deff1

Browse files
committed
fix(sdk): Move set/remove tag methods to room::Common
1 parent c79e62d commit 52deff1

File tree

2 files changed

+52
-54
lines changed

2 files changed

+52
-54
lines changed

crates/matrix-sdk/src/room/common.rs

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ use ruma::{
77
membership::{get_member_events, join_room_by_id, leave_room},
88
message::get_message_events,
99
room::get_room_event,
10+
tag::{create_tag, delete_tag},
1011
},
1112
events::{
12-
room::history_visibility::HistoryVisibility, AnyStateEvent, AnySyncStateEvent, EventType,
13+
room::history_visibility::HistoryVisibility, tag::TagInfo, AnyStateEvent,
14+
AnySyncStateEvent, EventType,
1315
},
1416
serde::Raw,
1517
EventId, UserId,
@@ -18,7 +20,7 @@ use ruma::{
1820
use crate::{
1921
media::{MediaFormat, MediaRequest, MediaType},
2022
room::RoomType,
21-
BaseRoom, Client, Result, RoomMember,
23+
BaseRoom, Client, HttpError, HttpResult, Result, RoomMember,
2224
};
2325

2426
/// A struct containing methods that are common for Joined, Invited and Left
@@ -444,4 +446,50 @@ impl Common {
444446

445447
Ok(true)
446448
}
449+
450+
/// Adds a tag to the room, or updates it if it already exists.
451+
///
452+
/// Returns the [`create_tag::Response`] from the server.
453+
///
454+
/// # Arguments
455+
/// * `tag` - The tag to add or update.
456+
///
457+
/// * `tag_info` - Information about the tag, generally containing the
458+
/// `order` parameter.
459+
///
460+
/// # Example
461+
///
462+
/// ```no_run
463+
/// # use ruma::events::tag::TagInfo;
464+
/// # futures::executor::block_on(async {
465+
/// # let homeserver = url::Url::parse("http://localhost:8080")?;
466+
/// # let mut client = matrix_sdk::Client::new(homeserver)?;
467+
/// # let room_id = matrix_sdk::ruma::room_id!("!test:localhost");
468+
/// use matrix_sdk::ruma::events::tag::TagInfo;
469+
///
470+
/// if let Some(room) = client.get_joined_room(&room_id) {
471+
/// let mut tag_info = TagInfo::new();
472+
/// tag_info.order = Some(0.9);
473+
///
474+
/// room.set_tag("u.work", tag_info ).await?;
475+
/// }
476+
/// # Result::<_, matrix_sdk::Error>::Ok(()) });
477+
/// ```
478+
pub async fn set_tag(&self, tag: &str, tag_info: TagInfo) -> HttpResult<create_tag::Response> {
479+
let user_id = self.client.user_id().await.ok_or(HttpError::AuthenticationRequired)?;
480+
let request = create_tag::Request::new(&user_id, self.inner.room_id(), tag, tag_info);
481+
self.client.send(request, None).await
482+
}
483+
484+
/// Removes a tag from the room.
485+
///
486+
/// Returns the [`delete_tag::Response`] from the server.
487+
///
488+
/// # Arguments
489+
/// * `tag` - The tag to remove.
490+
pub async fn remove_tag(&self, tag: &str) -> HttpResult<delete_tag::Response> {
491+
let user_id = self.client.user_id().await.ok_or(HttpError::AuthenticationRequired)?;
492+
let request = delete_tag::Request::new(&user_id, self.inner.room_id(), tag);
493+
self.client.send(request, None).await
494+
}
447495
}

crates/matrix-sdk/src/room/joined.rs

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,10 @@ use ruma::{
2121
receipt::create_receipt,
2222
redact::redact_event,
2323
state::send_state_event,
24-
tag::{create_tag, delete_tag},
2524
typing::create_typing_event::{Request as TypingRequest, Typing},
2625
},
2726
assign,
28-
events::{
29-
room::message::RoomMessageEventContent, tag::TagInfo, MessageEventContent,
30-
StateEventContent,
31-
},
27+
events::{room::message::RoomMessageEventContent, MessageEventContent, StateEventContent},
3228
receipt::ReceiptType,
3329
serde::Raw,
3430
EventId, UserId,
@@ -38,7 +34,7 @@ use tracing::debug;
3834
#[cfg(feature = "encryption")]
3935
use tracing::instrument;
4036

41-
use crate::{error::HttpResult, room::Common, BaseRoom, Client, HttpError, Result, RoomType};
37+
use crate::{error::HttpResult, room::Common, BaseRoom, Client, Result, RoomType};
4238

4339
const TYPING_NOTICE_TIMEOUT: Duration = Duration::from_secs(4);
4440
const TYPING_NOTICE_RESEND_TIMEOUT: Duration = Duration::from_secs(3);
@@ -811,50 +807,4 @@ impl Joined {
811807

812808
self.client.send(request, None).await
813809
}
814-
815-
/// Adds a tag to the room, or updates it if it already exists.
816-
///
817-
/// Returns the [`create_tag::Response`] from the server.
818-
///
819-
/// # Arguments
820-
/// * `tag` - The tag to add or update.
821-
///
822-
/// * `tag_info` - Information about the tag, generally containing the
823-
/// `order` parameter.
824-
///
825-
/// # Example
826-
///
827-
/// ```no_run
828-
/// # use ruma::events::tag::TagInfo;
829-
/// # futures::executor::block_on(async {
830-
/// # let homeserver = url::Url::parse("http://localhost:8080")?;
831-
/// # let mut client = matrix_sdk::Client::new(homeserver)?;
832-
/// # let room_id = matrix_sdk::ruma::room_id!("!test:localhost");
833-
/// use matrix_sdk::ruma::events::tag::TagInfo;
834-
///
835-
/// if let Some(room) = client.get_joined_room(&room_id) {
836-
/// let mut tag_info = TagInfo::new();
837-
/// tag_info.order = Some(0.9);
838-
///
839-
/// room.set_tag("u.work", tag_info ).await?;
840-
/// }
841-
/// # Result::<_, matrix_sdk::Error>::Ok(()) });
842-
/// ```
843-
pub async fn set_tag(&self, tag: &str, tag_info: TagInfo) -> HttpResult<create_tag::Response> {
844-
let user_id = self.client.user_id().await.ok_or(HttpError::AuthenticationRequired)?;
845-
let request = create_tag::Request::new(&user_id, self.inner.room_id(), tag, tag_info);
846-
self.client.send(request, None).await
847-
}
848-
849-
/// Removes a tag from the room.
850-
///
851-
/// Returns the [`delete_tag::Response`] from the server.
852-
///
853-
/// # Arguments
854-
/// * `tag` - The tag to remove.
855-
pub async fn remove_tag(&self, tag: &str) -> HttpResult<delete_tag::Response> {
856-
let user_id = self.client.user_id().await.ok_or(HttpError::AuthenticationRequired)?;
857-
let request = delete_tag::Request::new(&user_id, self.inner.room_id(), tag);
858-
self.client.send(request, None).await
859-
}
860810
}

0 commit comments

Comments
 (0)