Use AsyncView in BugReportView

This commit is contained in:
Benoit Marty 2023-11-03 16:38:11 +01:00 committed by Benoit Marty
parent 044b6ac018
commit ed4363c5c6

View file

@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -39,16 +38,15 @@ import coil.compose.AsyncImage
import coil.request.ImageRequest import coil.request.ImageRequest
import io.element.android.features.rageshake.impl.R import io.element.android.features.rageshake.impl.R
import io.element.android.libraries.architecture.Async import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog import io.element.android.libraries.designsystem.components.async.AsyncView
import io.element.android.libraries.designsystem.components.form.textFieldState import io.element.android.libraries.designsystem.components.form.textFieldState
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
import io.element.android.libraries.designsystem.components.preferences.PreferenceRow import io.element.android.libraries.designsystem.components.preferences.PreferenceRow
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground import io.element.android.libraries.designsystem.preview.debugPlaceholderBackground
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
import io.element.android.libraries.designsystem.theme.components.OutlinedTextField import io.element.android.libraries.designsystem.theme.components.OutlinedTextField
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.LogCompositions import io.element.android.libraries.designsystem.utils.LogCompositions
@ -63,13 +61,6 @@ fun BugReportView(
) { ) {
LogCompositions(tag = "Rageshake", msg = "Root") LogCompositions(tag = "Rageshake", msg = "Root")
val eventSink = state.eventSink val eventSink = state.eventSink
if (state.sending is Async.Success) {
LaunchedEffect(state.sending) {
eventSink(BugReportEvents.ResetAll)
onDone()
}
return
}
Box(modifier = modifier) { Box(modifier = modifier) {
PreferencePage( PreferencePage(
@ -158,19 +149,14 @@ fun BugReportView(
} }
} }
when (state.sending) { AsyncView(
is Async.Loading -> { async = state.sending,
// Indeterminate indicator, to avoid the freeze effect if the connection takes time to initialize. onSuccess = {
CircularProgressIndicator( eventSink(BugReportEvents.ResetAll)
modifier = Modifier.align(Alignment.Center) onDone()
) },
} onErrorDismiss = { eventSink(BugReportEvents.ClearError) },
is Async.Failure -> ErrorDialog( )
content = state.sending.error.toString(),
onDismiss = { state.eventSink(BugReportEvents.ClearError) }
)
else -> Unit
}
} }
} }