[fractal/fractal-next] verification: Ensure correct state for user actions



commit 1062bc06db873d520081a67645332733f61ed13f
Author: Julian Sparber <julian sparber net>
Date:   Wed Jan 12 19:49:29 2022 +0100

    verification: Ensure correct state for user actions

 src/session/verification/identity_verification.rs | 40 ++++++++++++++---------
 1 file changed, 24 insertions(+), 16 deletions(-)
---
diff --git a/src/session/verification/identity_verification.rs 
b/src/session/verification/identity_verification.rs
index aa42e940..e7bb9b49 100644
--- a/src/session/verification/identity_verification.rs
+++ b/src/session/verification/identity_verification.rs
@@ -513,11 +513,13 @@ impl IdentityVerification {
     pub fn emoji_match(&self) {
         let priv_ = imp::IdentityVerification::from_instance(self);
 
-        if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
-            let result = sync_sender.try_send(Message::UserAction(UserAction::Match));
+        if self.state() == State::SasV1 {
+            if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
+                let result = sync_sender.try_send(Message::UserAction(UserAction::Match));
 
-            if let Err(error) = result {
-                error!("Failed to send message to tokio runtime: {}", error);
+                if let Err(error) = result {
+                    error!("Failed to send message to tokio runtime: {}", error);
+                }
             }
         }
     }
@@ -525,11 +527,13 @@ impl IdentityVerification {
     pub fn emoji_not_match(&self) {
         let priv_ = imp::IdentityVerification::from_instance(self);
 
-        if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
-            let result = sync_sender.try_send(Message::UserAction(UserAction::NotMatch));
+        if self.state() == State::SasV1 {
+            if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
+                let result = sync_sender.try_send(Message::UserAction(UserAction::NotMatch));
 
-            if let Err(error) = result {
-                error!("Failed to send message to tokio runtime: {}", error);
+                if let Err(error) = result {
+                    error!("Failed to send message to tokio runtime: {}", error);
+                }
             }
         }
     }
@@ -673,11 +677,13 @@ impl IdentityVerification {
     pub fn start_sas(&self) {
         let priv_ = imp::IdentityVerification::from_instance(self);
 
-        if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
-            let result = sync_sender.try_send(Message::UserAction(UserAction::StartSas));
+        if self.state() != State::SasV1 {
+            if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
+                let result = sync_sender.try_send(Message::UserAction(UserAction::StartSas));
 
-            if let Err(error) = result {
-                error!("Failed to send message to tokio runtime: {}", error);
+                if let Err(error) = result {
+                    error!("Failed to send message to tokio runtime: {}", error);
+                }
             }
         }
     }
@@ -697,10 +703,12 @@ impl IdentityVerification {
     /// Accept an incomming request
     pub fn accept(&self) {
         let priv_ = imp::IdentityVerification::from_instance(self);
-        if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
-            let result = sync_sender.try_send(Message::UserAction(UserAction::Accept));
-            if let Err(error) = result {
-                error!("Failed to send message to tokio runtime: {}", error);
+        if self.state() == State::Requested {
+            if let Some(sync_sender) = &*priv_.sync_sender.borrow() {
+                let result = sync_sender.try_send(Message::UserAction(UserAction::Accept));
+                if let Err(error) = result {
+                    error!("Failed to send message to tokio runtime: {}", error);
+                }
             }
         }
     }


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