Browse Source

Use AsyncView in EditDefaultNotificationSettingView

pull/1738/head
Benoit Marty 11 months ago committed by Benoit Marty
parent
commit
6ad2c99576
  1. 32
      features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt

32
features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingView.kt

@ -22,20 +22,18 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.components.async.AsyncView
import io.element.android.libraries.designsystem.components.ProgressDialog
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.list.ListItemContent
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
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.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.ListItem
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.designsystem.components.preferences.PreferencePage
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@ -46,11 +44,10 @@ import io.element.android.libraries.ui.strings.CommonStrings
@Composable @Composable
fun EditDefaultNotificationSettingView( fun EditDefaultNotificationSettingView(
state: EditDefaultNotificationSettingState, state: EditDefaultNotificationSettingState,
openRoomNotificationSettings:(roomId: RoomId) -> Unit, openRoomNotificationSettings: (roomId: RoomId) -> Unit,
onBackPressed: () -> Unit, onBackPressed: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val title = if (state.isOneToOne) { val title = if (state.isOneToOne) {
CommonStrings.screen_notification_settings_direct_chats CommonStrings.screen_notification_settings_direct_chats
} else { } else {
@ -118,21 +115,16 @@ fun EditDefaultNotificationSettingView(
} }
} }
} }
when (state.changeNotificationSettingAction) { val errorMessage = stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode)
is Async.Loading -> { AsyncView(
ProgressDialog() async = state.changeNotificationSettingAction,
} errorTransform = { errorMessage },
is Async.Failure -> { onErrorDismiss = { state.eventSink(EditDefaultNotificationSettingStateEvents.ClearError) },
ErrorDialog( onSuccess = {},
title = stringResource(CommonStrings.dialog_title_error), )
content = stringResource(CommonStrings.screen_notification_settings_edit_failed_updating_default_mode),
onDismiss = { state.eventSink(EditDefaultNotificationSettingStateEvents.ClearError) },
)
}
else -> Unit
}
} }
} }
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable
internal fun EditDefaultNotificationSettingViewPreview( internal fun EditDefaultNotificationSettingViewPreview(

Loading…
Cancel
Save