android: Fix blocked thread while making live messages (#1739)

* android: Fix blocked thread while making live messages

* Test

* Revert "Test"

This reverts commit bd8a5b6ca0.
This commit is contained in:
Stanislav Dmitrenko
2023-01-13 18:33:52 +00:00
committed by GitHub
parent e73f5c40cf
commit 2085dc5d60
4 changed files with 10 additions and 10 deletions

View File

@@ -157,7 +157,7 @@ class ChatModel(val controller: ChatController) {
}
}
fun addChatItem(cInfo: ChatInfo, cItem: ChatItem) {
suspend fun addChatItem(cInfo: ChatInfo, cItem: ChatItem) {
// update previews
val i = getChatIndex(cInfo.id)
val chat: Chat
@@ -181,7 +181,7 @@ class ChatModel(val controller: ChatController) {
}
// add to current chat
if (chatId.value == cInfo.id) {
runBlocking(Dispatchers.Main) {
withContext(Dispatchers.Main) {
if (chatItems.lastOrNull()?.id == ChatItem.TEMP_LIVE_CHAT_ITEM_ID) {
chatItems.add(kotlin.math.max(0, chatItems.lastIndex), cItem)
} else {
@@ -191,7 +191,7 @@ class ChatModel(val controller: ChatController) {
}
}
fun upsertChatItem(cInfo: ChatInfo, cItem: ChatItem): Boolean {
suspend fun upsertChatItem(cInfo: ChatInfo, cItem: ChatItem): Boolean {
// update previews
val i = getChatIndex(cInfo.id)
val chat: Chat
@@ -218,7 +218,7 @@ class ChatModel(val controller: ChatController) {
chatItems[itemIndex] = cItem
return false
} else {
runBlocking(Dispatchers.Main) {
withContext(Dispatchers.Main) {
chatItems.add(cItem)
}
return true
@@ -264,9 +264,9 @@ class ChatModel(val controller: ChatController) {
}
}
fun addLiveDummy(chatInfo: ChatInfo): ChatItem {
suspend fun addLiveDummy(chatInfo: ChatInfo): ChatItem {
val cItem = ChatItem.liveDummy(chatInfo is ChatInfo.Direct)
runBlocking(Dispatchers.Main) {
withContext(Dispatchers.Main) {
chatItems.add(cItem)
}
return cItem

View File

@@ -1023,7 +1023,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
AlertManager.shared.showAlertMsg(title, errMsg)
}
fun processReceivedMsg(r: CR) {
suspend fun processReceivedMsg(r: CR) {
lastMsgReceivedTimestamp = System.currentTimeMillis()
chatModel.terminalItems.add(TerminalItem.resp(r))
when (r) {
@@ -1257,7 +1257,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a
}
}
private fun chatItemSimpleUpdate(aChatItem: AChatItem) {
private suspend fun chatItemSimpleUpdate(aChatItem: AChatItem) {
val cInfo = aChatItem.chatInfo
val cItem = aChatItem.chatItem
if (chatModel.upsertChatItem(cInfo, cItem)) {

View File

@@ -174,7 +174,7 @@ fun TerminalLog(terminalItems: List<TerminalItem>) {
DisposableEffect(Unit) {
onDispose { lazyListState = listState.firstVisibleItemIndex to listState.firstVisibleItemScrollOffset }
}
val reversedTerminalItems by remember { derivedStateOf { terminalItems.reversed() } }
val reversedTerminalItems by remember { derivedStateOf { terminalItems.reversed().toList() } }
LazyColumn(state = listState, reverseLayout = true) {
items(reversedTerminalItems) { item ->
Text(

View File

@@ -529,7 +529,7 @@ fun BoxWithConstraintsScope.ChatItemsList(
}
Spacer(Modifier.size(8.dp))
val reversedChatItems by remember { derivedStateOf { chatItems.reversed() } }
val reversedChatItems by remember { derivedStateOf { chatItems.reversed().toList() } }
val maxHeightRounded = with(LocalDensity.current) { maxHeight.roundToPx() }
val scrollToItem: (Long) -> Unit = { itemId: Long ->
val index = reversedChatItems.indexOfFirst { it.id == itemId }