Skip to content
Snippets Groups Projects
Commit 7a0ab9f7 authored by Adrien Béraud's avatar Adrien Béraud Committed by Adrien Béraud
Browse files

contacts: remove status cache, prevent dead state

Change-Id: I7848c6b1e087d0a81820b031a889275edbf1b2a7
parent a7c410ee
No related branches found
No related tags found
No related merge requests found
......@@ -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)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment