Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

## stream-chat-android-state
### 🐞 Fixed
- Prevent duplicate `GetOrCreateChannel` calls when paginating messages. [#6016](https://github.com/GetStream/stream-chat-android/pull/6016)

### ⬆️ Improved

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,12 @@ internal class ChannelLogic(
val offlineChannel = runChannelQueryOffline(request)

val onlineResult = runChannelQueryOnline(request)
.onSuccess { fillTheGap(request.messagesLimit(), loadedMessages, it.messages) }
.onSuccess {
// Fill the missing messages gap only if loading around ID
if (request.isFilteringAroundIdMessages()) {
fillTheGap(request.messagesLimit(), loadedMessages, it.messages)
}
}

return when {
onlineResult is Result.Success -> onlineResult
Expand Down Expand Up @@ -480,15 +485,6 @@ internal class ChannelLogic(
channelStateLogic.removeMessagesBefore(date, systemMessage)
}

/**
* Hides the messages created before the given date.
*
* @param date The date used for generating result.
*/
internal fun hideMessagesBefore(date: Date) {
channelStateLogic.hideMessagesBefore(date)
}

private fun upsertReminder(messageId: String, reminder: MessageReminder) {
val message = reminder.message ?: mutableState.getMessageById(messageId) ?: return
upsertEventMessage(message.copy(reminder = reminder.toMessageReminderInfo()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1210,15 +1210,14 @@ public class MessageListController(
logger.d { "[loadOlderMessages] messageLimit: $messageLimit" }
if (clientState.isOffline) return

_mode.value.run {
when (this) {
is MessageMode.Normal -> {
if (channelState.value?.endOfOlderMessages?.value == true) return
chatClient.loadOlderMessages(cid, messageLimit).enqueue()
}

is MessageMode.MessageThread -> threadLoadMore(this)
when (val mode = _mode.value) {
is MessageMode.Normal -> {
val endOfOlderMessages = channelState.value?.endOfOlderMessages?.value == true
val loadingOlderMessages = channelState.value?.loadingOlderMessages?.value == true
if (endOfOlderMessages || loadingOlderMessages) return
chatClient.loadOlderMessages(cid, messageLimit).enqueue()
}
is MessageMode.MessageThread -> threadLoadMore(mode)
}
}

Expand Down
Loading