Add debouncing to observeNotificationSettings.
This should conceal a bit the issue with notification settings 'flashing' when we receive an update.
This commit is contained in:
parent
e59d37fc0d
commit
675b3ab383
1 changed files with 13 additions and 3 deletions
|
|
@ -30,10 +30,14 @@ import io.element.android.libraries.matrix.api.room.MatrixRoom
|
||||||
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.room.roomNotificationSettings
|
import io.element.android.libraries.matrix.api.room.roomNotificationSettings
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.FlowPreview
|
||||||
|
import kotlinx.coroutines.flow.debounce
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
class RoomNotificationSettingsPresenter @Inject constructor(
|
class RoomNotificationSettingsPresenter @Inject constructor(
|
||||||
private val room: MatrixRoom,
|
private val room: MatrixRoom,
|
||||||
|
|
@ -71,6 +75,8 @@ class RoomNotificationSettingsPresenter @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timber.d("NotifState: $roomNotificationSettingsState")
|
||||||
|
|
||||||
return RoomNotificationSettingsState(
|
return RoomNotificationSettingsState(
|
||||||
roomNotificationSettings = roomNotificationSettingsState.roomNotificationSettings(),
|
roomNotificationSettings = roomNotificationSettingsState.roomNotificationSettings(),
|
||||||
defaultRoomNotificationMode = defaultRoomNotificationMode.value,
|
defaultRoomNotificationMode = defaultRoomNotificationMode.value,
|
||||||
|
|
@ -78,10 +84,14 @@ class RoomNotificationSettingsPresenter @Inject constructor(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(FlowPreview::class)
|
||||||
private fun CoroutineScope.observeNotificationSettings() {
|
private fun CoroutineScope.observeNotificationSettings() {
|
||||||
notificationSettingsService.notificationSettingsChangeFlow.onEach {
|
notificationSettingsService.notificationSettingsChangeFlow
|
||||||
room.updateRoomNotificationSettings()
|
.debounce(0.5.seconds)
|
||||||
}.launchIn(this)
|
.onEach {
|
||||||
|
room.updateRoomNotificationSettings()
|
||||||
|
}
|
||||||
|
.launchIn(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun CoroutineScope.getDefaultRoomNotificationMode(defaultRoomNotificationMode: MutableState<RoomNotificationMode?>) = launch {
|
private fun CoroutineScope.getDefaultRoomNotificationMode(defaultRoomNotificationMode: MutableState<RoomNotificationMode?>) = launch {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue