BugFix for the Notification dot not immediately disappearing after marking all as read.
This commit is contained in:
@@ -127,15 +127,9 @@ private fun ChannelRoomCompose(
|
|||||||
|
|
||||||
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
|
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = note) {
|
WatchNotificationChanges(note, route) { newHasNewMessages ->
|
||||||
launch(Dispatchers.IO) {
|
if (hasNewMessages != newHasNewMessages) {
|
||||||
note.createdAt()?.let { timestamp ->
|
hasNewMessages = newHasNewMessages
|
||||||
val lastTime = NotificationCache.load(route)
|
|
||||||
val newHasNewMessages = timestamp > lastTime
|
|
||||||
if (hasNewMessages != newHasNewMessages) {
|
|
||||||
hasNewMessages = newHasNewMessages
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,24 +175,15 @@ private fun UserRoomCompose(
|
|||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
nav: (String) -> Unit
|
nav: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
val noteEvent = note.event
|
|
||||||
|
|
||||||
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
|
var hasNewMessages by remember { mutableStateOf<Boolean>(false) }
|
||||||
|
|
||||||
val route = remember(user) {
|
val route = remember(user) {
|
||||||
"Room/${user.pubkeyHex}"
|
"Room/${user.pubkeyHex}"
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(key1 = note) {
|
WatchNotificationChanges(note, route) { newHasNewMessages ->
|
||||||
launch(Dispatchers.IO) {
|
if (hasNewMessages != newHasNewMessages) {
|
||||||
noteEvent?.let {
|
hasNewMessages = newHasNewMessages
|
||||||
val lastTime = NotificationCache.load(route)
|
|
||||||
|
|
||||||
val newHasNewMessages = it.createdAt() > lastTime
|
|
||||||
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
|
@Composable
|
||||||
fun LoadUser(baseUserHex: String, content: @Composable (User) -> Unit) {
|
fun LoadUser(baseUserHex: String, content: @Composable (User) -> Unit) {
|
||||||
var user by remember(baseUserHex) {
|
var user by remember(baseUserHex) {
|
||||||
|
|||||||
Reference in New Issue
Block a user