From 9e17d8f46807c4cc520c6c23322861b85161c8ac Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 17 Aug 2023 13:50:49 +0200 Subject: [PATCH] Fix PR comments --- .../roomdetails/impl/RoomDetailsView.kt | 34 ++++++++++--------- .../libraries/matrix/impl/RustMatrixClient.kt | 2 ++ .../RustNotificationSettingsService.kt | 8 ++--- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt index f5a1146da5..0ad5778cb2 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt @@ -150,7 +150,7 @@ fun RoomDetailsView( if (state.canShowNotificationSettings && state.roomNotificationSettings != null) { NotificationSection( - state = state, + isDefaultMode = state.roomNotificationSettings.isDefault, openRoomNotificationSettings = openRoomNotificationSettings) } @@ -304,21 +304,23 @@ internal fun TopicSection( } @Composable -internal fun NotificationSection(state: RoomDetailsState, openRoomNotificationSettings: () -> Unit, modifier: Modifier = Modifier) { - state.roomNotificationSettings?.let { - val subtitle = if (it.isDefault) { - stringResource(R.string.screen_room_details_notification_mode_default) - } else { - stringResource(R.string.screen_room_details_notification_mode_custom) - } - PreferenceCategory(modifier = modifier) { - PreferenceText( - title = stringResource(R.string.screen_room_details_notification_title), - subtitle = subtitle, - icon = Icons.Outlined.Notifications, - onClick = openRoomNotificationSettings, - ) - } +internal fun NotificationSection( + isDefaultMode: Boolean, + openRoomNotificationSettings: () -> Unit, + modifier: Modifier = Modifier +) { + val subtitle = if (isDefaultMode) { + stringResource(R.string.screen_room_details_notification_mode_default) + } else { + stringResource(R.string.screen_room_details_notification_mode_custom) + } + PreferenceCategory(modifier = modifier) { + PreferenceText( + title = stringResource(R.string.screen_room_details_notification_title), + subtitle = subtitle, + icon = Icons.Outlined.Notifications, + onClick = openRoomNotificationSettings, + ) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index e3f675cc2b..408e0aeef7 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -282,6 +282,8 @@ class RustMatrixClient constructor( override fun close() { sessionCoroutineScope.cancel() client.setDelegate(null) + notificationSettings.setDelegate(null) + notificationSettings.destroy() verificationService.destroy() syncService.destroy() innerRoomListService.destroy() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt index aa3fff8608..1b1d51214f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt @@ -26,8 +26,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.withContext -import org.matrix.rustcomponents.sdk.Client -import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.NotificationSettings import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate @@ -65,17 +63,19 @@ class RustNotificationSettingsService( } } - override suspend fun restoreDefaultRoomNotificationMode(roomId: RoomId): Result = + override suspend fun restoreDefaultRoomNotificationMode(roomId: RoomId): Result = withContext(dispatchers.io) { runCatching { notificationSettings.restoreDefaultRoomNotificationMode(roomId.value) } + } override suspend fun muteRoom(roomId: RoomId): Result = setRoomNotificationMode(roomId, RoomNotificationMode.MUTE) - override suspend fun unmuteRoom(roomId: RoomId, isEncrypted: Boolean, membersCount: Long) = + override suspend fun unmuteRoom(roomId: RoomId, isEncrypted: Boolean, membersCount: Long) = withContext(dispatchers.io) { runCatching { notificationSettings.unmuteRoom(roomId.value, isEncrypted, isOneToOne(membersCount)) } + } /** * A one-to-one is a room with exactly 2 members.