[fractal] Get room members through matrix-sdk



commit e869b001e16654b150659c9b53c79aa78f675f24
Author: Alejandro Domínguez <adomu net-c com>
Date:   Mon Sep 7 06:08:21 2020 +0200

    Get room members through matrix-sdk

 fractal-gtk/src/appop/room.rs                      |  8 ++---
 fractal-gtk/src/backend/room.rs                    | 23 ++++++--------
 fractal-gtk/src/model/member.rs                    |  2 +-
 fractal-matrix-api/src/meson.build                 |  1 -
 fractal-matrix-api/src/r0/sync.rs                  |  1 -
 .../src/r0/sync/get_joined_members.rs              | 36 ----------------------
 6 files changed, 13 insertions(+), 58 deletions(-)
---
diff --git a/fractal-gtk/src/appop/room.rs b/fractal-gtk/src/appop/room.rs
index 7a2c9929..72907110 100644
--- a/fractal-gtk/src/appop/room.rs
+++ b/fractal-gtk/src/appop/room.rs
@@ -7,7 +7,6 @@ use log::{error, warn};
 use std::convert::TryInto;
 use std::fs::remove_file;
 use std::os::unix::fs;
-use std::thread;
 
 use gtk::prelude::*;
 
@@ -80,11 +79,10 @@ impl AppOp {
                 self.update_typing_notification();
             } else {
                 // Request all joined members for each new room
-                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 room_id = room.id.clone();
-                thread::spawn(move || {
-                    match room::get_room_members(server, access_token, room_id) {
+                RUNTIME.spawn(async move {
+                    match room::get_room_members(session_client, room_id).await {
                         Ok((room, members)) => {
                             APPOP!(set_room_members, (room, members));
                         }
diff --git a/fractal-gtk/src/backend/room.rs b/fractal-gtk/src/backend/room.rs
index 66c2ef35..d148a676 100644
--- a/fractal-gtk/src/backend/room.rs
+++ b/fractal-gtk/src/backend/room.rs
@@ -33,6 +33,7 @@ use fractal_api::api::r0::config::set_room_account_data::Request as SetRoomAccou
 use fractal_api::api::r0::filter::RoomEventFilter;
 use fractal_api::api::r0::media::create_content::Request as CreateContentRequest;
 use fractal_api::api::r0::media::create_content::Response as CreateContentResponse;
+use fractal_api::api::r0::membership::joined_members::Request as JoinedMembersRequest;
 use fractal_api::api::r0::message::get_message_events::Request as GetMessagesEventsRequest;
 use fractal_api::api::r0::redact::redact_event::Request as RedactEventRequest;
 use fractal_api::api::r0::room::create_room::Request as CreateRoomRequest;
@@ -65,9 +66,6 @@ use fractal_api::r0::pushrules::get_room_rules::request as get_room_rules;
 use fractal_api::r0::pushrules::get_room_rules::Parameters as GetRoomRulesParams;
 use fractal_api::r0::pushrules::set_room_rules::request as set_room_rules;
 use fractal_api::r0::pushrules::set_room_rules::Parameters as SetRoomRulesParams;
-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::AccessToken;
 
 use serde_json::value::to_raw_value;
@@ -204,13 +202,13 @@ pub async fn get_room_avatar(
 
 #[derive(Debug)]
 pub enum RoomMembersError {
-    Reqwest(ReqwestError),
+    Matrix(MatrixError),
     ParseUrl(UrlError),
 }
 
-impl From<ReqwestError> for RoomMembersError {
-    fn from(err: ReqwestError) -> Self {
-        Self::Reqwest(err)
+impl From<MatrixError> for RoomMembersError {
+    fn from(err: MatrixError) -> Self {
+        Self::Matrix(err)
     }
 }
 
@@ -222,15 +220,12 @@ impl From<UrlError> for RoomMembersError {
 
 impl HandleError for RoomMembersError {}
 
-pub fn get_room_members(
-    base: Url,
-    access_token: AccessToken,
+pub async fn get_room_members(
+    session_client: MatrixClient,
     room_id: RoomId,
 ) -> Result<(RoomId, Vec<Member>), RoomMembersError> {
-    let params = JoinedMembersParameters { access_token };
-
-    let request = get_joined_members(base, &room_id, &params)?;
-    let response: JoinedMembersResponse = HTTP_CLIENT.get_client().execute(request)?.json()?;
+    let request = JoinedMembersRequest::new(&room_id);
+    let response = session_client.send(request).await?;
 
     let ms = response
         .joined
diff --git a/fractal-gtk/src/model/member.rs b/fractal-gtk/src/model/member.rs
index 20d869c2..3dee7514 100644
--- a/fractal-gtk/src/model/member.rs
+++ b/fractal-gtk/src/model/member.rs
@@ -1,7 +1,7 @@
 use either::Either;
+use fractal_api::api::r0::membership::joined_members::RoomMember;
 use fractal_api::api::r0::user_directory::search_users::User;
 use fractal_api::identifiers::UserId;
-use fractal_api::r0::sync::get_joined_members::RoomMember;
 use fractal_api::url::{ParseError as UrlError, Url};
 use serde::{Deserialize, Serialize};
 use std::collections::HashMap;
diff --git a/fractal-matrix-api/src/meson.build b/fractal-matrix-api/src/meson.build
index f15e4f9f..ea08e81d 100644
--- a/fractal-matrix-api/src/meson.build
+++ b/fractal-matrix-api/src/meson.build
@@ -17,7 +17,6 @@ api_sources = files(
   'r0/profile/set_avatar_url.rs',
   'r0/profile/set_display_name.rs',
   'r0/server/domain_info.rs',
-  'r0/sync/get_joined_members.rs',
   'r0/sync/sync_events.rs',
   'r0/thirdparty/get_supported_protocols.rs',
   'r0/account.rs',
diff --git a/fractal-matrix-api/src/r0/sync.rs b/fractal-matrix-api/src/r0/sync.rs
index 54e0463f..78aeaf20 100644
--- a/fractal-matrix-api/src/r0/sync.rs
+++ b/fractal-matrix-api/src/r0/sync.rs
@@ -1,2 +1 @@
-pub mod get_joined_members;
 pub mod sync_events;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]