diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt index 0b9a1fd5f9..96372c0e65 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsView.kt @@ -32,9 +32,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.roomdetails.impl.R -import io.element.android.libraries.architecture.Async import io.element.android.libraries.core.bool.orTrue -import io.element.android.libraries.designsystem.components.ProgressDialog +import io.element.android.libraries.designsystem.components.async.AsyncView import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch @@ -49,7 +48,6 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings - @Composable fun RoomNotificationSettingsView( state: RoomNotificationSettingsState, @@ -57,7 +55,7 @@ fun RoomNotificationSettingsView( onShowGlobalNotifications: () -> Unit = {}, onBackPressed: () -> Unit = {}, ) { - if(state.showUserDefinedSettingStyle) { + if (state.showUserDefinedSettingStyle) { UserDefinedRoomNotificationSettingsView( state = state, modifier = modifier, @@ -117,7 +115,7 @@ private fun RoomSpecificNotificationSettingsView( ClickableText( text = text, onClick = { - onShowGlobalNotifications() + onShowGlobalNotifications() }, modifier = Modifier .padding(start = 16.dp, bottom = 16.dp, end = 16.dp), @@ -127,7 +125,7 @@ private fun RoomSpecificNotificationSettingsView( textAlign = TextAlign.Center, ) ) - if(state.defaultRoomNotificationMode != null){ + if (state.defaultRoomNotificationMode != null) { val defaultModeTitle = when (state.defaultRoomNotificationMode) { RoomNotificationMode.ALL_MESSAGES -> stringResource(id = R.string.screen_room_notification_settings_mode_all_messages) RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY -> { @@ -150,29 +148,24 @@ private fun RoomSpecificNotificationSettingsView( enabled = !state.displayIsDefault.orTrue(), onOptionSelected = { state.eventSink(RoomNotificationSettingsEvents.RoomNotificationModeChanged(it.mode)) - },) + }, + ) } } - when (state.setNotificationSettingAction) { - is Async.Loading -> { - ProgressDialog() - } - is Async.Failure -> { - ShowChangeNotificationSettingError(state, RoomNotificationSettingsEvents.ClearSetNotificationError) - } - else -> Unit - } + AsyncView( + async = state.setNotificationSettingAction, + onSuccess = {}, + errorMessage = { stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode) }, + onErrorDismiss = { state.eventSink(RoomNotificationSettingsEvents.ClearSetNotificationError) }, + ) - when (state.restoreDefaultAction) { - is Async.Loading -> { - ProgressDialog() - } - is Async.Failure -> { - ShowChangeNotificationSettingError(state, RoomNotificationSettingsEvents.ClearRestoreDefaultError) - } - else -> Unit - } + AsyncView( + async = state.restoreDefaultAction, + onSuccess = {}, + errorMessage = { stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode) }, + onErrorDismiss = { state.eventSink(RoomNotificationSettingsEvents.ClearRestoreDefaultError) }, + ) } } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/ShowChangeNotificationSettingError.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/ShowChangeNotificationSettingError.kt deleted file mode 100644 index 4b99976988..0000000000 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/ShowChangeNotificationSettingError.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.roomdetails.impl.notificationsettings - -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog -import io.element.android.libraries.ui.strings.CommonStrings - -@Composable -fun ShowChangeNotificationSettingError(state: RoomNotificationSettingsState, event: RoomNotificationSettingsEvents) { - ErrorDialog( - title = stringResource(CommonStrings.dialog_title_error), - content = stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode), - onDismiss = { state.eventSink(event) }, - ) -} diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsView.kt index 6afde5bbf9..88a4b8a0a1 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/UserDefinedRoomNotificationSettingsView.kt @@ -24,7 +24,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource @@ -32,9 +31,8 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.roomdetails.impl.R -import io.element.android.libraries.architecture.Async import io.element.android.libraries.core.bool.orTrue -import io.element.android.libraries.designsystem.components.ProgressDialog +import io.element.android.libraries.designsystem.components.async.AsyncView import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.preferences.PreferenceText import io.element.android.libraries.designsystem.preview.ElementPreview @@ -43,6 +41,7 @@ import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.designsystem.utils.CommonDrawables +import io.element.android.libraries.ui.strings.CommonStrings @Composable fun UserDefinedRoomNotificationSettingsView( @@ -86,30 +85,19 @@ fun UserDefinedRoomNotificationSettingsView( } ) - when (state.setNotificationSettingAction) { - is Async.Loading -> { - ProgressDialog() - } - is Async.Failure -> { - ShowChangeNotificationSettingError(state, RoomNotificationSettingsEvents.ClearSetNotificationError) - } - else -> Unit - } + AsyncView( + async = state.setNotificationSettingAction, + onSuccess = {}, + errorMessage = { stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode) }, + onErrorDismiss = { state.eventSink(RoomNotificationSettingsEvents.ClearSetNotificationError) }, + ) - when (state.restoreDefaultAction) { - is Async.Loading -> { - ProgressDialog() - } - is Async.Failure -> { - ShowChangeNotificationSettingError(state, RoomNotificationSettingsEvents.ClearRestoreDefaultError) - } - is Async.Success -> { - LaunchedEffect(state.restoreDefaultAction) { - onBackPressed() - } - } - else -> Unit - } + AsyncView( + async = state.restoreDefaultAction, + onSuccess = { onBackPressed() }, + errorMessage = { stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode) }, + onErrorDismiss = { state.eventSink(RoomNotificationSettingsEvents.ClearRestoreDefaultError) }, + ) } } }