Rename AsyncView to AsyncActionView
This commit is contained in:
parent
7b2341aec7
commit
e42005fc52
71 changed files with 369 additions and 315 deletions
|
|
@ -30,7 +30,7 @@ import io.element.android.features.rageshake.api.reporter.BugReporter
|
|||
import io.element.android.features.rageshake.api.reporter.BugReporterListener
|
||||
import io.element.android.features.rageshake.api.screenshot.ScreenshotHolder
|
||||
import io.element.android.features.rageshake.impl.logs.VectorFileLogger
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.architecture.AsyncAction
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -45,27 +45,27 @@ class BugReportPresenter @Inject constructor(
|
|||
|
||||
private class BugReporterUploadListener(
|
||||
private val sendingProgress: MutableFloatState,
|
||||
private val sendingAction: MutableState<AsyncData<Unit>>
|
||||
private val sendingAction: MutableState<AsyncAction<Unit>>
|
||||
) : BugReporterListener {
|
||||
|
||||
override fun onUploadCancelled() {
|
||||
sendingProgress.floatValue = 0f
|
||||
sendingAction.value = AsyncData.Uninitialized
|
||||
sendingAction.value = AsyncAction.Uninitialized
|
||||
}
|
||||
|
||||
override fun onUploadFailed(reason: String?) {
|
||||
sendingProgress.floatValue = 0f
|
||||
sendingAction.value = AsyncData.Failure(Exception(reason))
|
||||
sendingAction.value = AsyncAction.Failure(Exception(reason))
|
||||
}
|
||||
|
||||
override fun onProgress(progress: Int) {
|
||||
sendingProgress.floatValue = progress.toFloat() / 100
|
||||
sendingAction.value = AsyncData.Loading()
|
||||
sendingAction.value = AsyncAction.Loading
|
||||
}
|
||||
|
||||
override fun onUploadSucceed() {
|
||||
sendingProgress.floatValue = 0f
|
||||
sendingAction.value = AsyncData.Success(Unit)
|
||||
sendingAction.value = AsyncAction.Success(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -83,8 +83,8 @@ class BugReportPresenter @Inject constructor(
|
|||
val sendingProgress = remember {
|
||||
mutableFloatStateOf(0f)
|
||||
}
|
||||
val sendingAction: MutableState<AsyncData<Unit>> = remember {
|
||||
mutableStateOf(AsyncData.Uninitialized)
|
||||
val sendingAction: MutableState<AsyncAction<Unit>> = remember {
|
||||
mutableStateOf(AsyncAction.Uninitialized)
|
||||
}
|
||||
val formState: MutableState<BugReportFormState> = remember {
|
||||
mutableStateOf(BugReportFormState.Default)
|
||||
|
|
@ -109,7 +109,7 @@ class BugReportPresenter @Inject constructor(
|
|||
}
|
||||
BugReportEvents.ClearError -> {
|
||||
sendingProgress.floatValue = 0f
|
||||
sendingAction.value = AsyncData.Uninitialized
|
||||
sendingAction.value = AsyncAction.Uninitialized
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
package io.element.android.features.rageshake.impl.bugreport
|
||||
|
||||
import android.os.Parcelable
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.architecture.AsyncAction
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
data class BugReportState(
|
||||
|
|
@ -25,11 +25,11 @@ data class BugReportState(
|
|||
val hasCrashLogs: Boolean,
|
||||
val screenshotUri: String?,
|
||||
val sendingProgress: Float,
|
||||
val sending: AsyncData<Unit>,
|
||||
val sending: AsyncAction<Unit>,
|
||||
val eventSink: (BugReportEvents) -> Unit
|
||||
) {
|
||||
val submitEnabled =
|
||||
formState.description.length > 10 && sending !is AsyncData.Loading
|
||||
formState.description.length > 10 && sending !is AsyncAction.Loading
|
||||
}
|
||||
|
||||
@Parcelize
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
package io.element.android.features.rageshake.impl.bugreport
|
||||
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.architecture.AsyncAction
|
||||
|
||||
open class BugReportStateProvider : PreviewParameterProvider<BugReportState> {
|
||||
override val values: Sequence<BugReportState>
|
||||
|
|
@ -31,8 +31,8 @@ open class BugReportStateProvider : PreviewParameterProvider<BugReportState> {
|
|||
hasCrashLogs = true,
|
||||
screenshotUri = "aUri"
|
||||
),
|
||||
aBugReportState().copy(sending = AsyncData.Loading()),
|
||||
aBugReportState().copy(sending = AsyncData.Success(Unit)),
|
||||
aBugReportState().copy(sending = AsyncAction.Loading),
|
||||
aBugReportState().copy(sending = AsyncAction.Success(Unit)),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -41,6 +41,6 @@ fun aBugReportState() = BugReportState(
|
|||
hasCrashLogs = false,
|
||||
screenshotUri = null,
|
||||
sendingProgress = 0F,
|
||||
sending = AsyncData.Uninitialized,
|
||||
sending = AsyncAction.Uninitialized,
|
||||
eventSink = {}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ import androidx.compose.ui.unit.dp
|
|||
import coil.compose.AsyncImage
|
||||
import coil.request.ImageRequest
|
||||
import io.element.android.features.rageshake.impl.R
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.designsystem.components.async.AsyncView
|
||||
import io.element.android.libraries.architecture.AsyncAction
|
||||
import io.element.android.libraries.designsystem.components.async.AsyncActionView
|
||||
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
|
||||
|
|
@ -67,7 +67,7 @@ fun BugReportView(
|
|||
title = stringResource(id = CommonStrings.common_report_a_problem),
|
||||
onBackPressed = onBackPressed
|
||||
) {
|
||||
val isFormEnabled = state.sending !is AsyncData.Loading
|
||||
val isFormEnabled = state.sending !is AsyncAction.Loading
|
||||
var descriptionFieldState by textFieldState(
|
||||
stateValue = state.formState.description
|
||||
)
|
||||
|
|
@ -150,7 +150,7 @@ fun BugReportView(
|
|||
}
|
||||
}
|
||||
|
||||
AsyncView(
|
||||
AsyncActionView(
|
||||
async = state.sending,
|
||||
showProgressDialog = false,
|
||||
onSuccess = {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import io.element.android.features.rageshake.test.crash.A_CRASH_DATA
|
|||
import io.element.android.features.rageshake.test.crash.FakeCrashDataStore
|
||||
import io.element.android.features.rageshake.test.screenshot.A_SCREENSHOT_URI
|
||||
import io.element.android.features.rageshake.test.screenshot.FakeScreenshotHolder
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.architecture.AsyncAction
|
||||
import io.element.android.libraries.matrix.test.A_FAILURE_REASON
|
||||
import io.element.android.tests.testutils.WarmUpRule
|
||||
import kotlinx.coroutines.test.runTest
|
||||
|
|
@ -53,7 +53,7 @@ class BugReportPresenterTest {
|
|||
val initialState = awaitItem()
|
||||
assertThat(initialState.hasCrashLogs).isFalse()
|
||||
assertThat(initialState.formState).isEqualTo(BugReportFormState.Default)
|
||||
assertThat(initialState.sending).isEqualTo(AsyncData.Uninitialized)
|
||||
assertThat(initialState.sending).isEqualTo(AsyncAction.Uninitialized)
|
||||
assertThat(initialState.screenshotUri).isNull()
|
||||
assertThat(initialState.sendingProgress).isEqualTo(0f)
|
||||
assertThat(initialState.submitEnabled).isFalse()
|
||||
|
|
@ -174,13 +174,13 @@ class BugReportPresenterTest {
|
|||
initialState.eventSink.invoke(BugReportEvents.SendBugReport)
|
||||
skipItems(1)
|
||||
val progressState = awaitItem()
|
||||
assertThat(progressState.sending).isEqualTo(AsyncData.Loading(null))
|
||||
assertThat(progressState.sending).isEqualTo(AsyncAction.Loading)
|
||||
assertThat(progressState.sendingProgress).isEqualTo(0f)
|
||||
assertThat(progressState.submitEnabled).isFalse()
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(0.5f)
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(1f)
|
||||
skipItems(1)
|
||||
assertThat(awaitItem().sending).isEqualTo(AsyncData.Success(Unit))
|
||||
assertThat(awaitItem().sending).isEqualTo(AsyncAction.Success(Unit))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -199,17 +199,17 @@ class BugReportPresenterTest {
|
|||
initialState.eventSink.invoke(BugReportEvents.SendBugReport)
|
||||
skipItems(1)
|
||||
val progressState = awaitItem()
|
||||
assertThat(progressState.sending).isEqualTo(AsyncData.Loading(null))
|
||||
assertThat(progressState.sending).isEqualTo(AsyncAction.Loading)
|
||||
assertThat(progressState.sendingProgress).isEqualTo(0f)
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(0.5f)
|
||||
// Failure
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(0f)
|
||||
assertThat((awaitItem().sending as AsyncData.Failure).error.message).isEqualTo(A_FAILURE_REASON)
|
||||
assertThat((awaitItem().sending as AsyncAction.Failure).error.message).isEqualTo(A_FAILURE_REASON)
|
||||
// Reset failure
|
||||
initialState.eventSink.invoke(BugReportEvents.ClearError)
|
||||
val lastItem = awaitItem()
|
||||
assertThat(lastItem.sendingProgress).isEqualTo(0f)
|
||||
assertThat(lastItem.sending).isInstanceOf(AsyncData.Uninitialized::class.java)
|
||||
assertThat(lastItem.sending).isInstanceOf(AsyncAction.Uninitialized::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -228,12 +228,12 @@ class BugReportPresenterTest {
|
|||
initialState.eventSink.invoke(BugReportEvents.SendBugReport)
|
||||
skipItems(1)
|
||||
val progressState = awaitItem()
|
||||
assertThat(progressState.sending).isEqualTo(AsyncData.Loading(null))
|
||||
assertThat(progressState.sending).isEqualTo(AsyncAction.Loading)
|
||||
assertThat(progressState.sendingProgress).isEqualTo(0f)
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(0.5f)
|
||||
// Cancelled
|
||||
assertThat(awaitItem().sendingProgress).isEqualTo(0f)
|
||||
assertThat(awaitItem().sending).isEqualTo(AsyncData.Uninitialized)
|
||||
assertThat(awaitItem().sending).isEqualTo(AsyncAction.Uninitialized)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue