From 7a0ab9f730221064a7ddbc401833f0b7aa667e1c Mon Sep 17 00:00:00 2001
From: Adrien Beraud <adrien.beraud@savoirfairelinux.com>
Date: Mon, 20 Jan 2025 13:30:06 -0500
Subject: [PATCH] contacts: remove status cache, prevent dead state

Change-Id: I7848c6b1e087d0a81820b031a889275edbf1b2a7
---
 .../src/main/kotlin/net/jami/model/Contact.kt              | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Contact.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Contact.kt
index 296cef92c..d071d439c 100644
--- a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Contact.kt
+++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/Contact.kt
@@ -30,8 +30,6 @@ class Contact constructor(val uri: Uri, val isUser: Boolean = false) {
 
     var username: Single<String>? = null
     var presenceUpdates: Observable<PresenceStatus>? = null
-    /** Cache presence in case the daemon emits presence updates without subscription */
-    private var cachedPresence: PresenceStatus = PresenceStatus.OFFLINE
     private var mContactPresenceEmitter: Emitter<PresenceStatus>? = null
     private val profileSubject: Subject<Single<Profile>> = BehaviorSubject.create()
     val profile: Observable<Profile> = profileSubject.switchMapSingle { single -> single }
@@ -66,12 +64,14 @@ class Contact constructor(val uri: Uri, val isUser: Boolean = false) {
         get() = mContactUpdates
 
     fun setPresenceEmitter(emitter: Emitter<PresenceStatus>?) {
-        emitter?.onNext(cachedPresence)
         mContactPresenceEmitter?.let { e ->
             if (e != emitter)
                 e.onComplete()
         }
         mContactPresenceEmitter = emitter
+        if (emitter == null) {
+            presenceUpdates = null
+        }
     }
 
     enum class PresenceStatus {
@@ -81,7 +81,6 @@ class Contact constructor(val uri: Uri, val isUser: Boolean = false) {
     }
 
     fun setPresence(present: PresenceStatus) {
-        cachedPresence = present
         mContactPresenceEmitter?.onNext(present)
     }
 
-- 
GitLab