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 296cef92c93caf5e3cfb46f996466c806e736b23..d071d439cdac00ebff5959a4e5373d27b4309fb7 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) }