[fractal] Get room members through matrix-sdk
- From: Alexandre Franke <afranke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] Get room members through matrix-sdk
- Date: Tue, 1 Dec 2020 20:22:00 +0000 (UTC)
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, ¶ms)?;
- 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]