[fractal/fractal-next] verification: Add debug log for cross-signing key state



commit fb31c437346fae620576088d0694841e572091c5
Author: Julian Sparber <julian sparber net>
Date:   Thu Mar 17 17:57:02 2022 +0100

    verification: Add debug log for cross-signing key state

 src/session/mod.rs | 33 +++++++++++++++++++++------------
 1 file changed, 21 insertions(+), 12 deletions(-)
---
diff --git a/src/session/mod.rs b/src/session/mod.rs
index 67a5c8578..093adaa5e 100644
--- a/src/session/mod.rs
+++ b/src/session/mod.rs
@@ -486,17 +486,6 @@ impl Session {
 
         self.imp().is_ready.set(true);
 
-        let encryption = client.encryption();
-        let has_cross_signing_keys = spawn_tokio!(async move {
-            if let Some(cross_signing_status) = encryption.cross_signing_status().await {
-                cross_signing_status.has_master
-                    && cross_signing_status.has_self_signing
-                    && cross_signing_status.has_user_signing
-            } else {
-                false
-            }
-        });
-
         let encryption = client.encryption();
         let need_new_identity = spawn_tokio!(async move {
             // If there is an error just assume we don't need a new identity since
@@ -509,7 +498,7 @@ impl Session {
 
         spawn!(clone!(@weak self as obj => async move {
             let priv_ = obj.imp();
-            if !has_cross_signing_keys.await.unwrap() {
+            if !obj.has_cross_signing_keys().await {
                 if need_new_identity.await.unwrap() {
                     let encryption = obj.client().encryption();
 
@@ -764,6 +753,9 @@ impl Session {
     pub fn show_content(&self) {
         let priv_ = self.imp();
         // FIXME: we should actually check if we have now the keys
+        spawn!(clone!(@weak self as obj => async move {
+            obj.has_cross_signing_keys().await;
+        }));
         priv_.stack.set_visible_child(&*priv_.content);
         priv_.logout_on_dispose.set(false);
         if let Some(window) = self.parent_window() {
@@ -784,6 +776,23 @@ impl Session {
 
         priv_.stack.set_visible_child(&*priv_.media_viewer);
     }
+
+    async fn has_cross_signing_keys(&self) -> bool {
+        let encryption = self.client().encryption();
+        spawn_tokio!(async move {
+            if let Some(cross_signing_status) = encryption.cross_signing_status().await {
+                debug!("Cross signing keys status: {:?}", cross_signing_status);
+                cross_signing_status.has_master
+                    && cross_signing_status.has_self_signing
+                    && cross_signing_status.has_user_signing
+            } else {
+                debug!("Session doesn't have needed cross signing keys");
+                false
+            }
+        })
+        .await
+        .unwrap()
+    }
 }
 
 impl Default for Session {


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