Skip to content

Commit 0c41834

Browse files
committed
Fix issue after rebase on develop
1 parent d1bfe8e commit 0c41834

File tree

4 files changed

+47
-42
lines changed

4 files changed

+47
-42
lines changed

features/home/impl/src/test/kotlin/io/element/android/features/home/impl/HomePresenterTest.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import io.element.android.libraries.matrix.test.A_USER_NAME
3030
import io.element.android.libraries.matrix.test.FakeMatrixClient
3131
import io.element.android.libraries.matrix.test.sync.FakeSyncService
3232
import io.element.android.libraries.sessionstorage.api.SessionStore
33-
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
33+
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
3434
import io.element.android.libraries.sessionstorage.test.aSessionData
3535
import io.element.android.tests.testutils.WarmUpRule
3636
import io.element.android.tests.testutils.lambda.lambdaRecorder
@@ -57,10 +57,12 @@ class HomePresenterTest {
5757
client = matrixClient,
5858
rageshakeFeatureAvailability = { flowOf(false) },
5959
sessionStore = InMemorySessionStore(
60-
initialSessionData = aSessionData(
61-
sessionId = matrixClient.sessionId.value,
62-
userDisplayName = null,
63-
userAvatarUrl = null,
60+
initialList = listOf(
61+
aSessionData(
62+
sessionId = matrixClient.sessionId.value,
63+
userDisplayName = null,
64+
userAvatarUrl = null,
65+
)
6466
),
6567
updateUserProfileResult = updateUserProfileResult,
6668
),

features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootPresenterTest.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient
3131
import io.element.android.libraries.matrix.test.core.aBuildMeta
3232
import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService
3333
import io.element.android.libraries.sessionstorage.api.SessionStore
34-
import io.element.android.libraries.sessionstorage.impl.memory.InMemoryMultiSessionsStore
35-
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
34+
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
3635
import io.element.android.libraries.sessionstorage.test.aSessionData
3736
import io.element.android.services.analytics.test.FakeAnalyticsService
3837
import io.element.android.tests.testutils.WarmUpRule
@@ -195,16 +194,16 @@ class PreferencesRootPresenterTest {
195194
featureFlagService = FakeFeatureFlagService(
196195
initialState = mapOf(FeatureFlags.MultiAccount.key to true)
197196
),
198-
sessionStore = InMemoryMultiSessionsStore().apply {
199-
addSession(aSessionData(sessionId = A_SESSION_ID.value))
200-
addSession(
197+
sessionStore = InMemorySessionStore(
198+
initialList = listOf(
199+
aSessionData(sessionId = A_SESSION_ID.value),
201200
aSessionData(
202201
sessionId = A_SESSION_ID_2.value,
203202
userDisplayName = "Bob",
204203
userAvatarUrl = "avatarUrl",
205-
)
204+
),
206205
)
207-
}
206+
)
208207
).test {
209208
val state = awaitFirstItem()
210209
assertThat(state.isMultiAccountEnabled).isTrue()

libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectPresenterTest.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser
1212
import io.element.android.libraries.matrix.test.A_SESSION_ID
1313
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
1414
import io.element.android.libraries.sessionstorage.api.SessionStore
15-
import io.element.android.libraries.sessionstorage.impl.memory.InMemoryMultiSessionsStore
16-
import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore
15+
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
1716
import io.element.android.libraries.sessionstorage.test.aSessionData
1817
import io.element.android.tests.testutils.WarmUpRule
1918
import io.element.android.tests.testutils.test
@@ -37,16 +36,16 @@ class AccountSelectPresenterTest {
3736
@Test
3837
fun `present - multiple accounts case`() = runTest {
3938
val presenter = createAccountSelectPresenter(
40-
sessionStore = InMemoryMultiSessionsStore().apply {
41-
addSession(aSessionData(sessionId = A_SESSION_ID.value))
42-
addSession(
39+
sessionStore = InMemorySessionStore(
40+
initialList = listOf(
41+
aSessionData(sessionId = A_SESSION_ID.value),
4342
aSessionData(
4443
sessionId = A_SESSION_ID_2.value,
4544
userDisplayName = "Bob",
4645
userAvatarUrl = "avatarUrl",
47-
)
46+
),
4847
)
49-
}
48+
)
5049
)
5150
presenter.test {
5251
skipItems(1)

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

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,67 +12,72 @@ 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
1516
import kotlinx.coroutines.flow.map
1617

1718
class InMemorySessionStore(
18-
initialSessionData: SessionData? = null,
19+
initialList: List<SessionData> = emptyList(),
1920
private val updateUserProfileResult: (String, String?, String?) -> Unit = { _, _, _ -> error("Not implemented") },
2021
private val setLatestSessionResult: (String) -> Unit = { error("Not implemented") },
2122
) : SessionStore {
22-
private var sessionDataFlow = MutableStateFlow(initialSessionData)
23+
private val sessionDataListFlow = MutableStateFlow(initialList)
2324

2425
override fun isLoggedIn(): Flow<LoggedInState> {
25-
return sessionDataFlow.map {
26-
if (it == null) {
26+
return sessionDataListFlow.map {
27+
if (it.isEmpty()) {
2728
LoggedInState.NotLoggedIn
2829
} else {
29-
LoggedInState.LoggedIn(
30-
sessionId = it.userId,
31-
isTokenValid = it.isTokenValid,
32-
)
30+
it.first().let { sessionData ->
31+
LoggedInState.LoggedIn(
32+
sessionId = sessionData.userId,
33+
isTokenValid = sessionData.isTokenValid,
34+
)
35+
}
3336
}
3437
}
3538
}
3639

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

4142
override suspend fun addSession(sessionData: SessionData) {
42-
sessionDataFlow.value = sessionData
43+
val currentList = sessionDataListFlow.value.toMutableList()
44+
currentList.removeAll { it.userId == sessionData.userId }
45+
currentList.add(sessionData)
46+
sessionDataListFlow.value = currentList
4347
}
4448

4549
override suspend fun updateData(sessionData: SessionData) {
46-
sessionDataFlow.value = sessionData
50+
val currentList = sessionDataListFlow.value.toMutableList()
51+
val index = currentList.indexOfFirst { it.userId == sessionData.userId }
52+
if (index != -1) {
53+
currentList[index] = sessionData
54+
sessionDataListFlow.value = currentList
55+
}
4756
}
4857

4958
override suspend fun updateUserProfile(sessionId: String, displayName: String?, avatarUrl: String?) {
50-
sessionDataFlow.value = sessionDataFlow.value?.copy(
51-
userDisplayName = displayName,
52-
userAvatarUrl = avatarUrl
53-
)
5459
updateUserProfileResult(sessionId, displayName, avatarUrl)
5560
}
5661

5762
override suspend fun getSession(sessionId: String): SessionData? {
58-
return sessionDataFlow.value.takeIf { it?.userId == sessionId }
63+
return sessionDataListFlow.value.firstOrNull { it.userId == sessionId }
5964
}
6065

6166
override suspend fun getAllSessions(): List<SessionData> {
62-
return listOfNotNull(sessionDataFlow.value)
67+
return sessionDataListFlow.value
6368
}
6469

6570
override suspend fun getLatestSession(): SessionData? {
66-
return sessionDataFlow.value
71+
return sessionDataListFlow.value.firstOrNull()
6772
}
6873

6974
override suspend fun setLatestSession(sessionId: String) {
7075
setLatestSessionResult(sessionId)
7176
}
7277

7378
override suspend fun removeSession(sessionId: String) {
74-
if (sessionDataFlow.value?.userId == sessionId) {
75-
sessionDataFlow.value = null
76-
}
79+
val currentList = sessionDataListFlow.value.toMutableList()
80+
currentList.removeAll { it.userId == sessionId }
81+
sessionDataListFlow.value = currentList
7782
}
7883
}

0 commit comments

Comments
 (0)