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