Skip to content

Commit 8d476b5

Browse files
committed
Improve SignedOutPresenter.
We can now provide a SessionId in the Factory.
1 parent 7dd081f commit 8d476b5

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutNode.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class SignedOutNode(
3232
) : NodeInputs
3333

3434
private val inputs: Inputs = inputs()
35-
private val presenter = presenterFactory.create(inputs.sessionId.value)
35+
private val presenter = presenterFactory.create(inputs.sessionId)
3636

3737
@Composable
3838
override fun View(modifier: Modifier) {

features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package io.element.android.features.signedout.impl
99

1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.collectAsState
12-
import androidx.compose.runtime.derivedStateOf
1312
import androidx.compose.runtime.getValue
1413
import androidx.compose.runtime.remember
1514
import androidx.compose.runtime.rememberCoroutineScope
@@ -18,35 +17,35 @@ import dev.zacsweers.metro.AssistedFactory
1817
import dev.zacsweers.metro.AssistedInject
1918
import io.element.android.libraries.architecture.Presenter
2019
import io.element.android.libraries.core.meta.BuildMeta
20+
import io.element.android.libraries.matrix.api.core.SessionId
2121
import io.element.android.libraries.sessionstorage.api.SessionStore
22+
import kotlinx.coroutines.flow.map
2223
import kotlinx.coroutines.launch
2324

2425
@AssistedInject
2526
class SignedOutPresenter(
26-
// Cannot inject SessionId
27-
@Assisted private val sessionId: String,
27+
@Assisted private val sessionId: SessionId,
2828
private val sessionStore: SessionStore,
2929
private val buildMeta: BuildMeta,
3030
) : Presenter<SignedOutState> {
3131
@AssistedFactory
3232
fun interface Factory {
33-
fun create(sessionId: String): SignedOutPresenter
33+
fun create(sessionId: SessionId): SignedOutPresenter
3434
}
3535

3636
@Composable
3737
override fun present(): SignedOutState {
38-
val sessions by remember {
39-
sessionStore.sessionsFlow()
40-
}.collectAsState(initial = emptyList())
4138
val signedOutSession by remember {
42-
derivedStateOf { sessions.firstOrNull { it.userId == sessionId } }
43-
}
39+
sessionStore.sessionsFlow().map { sessions ->
40+
sessions.firstOrNull { it.userId == sessionId.value }
41+
}
42+
}.collectAsState(initial = null)
4443
val coroutineScope = rememberCoroutineScope()
4544

4645
fun handleEvents(event: SignedOutEvents) {
4746
when (event) {
4847
SignedOutEvents.SignInAgain -> coroutineScope.launch {
49-
sessionStore.removeSession(sessionId)
48+
sessionStore.removeSession(sessionId.value)
5049
}
5150
}
5251
}

features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/SignedOutPresenterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ internal fun createSignedOutPresenter(
7070
sessionStore: SessionStore = InMemorySessionStore(),
7171
): SignedOutPresenter {
7272
return SignedOutPresenter(
73-
sessionId = sessionId.value,
73+
sessionId = sessionId,
7474
sessionStore = sessionStore,
7575
buildMeta = aBuildMeta(applicationName = AN_APPLICATION_NAME),
7676
)

0 commit comments

Comments
 (0)