Skip to content

Commit 28aa326

Browse files
committed
Multi accounts - fix other implementation of SessionStore
1 parent 004123c commit 28aa326

File tree

1 file changed

+29
-29
lines changed
  • libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test

1 file changed

+29
-29
lines changed

libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/InMemorySessionStore.kt

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,62 +12,62 @@ import io.element.android.libraries.sessionstorage.api.SessionData
1212
import io.element.android.libraries.sessionstorage.api.SessionStore
1313
import kotlinx.coroutines.flow.Flow
1414
import kotlinx.coroutines.flow.MutableStateFlow
15-
import kotlinx.coroutines.flow.asStateFlow
1615
import kotlinx.coroutines.flow.map
1716

1817
class InMemorySessionStore(
19-
initialList: List<SessionData> = emptyList(),
18+
private val updateUserProfileResult: (String, String?, String?) -> Unit = { _, _, _ -> error("Not implemented") },
19+
private val setLatestSessionResult: (String) -> Unit = { error("Not implemented") },
2020
) : SessionStore {
21-
private val sessionDataListFlow = MutableStateFlow(initialList)
21+
private var sessionDataFlow = MutableStateFlow<SessionData?>(null)
2222

2323
override fun isLoggedIn(): Flow<LoggedInState> {
24-
return sessionDataListFlow.map {
25-
if (it.isEmpty()) {
24+
return sessionDataFlow.map {
25+
if (it == null) {
2626
LoggedInState.NotLoggedIn
2727
} else {
28-
it.first().let { sessionData ->
29-
LoggedInState.LoggedIn(
30-
sessionId = sessionData.userId,
31-
isTokenValid = sessionData.isTokenValid,
32-
)
33-
}
28+
LoggedInState.LoggedIn(
29+
sessionId = it.userId,
30+
isTokenValid = it.isTokenValid,
31+
)
3432
}
3533
}
3634
}
3735

38-
override fun sessionsFlow(): Flow<List<SessionData>> = sessionDataListFlow.asStateFlow()
36+
override fun sessionsFlow(): Flow<List<SessionData>> {
37+
return sessionDataFlow.map { listOfNotNull(it) }
38+
}
3939

40-
override suspend fun storeData(sessionData: SessionData) {
41-
val currentList = sessionDataListFlow.value.toMutableList()
42-
currentList.removeAll { it.userId == sessionData.userId }
43-
currentList.add(sessionData)
44-
sessionDataListFlow.value = currentList
40+
override suspend fun addSession(sessionData: SessionData) {
41+
sessionDataFlow.value = sessionData
4542
}
4643

4744
override suspend fun updateData(sessionData: SessionData) {
48-
val currentList = sessionDataListFlow.value.toMutableList()
49-
val index = currentList.indexOfFirst { it.userId == sessionData.userId }
50-
if (index != -1) {
51-
currentList[index] = sessionData
52-
sessionDataListFlow.value = currentList
53-
}
45+
sessionDataFlow.value = sessionData
46+
}
47+
48+
override suspend fun updateUserProfile(sessionId: String, displayName: String?, avatarUrl: String?) {
49+
updateUserProfileResult(sessionId, displayName, avatarUrl)
5450
}
5551

5652
override suspend fun getSession(sessionId: String): SessionData? {
57-
return sessionDataListFlow.value.firstOrNull { it.userId == sessionId }
53+
return sessionDataFlow.value.takeIf { it?.userId == sessionId }
5854
}
5955

6056
override suspend fun getAllSessions(): List<SessionData> {
61-
return sessionDataListFlow.value
57+
return listOfNotNull(sessionDataFlow.value)
6258
}
6359

6460
override suspend fun getLatestSession(): SessionData? {
65-
return sessionDataListFlow.value.firstOrNull()
61+
return sessionDataFlow.value
62+
}
63+
64+
override suspend fun setLatestSession(sessionId: String) {
65+
setLatestSessionResult(sessionId)
6666
}
6767

6868
override suspend fun removeSession(sessionId: String) {
69-
val currentList = sessionDataListFlow.value.toMutableList()
70-
currentList.removeAll { it.userId == sessionId }
71-
sessionDataListFlow.value = currentList
69+
if (sessionDataFlow.value?.userId == sessionId) {
70+
sessionDataFlow.value = null
71+
}
7272
}
7373
}

0 commit comments

Comments
 (0)