BugFix for the Notification dot not immediately disappearing after marking all as read.

This commit is contained in:
Vitor Pamplona 2023-06-07 12:24:24 -04:00
parent 90f0e4aad1
commit d334c6b2e1

View File

@ -127,15 +127,9 @@ private fun ChannelRoomCompose(
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
LaunchedEffect(key1 = note) {
launch(Dispatchers.IO) {
note.createdAt()?.let { timestamp ->
val lastTime = NotificationCache.load(route)
val newHasNewMessages = timestamp > lastTime
if (hasNewMessages != newHasNewMessages) {
hasNewMessages = newHasNewMessages
}
}
WatchNotificationChanges(note, route) { newHasNewMessages ->
if (hasNewMessages != newHasNewMessages) {
hasNewMessages = newHasNewMessages
}
}
@ -181,24 +175,15 @@ private fun UserRoomCompose(
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {
val noteEvent = note.event
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
val route = remember(user) {
"Room/${user.pubkeyHex}"
}
LaunchedEffect(key1 = note) {
launch(Dispatchers.IO) {
noteEvent?.let {
val lastTime = NotificationCache.load(route)
val newHasNewMessages = it.createdAt() > lastTime
if (hasNewMessages != newHasNewMessages) {
hasNewMessages = newHasNewMessages
}
}
WatchNotificationChanges(note, route) { newHasNewMessages ->
if (hasNewMessages != newHasNewMessages) {
hasNewMessages = newHasNewMessages
}
}
@ -218,6 +203,24 @@ private fun UserRoomCompose(
)
}
@Composable
private fun WatchNotificationChanges(
note: Note,
route: String,
onNewStatus: (Boolean) -> Unit
) {
val cacheState by NotificationCache.live.observeAsState()
LaunchedEffect(key1 = note, cacheState) {
launch(Dispatchers.IO) {
note.event?.createdAt()?.let {
val lastTime = NotificationCache.load(route)
onNewStatus(it > lastTime)
}
}
}
}
@Composable
fun LoadUser(baseUserHex: String, content: @Composable (User) -> Unit) {
var user by remember(baseUserHex) {