Browse Source

Fix PR comments

pull/1037/head
yostyle 1 year ago
parent
commit
9e17d8f468
  1. 34
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt
  2. 2
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  3. 8
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt

34
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) { if (state.canShowNotificationSettings && state.roomNotificationSettings != null) {
NotificationSection( NotificationSection(
state = state, isDefaultMode = state.roomNotificationSettings.isDefault,
openRoomNotificationSettings = openRoomNotificationSettings) openRoomNotificationSettings = openRoomNotificationSettings)
} }
@ -304,21 +304,23 @@ internal fun TopicSection(
} }
@Composable @Composable
internal fun NotificationSection(state: RoomDetailsState, openRoomNotificationSettings: () -> Unit, modifier: Modifier = Modifier) { internal fun NotificationSection(
state.roomNotificationSettings?.let { isDefaultMode: Boolean,
val subtitle = if (it.isDefault) { openRoomNotificationSettings: () -> Unit,
stringResource(R.string.screen_room_details_notification_mode_default) modifier: Modifier = Modifier
} else { ) {
stringResource(R.string.screen_room_details_notification_mode_custom) val subtitle = if (isDefaultMode) {
} stringResource(R.string.screen_room_details_notification_mode_default)
PreferenceCategory(modifier = modifier) { } else {
PreferenceText( stringResource(R.string.screen_room_details_notification_mode_custom)
title = stringResource(R.string.screen_room_details_notification_title), }
subtitle = subtitle, PreferenceCategory(modifier = modifier) {
icon = Icons.Outlined.Notifications, PreferenceText(
onClick = openRoomNotificationSettings, title = stringResource(R.string.screen_room_details_notification_title),
) subtitle = subtitle,
} icon = Icons.Outlined.Notifications,
onClick = openRoomNotificationSettings,
)
} }
} }

2
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

@ -282,6 +282,8 @@ class RustMatrixClient constructor(
override fun close() { override fun close() {
sessionCoroutineScope.cancel() sessionCoroutineScope.cancel()
client.setDelegate(null) client.setDelegate(null)
notificationSettings.setDelegate(null)
notificationSettings.destroy()
verificationService.destroy() verificationService.destroy()
syncService.destroy() syncService.destroy()
innerRoomListService.destroy() innerRoomListService.destroy()

8
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.SharedFlow
import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.withContext 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.NotificationSettings
import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate
@ -65,17 +63,19 @@ class RustNotificationSettingsService(
} }
} }
override suspend fun restoreDefaultRoomNotificationMode(roomId: RoomId): Result<Unit> = override suspend fun restoreDefaultRoomNotificationMode(roomId: RoomId): Result<Unit> = withContext(dispatchers.io) {
runCatching { runCatching {
notificationSettings.restoreDefaultRoomNotificationMode(roomId.value) notificationSettings.restoreDefaultRoomNotificationMode(roomId.value)
} }
}
override suspend fun muteRoom(roomId: RoomId): Result<Unit> = setRoomNotificationMode(roomId, RoomNotificationMode.MUTE) override suspend fun muteRoom(roomId: RoomId): Result<Unit> = 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 { runCatching {
notificationSettings.unmuteRoom(roomId.value, isEncrypted, isOneToOne(membersCount)) notificationSettings.unmuteRoom(roomId.value, isEncrypted, isOneToOne(membersCount))
} }
}
/** /**
* A one-to-one is a room with exactly 2 members. * A one-to-one is a room with exactly 2 members.

Loading…
Cancel
Save