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