[fractal] Get supported protocols through matrix-sdk



commit c850cb188c8f939ee190b10a541c82e0bb2cfa56
Author: Alejandro Domínguez <adomu net-c com>
Date:   Fri Sep 25 02:10:25 2020 +0200

    Get supported protocols through matrix-sdk

 fractal-gtk/src/appop/directory.rs                 | 15 +++----
 fractal-gtk/src/backend/directory.rs               | 32 ++++++--------
 fractal-matrix-api/src/meson.build                 |  2 -
 fractal-matrix-api/src/r0.rs                       |  1 -
 fractal-matrix-api/src/r0/thirdparty.rs            |  1 -
 .../src/r0/thirdparty/get_supported_protocols.rs   | 51 ----------------------
 6 files changed, 19 insertions(+), 83 deletions(-)
---
diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs
index a2cf8064..ee9f6c4c 100644
--- a/fractal-gtk/src/appop/directory.rs
+++ b/fractal-gtk/src/appop/directory.rs
@@ -1,5 +1,4 @@
 use gtk::prelude::*;
-use std::thread;
 
 use crate::backend::{directory, HandleError};
 
@@ -11,16 +10,14 @@ use crate::widgets;
 use super::RoomSearchPagination;
 use crate::model::room::Room;
 use fractal_api::directory::RoomNetwork;
-use fractal_api::r0::thirdparty::get_supported_protocols::ProtocolInstance;
+use fractal_api::thirdparty::ProtocolInstance;
 
 impl AppOp {
     pub fn init_protocols(&self) {
-        let login_data = unwrap_or_unit_return!(self.login_data.clone());
-        thread::spawn(move || {
-            match directory::protocols(
-                login_data.session_client.homeserver().clone(),
-                login_data.access_token,
-            ) {
+        let session_client =
+            unwrap_or_unit_return!(self.login_data.as_ref().map(|ld| ld.session_client.clone()));
+        RUNTIME.spawn(async move {
+            match directory::protocols(session_client).await {
                 Ok(protocols) => {
                     APPOP!(set_protocols, (protocols));
                 }
@@ -40,7 +37,7 @@ impl AppOp {
         combo.clear();
 
         for p in protocols {
-            combo.insert_with_values(None, &[0, 1], &[&p.desc, &p.id]);
+            combo.insert_with_values(None, &[0, 1], &[&p.desc, &p.network_id]);
         }
     }
 
diff --git a/fractal-gtk/src/backend/directory.rs b/fractal-gtk/src/backend/directory.rs
index 405bacbb..58c02e50 100644
--- a/fractal-gtk/src/backend/directory.rs
+++ b/fractal-gtk/src/backend/directory.rs
@@ -1,25 +1,21 @@
 use fractal_api::identifiers::{Error as IdentifierError, ServerName};
-use fractal_api::reqwest::Error as ReqwestError;
-use fractal_api::url::{ParseError as UrlError, Url};
+use fractal_api::url::ParseError as UrlError;
 use fractal_api::Client as MatrixClient;
 use fractal_api::Error as MatrixError;
 use std::convert::{TryFrom, TryInto};
 
 use crate::globals;
 
-use crate::backend::{MediaError, HTTP_CLIENT};
+use crate::backend::MediaError;
 use crate::util::cache_dir_path;
 
 use crate::model::room::Room;
 use fractal_api::api::r0::directory::get_public_rooms_filtered::Request as PublicRoomsFilteredRequest;
+use fractal_api::api::r0::thirdparty::get_protocols::Request as GetProtocolsRequest;
 use fractal_api::assign;
 use fractal_api::directory::Filter as PublicRoomsFilter;
 use fractal_api::directory::RoomNetwork;
-use fractal_api::r0::thirdparty::get_supported_protocols::request as get_supported_protocols;
-use fractal_api::r0::thirdparty::get_supported_protocols::Parameters as SupportedProtocolsParameters;
-use fractal_api::r0::thirdparty::get_supported_protocols::ProtocolInstance;
-use fractal_api::r0::thirdparty::get_supported_protocols::Response as SupportedProtocolsResponse;
-use fractal_api::r0::AccessToken;
+use fractal_api::thirdparty::ProtocolInstance;
 
 use super::{dw_media, ContentType, HandleError};
 use crate::app::App;
@@ -29,8 +25,8 @@ use crate::APPOP;
 #[derive(Debug)]
 pub struct DirectoryProtocolsError;
 
-impl From<ReqwestError> for DirectoryProtocolsError {
-    fn from(_: ReqwestError) -> Self {
+impl From<MatrixError> for DirectoryProtocolsError {
+    fn from(_: MatrixError) -> Self {
         Self
     }
 }
@@ -43,17 +39,15 @@ impl HandleError for DirectoryProtocolsError {
     }
 }
 
-pub fn protocols(
-    base: Url,
-    access_token: AccessToken,
+pub async fn protocols(
+    session_client: MatrixClient,
 ) -> Result<Vec<ProtocolInstance>, DirectoryProtocolsError> {
-    let params = SupportedProtocolsParameters { access_token };
-    let request = get_supported_protocols(base, &params)?;
-    let response: SupportedProtocolsResponse = HTTP_CLIENT.get_client().execute(request)?.json()?;
-
-    Ok(response
+    Ok(session_client
+        .send(GetProtocolsRequest::new())
+        .await?
+        .protocols
         .into_iter()
-        .flat_map(|(_, protocol)| protocol.instances.into_iter())
+        .flat_map(|(_, protocol)| protocol.instances)
         .collect())
 }
 
diff --git a/fractal-matrix-api/src/meson.build b/fractal-matrix-api/src/meson.build
index 91b4cb64..f998b126 100644
--- a/fractal-matrix-api/src/meson.build
+++ b/fractal-matrix-api/src/meson.build
@@ -12,13 +12,11 @@ api_sources = files(
   'r0/contact/request_verification_token_msisdn.rs',
   'r0/server/domain_info.rs',
   'r0/sync/sync_events.rs',
-  'r0/thirdparty/get_supported_protocols.rs',
   'r0/account.rs',
   'r0/contact.rs',
   'r0/filter.rs',
   'r0/server.rs',
   'r0/sync.rs',
-  'r0/thirdparty.rs',
   'identity.rs',
   'lib.rs',
   'r0.rs',
diff --git a/fractal-matrix-api/src/r0.rs b/fractal-matrix-api/src/r0.rs
index e658cd7d..fc097102 100644
--- a/fractal-matrix-api/src/r0.rs
+++ b/fractal-matrix-api/src/r0.rs
@@ -3,7 +3,6 @@ pub mod contact;
 pub mod filter;
 pub mod server;
 pub mod sync;
-pub mod thirdparty;
 
 use serde::{Deserialize, Serialize, Serializer};
 use std::convert::TryFrom;


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