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)
     }