Add parameter wasLastSession to SessionListener.onSessionDeleted
This commit is contained in:
@@ -34,7 +34,7 @@ class DefaultSeenInvitesStore(
|
|||||||
init {
|
init {
|
||||||
sessionObserver.addListener(object : SessionListener {
|
sessionObserver.addListener(object : SessionListener {
|
||||||
override suspend fun onSessionCreated(userId: String) = Unit
|
override suspend fun onSessionCreated(userId: String) = Unit
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
if (sessionId.value == userId) {
|
if (sessionId.value == userId) {
|
||||||
clear()
|
clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class DefaultLockScreenService(
|
|||||||
sessionObserver.addListener(object : SessionListener {
|
sessionObserver.addListener(object : SessionListener {
|
||||||
override suspend fun onSessionCreated(userId: String) = Unit
|
override suspend fun onSessionCreated(userId: String) = Unit
|
||||||
|
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
// TODO handle multi session at some point
|
// TODO handle multi session at some point
|
||||||
pinCodeManager.deletePinCode()
|
pinCodeManager.deletePinCode()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class DefaultImageLoaderHolder(
|
|||||||
sessionObserver.addListener(object : SessionListener {
|
sessionObserver.addListener(object : SessionListener {
|
||||||
override suspend fun onSessionCreated(userId: String) = Unit
|
override suspend fun onSessionCreated(userId: String) = Unit
|
||||||
|
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
remove(SessionId(userId))
|
remove(SessionId(userId))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class DefaultSessionPreferencesStoreFactory(
|
|||||||
init {
|
init {
|
||||||
sessionObserver.addListener(object : SessionListener {
|
sessionObserver.addListener(object : SessionListener {
|
||||||
override suspend fun onSessionCreated(userId: String) = Unit
|
override suspend fun onSessionCreated(userId: String) = Unit
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
val sessionPreferences = cache.remove(SessionId(userId))
|
val sessionPreferences = cache.remove(SessionId(userId))
|
||||||
sessionPreferences?.clear()
|
sessionPreferences?.clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ class DefaultPushService(
|
|||||||
* The current push provider may want to take action, and we need to
|
* The current push provider may want to take action, and we need to
|
||||||
* cleanup the stores.
|
* cleanup the stores.
|
||||||
*/
|
*/
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
val sessionId = SessionId(userId)
|
val sessionId = SessionId(userId)
|
||||||
val userPushStore = userPushStoreFactory.getOrCreate(sessionId)
|
val userPushStore = userPushStoreFactory.getOrCreate(sessionId)
|
||||||
val currentPushProviderName = userPushStore.getPushProviderName()
|
val currentPushProviderName = userPushStore.getPushProviderName()
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ class DefaultNotificationConversationService(
|
|||||||
sessionObserver.addListener(object : SessionListener {
|
sessionObserver.addListener(object : SessionListener {
|
||||||
override suspend fun onSessionCreated(userId: String) = Unit
|
override suspend fun onSessionCreated(userId: String) = Unit
|
||||||
|
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
onSessionLogOut(SessionId(userId))
|
onSessionLogOut(SessionId(userId))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ class DefaultPushServiceTest {
|
|||||||
),
|
),
|
||||||
pushClientSecretStore = pushClientSecretStore,
|
pushClientSecretStore = pushClientSecretStore,
|
||||||
)
|
)
|
||||||
defaultPushService.onSessionDeleted(A_SESSION_ID.value)
|
defaultPushService.onSessionDeleted(A_SESSION_ID.value, false)
|
||||||
assertThat(userPushStore.getPushProviderName()).isNull()
|
assertThat(userPushStore.getPushProviderName()).isNull()
|
||||||
assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull()
|
assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull()
|
||||||
onSessionDeletedLambda.assertions().isCalledOnce().with(value(A_SESSION_ID))
|
onSessionDeletedLambda.assertions().isCalledOnce().with(value(A_SESSION_ID))
|
||||||
@@ -268,7 +268,7 @@ class DefaultPushServiceTest {
|
|||||||
),
|
),
|
||||||
pushClientSecretStore = pushClientSecretStore,
|
pushClientSecretStore = pushClientSecretStore,
|
||||||
)
|
)
|
||||||
defaultPushService.onSessionDeleted(A_SESSION_ID.value)
|
defaultPushService.onSessionDeleted(A_SESSION_ID.value, false)
|
||||||
assertThat(userPushStore.getPushProviderName()).isNull()
|
assertThat(userPushStore.getPushProviderName()).isNull()
|
||||||
assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull()
|
assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ package io.element.android.libraries.sessionstorage.api.observer
|
|||||||
|
|
||||||
interface SessionListener {
|
interface SessionListener {
|
||||||
suspend fun onSessionCreated(userId: String)
|
suspend fun onSessionCreated(userId: String)
|
||||||
suspend fun onSessionDeleted(userId: String)
|
suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,9 +60,10 @@ class DefaultSessionObserver(
|
|||||||
// Compute diff
|
// Compute diff
|
||||||
// Removed user
|
// Removed user
|
||||||
val removedUsers = currentUserSet - newUserSet
|
val removedUsers = currentUserSet - newUserSet
|
||||||
|
val wasLastSession = newUserSet.isEmpty()
|
||||||
removedUsers.forEach { removedUser ->
|
removedUsers.forEach { removedUser ->
|
||||||
listeners.onEach { listener ->
|
listeners.onEach { listener ->
|
||||||
listener.onSessionDeleted(removedUser)
|
listener.onSessionDeleted(removedUser, wasLastSession)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Added user
|
// Added user
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class TestSessionListener : SessionListener {
|
|||||||
trackRecord.add(Event.Created(userId))
|
trackRecord.add(Event.Created(userId))
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
trackRecord.add(Event.Deleted(userId))
|
trackRecord.add(Event.Deleted(userId))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,6 @@ class FakeSessionObserver : SessionObserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun onSessionDeleted(userId: String) {
|
suspend fun onSessionDeleted(userId: String) {
|
||||||
listeners.forEach { it.onSessionDeleted(userId) }
|
listeners.forEach { it.onSessionDeleted(userId, false) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class DefaultAnalyticsService(
|
|||||||
// Nothing to do
|
// Nothing to do
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onSessionDeleted(userId: String) {
|
override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {
|
||||||
// Delete the store when the last session is deleted
|
// Delete the store when the last session is deleted
|
||||||
if (sessionStore.getAllSessions().isEmpty()) {
|
if (sessionStore.getAllSessions().isEmpty()) {
|
||||||
analyticsStore.reset()
|
analyticsStore.reset()
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ class DefaultAnalyticsServiceTest {
|
|||||||
coroutineScope = backgroundScope,
|
coroutineScope = backgroundScope,
|
||||||
analyticsStore = store,
|
analyticsStore = store,
|
||||||
)
|
)
|
||||||
sut.onSessionDeleted("userId")
|
sut.onSessionDeleted("userId", false)
|
||||||
resetLambda.assertions().isCalledOnce()
|
resetLambda.assertions().isCalledOnce()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user