Improve API: use RoomId instead of String.

This commit is contained in:
Benoit Marty 2025-11-19 10:07:34 +01:00
parent 88f0111137
commit d8cacba43a
5 changed files with 11 additions and 10 deletions

View file

@ -23,6 +23,7 @@ import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.architecture.runUpdatingStateNoSuccess import io.element.android.libraries.architecture.runUpdatingStateNoSuccess
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.RoomListService
@ -125,10 +126,10 @@ class EditDefaultNotificationSettingPresenter(
summaries: List<RoomSummary>, summaries: List<RoomSummary>,
roomsWithUserDefinedMode: MutableState<List<EditNotificationSettingRoomInfo>> roomsWithUserDefinedMode: MutableState<List<EditNotificationSettingRoomInfo>>
) { ) {
val roomWithUserDefinedRules: Set<String> = notificationSettingsService.getRoomsWithUserDefinedRules().getOrDefault(emptyList()).toSet() val roomWithUserDefinedRules: Set<RoomId> = notificationSettingsService.getRoomsWithUserDefinedRules().getOrDefault(emptyList()).toSet()
roomsWithUserDefinedMode.value = summaries roomsWithUserDefinedMode.value = summaries
.filter { roomSummary -> .filter { roomSummary ->
roomWithUserDefinedRules.contains(roomSummary.roomId.value) && roomSummary.isOneToOne == isOneToOne roomWithUserDefinedRules.contains(roomSummary.roomId) && roomSummary.isOneToOne == isOneToOne
} }
.map { roomSummary -> .map { roomSummary ->
EditNotificationSettingRoomInfo( EditNotificationSettingRoomInfo(

View file

@ -51,7 +51,7 @@ class EditDefaultNotificationSettingsPresenterTest {
val notificationSettingsService = FakeNotificationSettingsService( val notificationSettingsService = FakeNotificationSettingsService(
initialRoomMode = RoomNotificationMode.ALL_MESSAGES, initialRoomMode = RoomNotificationMode.ALL_MESSAGES,
initialRoomModeIsDefault = false, initialRoomModeIsDefault = false,
getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID.value)) }, getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID)) },
) )
val roomListService = FakeRoomListService() val roomListService = FakeRoomListService()
val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService) val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService)
@ -69,7 +69,7 @@ class EditDefaultNotificationSettingsPresenterTest {
val notificationSettingsService = FakeNotificationSettingsService( val notificationSettingsService = FakeNotificationSettingsService(
initialRoomMode = RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY, initialRoomMode = RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY,
initialRoomModeIsDefault = false, initialRoomModeIsDefault = false,
getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID.value, A_ROOM_ID_2.value)) }, getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID, A_ROOM_ID_2)) },
) )
val roomListService = FakeRoomListService() val roomListService = FakeRoomListService()
val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService) val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService)
@ -101,7 +101,7 @@ class EditDefaultNotificationSettingsPresenterTest {
val notificationSettingsService = FakeNotificationSettingsService( val notificationSettingsService = FakeNotificationSettingsService(
initialRoomMode = RoomNotificationMode.MUTE, initialRoomMode = RoomNotificationMode.MUTE,
initialRoomModeIsDefault = false, initialRoomModeIsDefault = false,
getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID.value, A_ROOM_ID_2.value)) }, getRoomsWithUserDefinedRulesResult = { Result.success(listOf(A_ROOM_ID, A_ROOM_ID_2)) },
) )
val roomListService = FakeRoomListService() val roomListService = FakeRoomListService()
val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService) val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService, roomListService)

View file

@ -32,7 +32,7 @@ interface NotificationSettingsService {
suspend fun setCallEnabled(enabled: Boolean): Result<Unit> suspend fun setCallEnabled(enabled: Boolean): Result<Unit>
suspend fun isInviteForMeEnabled(): Result<Boolean> suspend fun isInviteForMeEnabled(): Result<Boolean>
suspend fun setInviteForMeEnabled(enabled: Boolean): Result<Unit> suspend fun setInviteForMeEnabled(enabled: Boolean): Result<Unit>
suspend fun getRoomsWithUserDefinedRules(): Result<List<String>> suspend fun getRoomsWithUserDefinedRules(): Result<List<RoomId>>
suspend fun canHomeServerPushEncryptedEventsToDevice(): Result<Boolean> suspend fun canHomeServerPushEncryptedEventsToDevice(): Result<Boolean>
suspend fun getRawPushRules(): Result<String?> suspend fun getRawPushRules(): Result<String?>
} }

View file

@ -131,9 +131,9 @@ class RustNotificationSettingsService(
} }
} }
override suspend fun getRoomsWithUserDefinedRules(): Result<List<String>> = override suspend fun getRoomsWithUserDefinedRules(): Result<List<RoomId>> =
runCatchingExceptions { runCatchingExceptions {
notificationSettings.await().getRoomsWithUserDefinedRules(enabled = true) notificationSettings.await().getRoomsWithUserDefinedRules(enabled = true).map(::RoomId)
} }
override suspend fun canHomeServerPushEncryptedEventsToDevice(): Result<Boolean> = override suspend fun canHomeServerPushEncryptedEventsToDevice(): Result<Boolean> =

View file

@ -25,7 +25,7 @@ class FakeNotificationSettingsService(
initialOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, initialOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES,
initialEncryptedOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, initialEncryptedOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES,
private val getRawPushRulesResult: () -> Result<String> = { lambdaError() }, private val getRawPushRulesResult: () -> Result<String> = { lambdaError() },
private val getRoomsWithUserDefinedRulesResult: () -> Result<List<String>> = { lambdaError() }, private val getRoomsWithUserDefinedRulesResult: () -> Result<List<RoomId>> = { lambdaError() },
) : NotificationSettingsService { ) : NotificationSettingsService {
private val notificationSettingsStateFlow = MutableStateFlow(Unit) private val notificationSettingsStateFlow = MutableStateFlow(Unit)
private var defaultGroupRoomNotificationMode: RoomNotificationMode = initialGroupDefaultMode private var defaultGroupRoomNotificationMode: RoomNotificationMode = initialGroupDefaultMode
@ -154,7 +154,7 @@ class FakeNotificationSettingsService(
return Result.success(Unit) return Result.success(Unit)
} }
override suspend fun getRoomsWithUserDefinedRules(): Result<List<String>> { override suspend fun getRoomsWithUserDefinedRules(): Result<List<RoomId>> {
return getRoomsWithUserDefinedRulesResult() return getRoomsWithUserDefinedRulesResult()
} }