[fractal] Mark favourite rooms through matrix-sdk
- From: Alexandre Franke <afranke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] Mark favourite rooms through matrix-sdk
- Date: Tue, 1 Dec 2020 20:22:00 +0000 (UTC)
commit 82a128dd556d1a9bab6db6d00dec62c1eaa7cac8
Author: Alejandro DomÃnguez <adomu net-c com>
Date: Mon Sep 7 01:52:36 2020 +0200
Mark favourite rooms through matrix-sdk
fractal-gtk/src/appop/room.rs | 7 ++---
fractal-gtk/src/backend/room.rs | 49 +++++++++++++++--------------
fractal-matrix-api/src/meson.build | 3 --
fractal-matrix-api/src/r0.rs | 1 -
fractal-matrix-api/src/r0/tag.rs | 2 --
fractal-matrix-api/src/r0/tag/create_tag.rs | 37 ----------------------
fractal-matrix-api/src/r0/tag/delete_tag.rs | 29 -----------------
7 files changed, 29 insertions(+), 99 deletions(-)
---
diff --git a/fractal-gtk/src/appop/room.rs b/fractal-gtk/src/appop/room.rs
index a53ad1da..b05adda9 100644
--- a/fractal-gtk/src/appop/room.rs
+++ b/fractal-gtk/src/appop/room.rs
@@ -148,11 +148,10 @@ impl AppOp {
container.add(self.roomlist.widget());
self.roomlist.connect_fav(move |room, tofav| {
- let server = login_data.session_client.homeserver().clone();
- let access_token = login_data.access_token.clone();
+ let session_client = login_data.session_client.clone();
let uid = login_data.uid.clone();
- thread::spawn(move || {
- match room::add_to_fav(server, access_token, uid, room.id, tofav) {
+ RUNTIME.spawn(async move {
+ match room::add_to_fav(session_client, &uid, room.id, tofav).await {
Ok((r, tofav)) => {
APPOP!(added_to_fav, (r, tofav));
}
diff --git a/fractal-gtk/src/backend/room.rs b/fractal-gtk/src/backend/room.rs
index 229db6eb..ec41a1dd 100644
--- a/fractal-gtk/src/backend/room.rs
+++ b/fractal-gtk/src/backend/room.rs
@@ -39,12 +39,15 @@ use fractal_api::api::r0::room::create_room::Request as CreateRoomRequest;
use fractal_api::api::r0::room::create_room::RoomPreset;
use fractal_api::api::r0::room::Visibility;
use fractal_api::api::r0::state::send_state_event_for_key::Request as SendStateEventForKeyRequest;
+use fractal_api::api::r0::tag::create_tag::Request as CreateTagRequest;
+use fractal_api::api::r0::tag::delete_tag::Request as DeleteTagRequest;
use fractal_api::api::r0::typing::create_typing_event::Typing;
use fractal_api::assign;
use fractal_api::events::room::avatar::AvatarEventContent;
use fractal_api::events::room::history_visibility::HistoryVisibility;
use fractal_api::events::room::history_visibility::HistoryVisibilityEventContent;
use fractal_api::events::room::message::MessageEventContent;
+use fractal_api::events::tag::TagInfo;
use fractal_api::events::AnyBasicEventContent;
use fractal_api::events::AnyInitialStateEvent;
use fractal_api::events::AnyMessageEventContent;
@@ -65,11 +68,6 @@ use fractal_api::r0::state::get_state_events_for_key::Parameters as GetStateEven
use fractal_api::r0::sync::get_joined_members::request as get_joined_members;
use fractal_api::r0::sync::get_joined_members::Parameters as JoinedMembersParameters;
use fractal_api::r0::sync::get_joined_members::Response as JoinedMembersResponse;
-use fractal_api::r0::tag::create_tag::request as create_tag;
-use fractal_api::r0::tag::create_tag::Body as CreateTagBody;
-use fractal_api::r0::tag::create_tag::Parameters as CreateTagParameters;
-use fractal_api::r0::tag::delete_tag::request as delete_tag;
-use fractal_api::r0::tag::delete_tag::Parameters as DeleteTagParameters;
use fractal_api::r0::AccessToken;
use serde_json::value::to_raw_value;
@@ -777,35 +775,40 @@ pub async fn direct_chat(
}
#[derive(Debug)]
-pub struct AddedToFavError(ReqwestError);
+pub struct AddedToFavError(MatrixError);
-impl From<ReqwestError> for AddedToFavError {
- fn from(err: ReqwestError) -> Self {
+impl From<MatrixError> for AddedToFavError {
+ fn from(err: MatrixError) -> Self {
Self(err)
}
}
impl HandleError for AddedToFavError {}
-pub fn add_to_fav(
- base: Url,
- access_token: AccessToken,
- user_id: UserId,
- room_id: RoomId,
+pub async fn add_to_fav(
+ session_client: MatrixClient,
+ user_id: &UserId,
+ rid: RoomId,
tofav: bool,
) -> Result<(RoomId, bool), AddedToFavError> {
- let request = if tofav {
- let params = CreateTagParameters { access_token };
- let body = CreateTagBody { order: Some(0.5) };
- create_tag(base, &user_id, &room_id, "m.favourite", ¶ms, &body)
+ let tag = "m.favourite";
+ let room_id = &rid;
+ if tofav {
+ let request = CreateTagRequest::new(
+ user_id,
+ room_id,
+ tag,
+ assign!(TagInfo::new(), {
+ order: Some(0.5),
+ }),
+ );
+ session_client.send(request).await?;
} else {
- let params = DeleteTagParameters { access_token };
- delete_tag(base, &user_id, &room_id, "m.favourite", ¶ms)
- }?;
-
- HTTP_CLIENT.get_client().execute(request)?;
+ let request = DeleteTagRequest::new(user_id, room_id, tag);
+ session_client.send(request).await?;
+ }
- Ok((room_id, tofav))
+ Ok((rid, tofav))
}
#[derive(Debug)]
diff --git a/fractal-matrix-api/src/meson.build b/fractal-matrix-api/src/meson.build
index dff355d1..3d51bdd1 100644
--- a/fractal-matrix-api/src/meson.build
+++ b/fractal-matrix-api/src/meson.build
@@ -21,8 +21,6 @@ api_sources = files(
'r0/state/get_state_events_for_key.rs',
'r0/sync/get_joined_members.rs',
'r0/sync/sync_events.rs',
- 'r0/tag/create_tag.rs',
- 'r0/tag/delete_tag.rs',
'r0/thirdparty/get_supported_protocols.rs',
'r0/account.rs',
'r0/contact.rs',
@@ -32,7 +30,6 @@ api_sources = files(
'r0/server.rs',
'r0/state.rs',
'r0/sync.rs',
- 'r0/tag.rs',
'r0/thirdparty.rs',
'identity.rs',
'lib.rs',
diff --git a/fractal-matrix-api/src/r0.rs b/fractal-matrix-api/src/r0.rs
index ef6e3c07..1595dfbe 100644
--- a/fractal-matrix-api/src/r0.rs
+++ b/fractal-matrix-api/src/r0.rs
@@ -7,7 +7,6 @@ pub mod pushrules;
pub mod server;
pub mod state;
pub mod sync;
-pub mod tag;
pub mod thirdparty;
use serde::{Deserialize, Serialize, Serializer};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]