diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt new file mode 100644 index 0000000000..48f1a292f0 --- /dev/null +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/direct/DirectLogoutStateProvider.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.features.logout.api.direct + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.architecture.AsyncAction + +open class DirectLogoutStateProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aDirectLogoutState() + ) +} + +fun aDirectLogoutState( + canDoDirectSignOut: Boolean = true, + logoutAction: AsyncAction = AsyncAction.Uninitialized, + eventSink: (DirectLogoutEvents) -> Unit = {}, +) = DirectLogoutState( + canDoDirectSignOut = canDoDirectSignOut, + logoutAction = logoutAction, + eventSink = eventSink, +) diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt index 64935f8cda..d1fd3e940a 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt @@ -17,11 +17,15 @@ package io.element.android.features.logout.impl.direct import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.PreviewParameter import com.squareup.anvil.annotations.ContributesBinding import io.element.android.features.logout.api.direct.DirectLogoutEvents import io.element.android.features.logout.api.direct.DirectLogoutState +import io.element.android.features.logout.api.direct.DirectLogoutStateProvider import io.element.android.features.logout.api.direct.DirectLogoutView import io.element.android.features.logout.impl.ui.LogoutActionDialog +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.di.SessionScope import javax.inject.Inject @@ -50,3 +54,14 @@ class DefaultDirectLogoutView @Inject constructor() : DirectLogoutView { ) } } + +@PreviewsDayNight +@Composable +fun DefaultDirectLogoutViewPreview( + @PreviewParameter(DirectLogoutStateProvider::class) state: DirectLogoutState, +) = ElementPreview { + DefaultDirectLogoutView().Render( + state = state, + onSuccessLogout = {}, + ) +} diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt index d1a60af615..6f5069f947 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootStateProvider.kt @@ -16,8 +16,7 @@ package io.element.android.features.preferences.impl.root -import io.element.android.features.logout.api.direct.DirectLogoutState -import io.element.android.libraries.architecture.AsyncAction +import io.element.android.features.logout.api.direct.aDirectLogoutState import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage import io.element.android.libraries.ui.strings.CommonStrings @@ -37,9 +36,3 @@ fun aPreferencesRootState() = PreferencesRootState( snackbarMessage = SnackbarMessage(CommonStrings.common_verification_complete), directLogoutState = aDirectLogoutState(), ) - -fun aDirectLogoutState() = DirectLogoutState( - canDoDirectSignOut = true, - logoutAction = AsyncAction.Uninitialized, - eventSink = {}, -)