[fractal/sync-matrix-sdk] Make join_to_room shareable, mutable and sync



commit 32c8282c26887c7bb67ad46ff8436da7bc7820a4
Author: Alejandro Domínguez <adomu net-c com>
Date:   Wed Dec 2 18:29:04 2020 +0100

    Make join_to_room shareable, mutable and sync

 fractal-gtk/src/appop/mod.rs  | 4 ++--
 fractal-gtk/src/appop/room.rs | 2 +-
 fractal-gtk/src/appop/sync.rs | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/fractal-gtk/src/appop/mod.rs b/fractal-gtk/src/appop/mod.rs
index 59b77d5f..e99c4fdc 100644
--- a/fractal-gtk/src/appop/mod.rs
+++ b/fractal-gtk/src/appop/mod.rs
@@ -92,7 +92,7 @@ pub struct AppOp {
     pub login_data: Option<LoginData>,
 
     pub active_room: Option<RoomId>,
-    pub join_to_room: Option<RoomId>,
+    pub join_to_room: Arc<Mutex<Option<RoomId>>>,
     pub rooms: RoomList,
     pub room_settings: Option<widgets::RoomSettings>,
     pub history: Option<widgets::RoomHistory>,
@@ -136,7 +136,7 @@ impl AppOp {
         AppOp {
             ui,
             active_room: None,
-            join_to_room: None,
+            join_to_room: Arc::new(Mutex::new(None)),
             rooms: HashMap::new(),
             room_settings: None,
             history: None,
diff --git a/fractal-gtk/src/appop/room.rs b/fractal-gtk/src/appop/room.rs
index e21f561d..cc681542 100644
--- a/fractal-gtk/src/appop/room.rs
+++ b/fractal-gtk/src/appop/room.rs
@@ -174,7 +174,7 @@ impl AppOp {
     }
 
     pub fn set_join_to_room(&mut self, jtr: Option<RoomId>) {
-        self.join_to_room = jtr;
+        *self.join_to_room.lock().unwrap() = jtr;
     }
 
     pub fn set_active_room_by_id(&mut self, id: RoomId) {
diff --git a/fractal-gtk/src/appop/sync.rs b/fractal-gtk/src/appop/sync.rs
index 9228a9bb..fb29e980 100644
--- a/fractal-gtk/src/appop/sync.rs
+++ b/fractal-gtk/src/appop/sync.rs
@@ -94,11 +94,11 @@ impl AppOp {
                             }
                         } else {
                             let rooms = sync_ret.rooms;
-                            let jtr = join_to_room.and_then(|jtr| {
+                            let jtr = join_to_room.lock().unwrap().as_ref().and_then(|jtr| {
                                 rooms
                                     .iter()
                                     .map(|room| &room.id)
-                                    .find(|rid| **rid == jtr)
+                                    .find(|rid| *rid == jtr)
                                     .cloned()
                             });
                             APPOP!(set_rooms, (rooms, clear_room_list));


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