Make ChooseAccountProviderState stable

This commit is contained in:
Benoit Marty 2025-10-09 17:46:02 +02:00 committed by Benoit Marty
parent c33815ccd3
commit 403a58d7a7
3 changed files with 6 additions and 2 deletions

View file

@ -21,6 +21,7 @@ import io.element.android.features.login.impl.login.LoginHelper
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.core.uri.ensureProtocol
import kotlinx.collections.immutable.toImmutableList
@Inject @Inject
class ChooseAccountProviderPresenter( class ChooseAccountProviderPresenter(
@ -69,6 +70,7 @@ class ChooseAccountProviderPresenter(
isValid = true, isValid = true,
) )
} }
.toImmutableList()
} }
return ChooseAccountProviderState( return ChooseAccountProviderState(

View file

@ -10,10 +10,11 @@ package io.element.android.features.login.impl.screens.chooseaccountprovider
import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProvider
import io.element.android.features.login.impl.login.LoginMode import io.element.android.features.login.impl.login.LoginMode
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import kotlinx.collections.immutable.ImmutableList
// Do not use default value, so no member get forgotten in the presenters. // Do not use default value, so no member get forgotten in the presenters.
data class ChooseAccountProviderState( data class ChooseAccountProviderState(
val accountProviders: List<AccountProvider>, val accountProviders: ImmutableList<AccountProvider>,
val selectedAccountProvider: AccountProvider?, val selectedAccountProvider: AccountProvider?,
val loginMode: AsyncData<LoginMode>, val loginMode: AsyncData<LoginMode>,
val eventSink: (ChooseAccountProviderEvents) -> Unit, val eventSink: (ChooseAccountProviderEvents) -> Unit,

View file

@ -12,6 +12,7 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider
import io.element.android.features.login.impl.accountprovider.anAccountProvider import io.element.android.features.login.impl.accountprovider.anAccountProvider
import io.element.android.features.login.impl.login.LoginMode import io.element.android.features.login.impl.login.LoginMode
import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.AsyncData
import kotlinx.collections.immutable.toImmutableList
open class ChooseAccountProviderStateProvider : PreviewParameterProvider<ChooseAccountProviderState> { open class ChooseAccountProviderStateProvider : PreviewParameterProvider<ChooseAccountProviderState> {
private val server1 = anAccountProvider( private val server1 = anAccountProvider(
@ -70,7 +71,7 @@ fun aChooseAccountProviderState(
loginMode: AsyncData<LoginMode> = AsyncData.Uninitialized, loginMode: AsyncData<LoginMode> = AsyncData.Uninitialized,
eventSink: (ChooseAccountProviderEvents) -> Unit = {}, eventSink: (ChooseAccountProviderEvents) -> Unit = {},
) = ChooseAccountProviderState( ) = ChooseAccountProviderState(
accountProviders = accountProviders, accountProviders = accountProviders.toImmutableList(),
selectedAccountProvider = selectedAccountProvider, selectedAccountProvider = selectedAccountProvider,
loginMode = loginMode, loginMode = loginMode,
eventSink = eventSink, eventSink = eventSink,