diff --git a/src/api/client_server/sync.rs b/src/api/client_server/sync.rs
index f9bb5b425655abf6c3702d596c2c7f44a64660b7..2259ab514f5ec21be09a64d262c026cbc1c49e70 100644
--- a/src/api/client_server/sync.rs
+++ b/src/api/client_server/sync.rs
@@ -554,17 +554,15 @@ async fn process_room_presence_updates(
 
                 // Update existing presence event with more info
                 curr_content.presence = new_content.presence;
-                curr_content.status_msg =
-                    curr_content.status_msg.clone().or(new_content.status_msg);
+                curr_content.status_msg = new_content.status_msg.or(curr_content.status_msg.take());
                 curr_content.last_active_ago =
-                    curr_content.last_active_ago.or(new_content.last_active_ago);
+                    new_content.last_active_ago.or(curr_content.last_active_ago);
                 curr_content.displayname =
-                    curr_content.displayname.clone().or(new_content.displayname);
-                curr_content.avatar_url =
-                    curr_content.avatar_url.clone().or(new_content.avatar_url);
-                curr_content.currently_active = curr_content
+                    new_content.displayname.or(curr_content.displayname.take());
+                curr_content.avatar_url = new_content.avatar_url.or(curr_content.avatar_url.take());
+                curr_content.currently_active = new_content
                     .currently_active
-                    .or(new_content.currently_active);
+                    .or(curr_content.currently_active);
             }
         }
     }