Fixed chat display issue with auto download
This commit is contained in:
parent
318dafaa00
commit
3e61773f53
4 changed files with 20 additions and 27 deletions
|
@ -237,8 +237,7 @@ class ChatMessagesListAdapter(
|
|||
private fun resendMessage() {
|
||||
val chatMessage = binding.viewModel?.chatMessage
|
||||
if (chatMessage != null) {
|
||||
val viewHolder = binding.lifecycleOwner as ChatMessageViewHolder
|
||||
chatMessage.userData = viewHolder.adapterPosition
|
||||
chatMessage.userData = adapterPosition
|
||||
resendMessageEvent.value = Event(chatMessage)
|
||||
}
|
||||
}
|
||||
|
@ -269,8 +268,7 @@ class ChatMessagesListAdapter(
|
|||
private fun deleteMessage() {
|
||||
val chatMessage = binding.viewModel?.chatMessage
|
||||
if (chatMessage != null) {
|
||||
val viewHolder = binding.lifecycleOwner as ChatMessageViewHolder
|
||||
chatMessage.userData = viewHolder.adapterPosition
|
||||
chatMessage.userData = adapterPosition
|
||||
deleteMessageEvent.value = Event(chatMessage)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,13 +79,17 @@ class ChatMessageContentViewModel(
|
|||
isVideo.value = false
|
||||
}
|
||||
} else {
|
||||
Log.i("[Content] Found downloadable content: ${content.name}")
|
||||
if (chatMessage.isFileTransferInProgress) {
|
||||
Log.i("[Content] Found content currently being downloaded: ${content.name}")
|
||||
downloadEnabled.value = false
|
||||
} else {
|
||||
Log.i("[Content] Found downloadable content: ${content.name}")
|
||||
downloadEnabled.value = true
|
||||
}
|
||||
downloadable.value = true
|
||||
isImage.value = false
|
||||
isVideo.value = false
|
||||
}
|
||||
|
||||
downloadEnabled.value = downloadable.value
|
||||
}
|
||||
|
||||
fun download() {
|
||||
|
|
|
@ -58,30 +58,22 @@ class ChatMessagesListViewModel(private val chatRoom: ChatRoom) : ViewModel() {
|
|||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
private val chatMessageListener: ChatMessageListenerStub = object : ChatMessageListenerStub() {
|
||||
override fun onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) {
|
||||
if (state == ChatMessage.State.Displayed) {
|
||||
message.removeListener(this)
|
||||
}
|
||||
|
||||
val position: Int? = message.userData as? Int?
|
||||
if (position != null) {
|
||||
messageUpdatedEvent.value = Event(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val chatRoomListener: ChatRoomListenerStub = object : ChatRoomListenerStub() {
|
||||
override fun onChatMessageReceived(chatRoom: ChatRoom, eventLog: EventLog) {
|
||||
chatRoom.markAsRead()
|
||||
|
||||
val position = events.value?.size ?: 0
|
||||
|
||||
if (eventLog.type == EventLog.Type.ConferenceChatMessage) {
|
||||
val chatMessage = eventLog.chatMessage
|
||||
chatMessage ?: return
|
||||
chatMessage.userData = position
|
||||
chatMessage.addListener(chatMessageListener)
|
||||
chatMessage.userData = events.value.orEmpty().size
|
||||
|
||||
val existingEvent = events.value.orEmpty().find {
|
||||
it.type == EventLog.Type.ConferenceChatMessage && it.chatMessage == chatMessage
|
||||
}
|
||||
if (existingEvent != null) {
|
||||
Log.w("[Chat Messages] Found already present chat message, don't add it it's probably the result of an auto download")
|
||||
return
|
||||
}
|
||||
|
||||
if (Version.sdkStrictlyBelow(Version.API29_ANDROID_10) && !PermissionHelper.get().hasWriteExternalStorage()) {
|
||||
for (content in chatMessage.contents) {
|
||||
|
@ -98,13 +90,12 @@ class ChatMessagesListViewModel(private val chatRoom: ChatRoom) : ViewModel() {
|
|||
}
|
||||
|
||||
override fun onChatMessageSent(chatRoom: ChatRoom, eventLog: EventLog) {
|
||||
val position = events.value?.size ?: 0
|
||||
val position = events.value.orEmpty().size
|
||||
|
||||
if (eventLog.type == EventLog.Type.ConferenceChatMessage) {
|
||||
val chatMessage = eventLog.chatMessage
|
||||
chatMessage ?: return
|
||||
chatMessage.userData = position
|
||||
chatMessage.addListener(chatMessageListener)
|
||||
}
|
||||
|
||||
addEvent(eventLog)
|
||||
|
|
|
@ -123,7 +123,7 @@ class NotificationsManager(private val context: Context) {
|
|||
Call.State.End, Call.State.Error -> dismissCallNotification(call)
|
||||
Call.State.Released -> {
|
||||
if (call.callLog.status == Call.Status.Missed ||
|
||||
call.callLog.status == Call.Status.Aborted ||
|
||||
call.callLog.status == Call.Status.Aborted ||
|
||||
call.callLog.status == Call.Status.EarlyAborted) {
|
||||
displayMissedCallNotification(call)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue