Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ import SwiftUI
attachmentsDataSource = loadAttachments(from: messages)
}

private func loadAttachments(from messages: LazyCachedMapCollection<ChatMessage>) -> [MonthlyFileAttachments] {
private func loadAttachments(from messages: [ChatMessage]) -> [MonthlyFileAttachments] {
var attachmentMappings = [String: [ChatMessageFileAttachment]]()
var monthAndYearArray = [String]()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import StreamChat
/// - messages, the collection of updated messages.
func dataSource(
channelDataSource: ChannelDataSource,
didUpdateMessages messages: LazyCachedMapCollection<ChatMessage>,
didUpdateMessages messages: [ChatMessage],
changes: [ListChange<ChatMessage>]
)

Expand All @@ -35,7 +35,7 @@ import StreamChat
var delegate: MessagesDataSource? { get set }

/// List of the messages.
var messages: LazyCachedMapCollection<ChatMessage> { get }
var messages: [ChatMessage] { get }

/// Determines whether all new messages have been fetched.
var hasLoadedAllNextMessages: Bool { get }
Expand Down Expand Up @@ -82,7 +82,7 @@ class ChatChannelDataSource: ChannelDataSource, ChatChannelControllerDelegate {
let controller: ChatChannelController
weak var delegate: MessagesDataSource?

var messages: LazyCachedMapCollection<ChatMessage> {
var messages: [ChatMessage] {
controller.messages
}

Expand Down Expand Up @@ -166,7 +166,7 @@ class MessageThreadDataSource: ChannelDataSource, ChatMessageControllerDelegate

weak var delegate: MessagesDataSource?

var messages: LazyCachedMapCollection<ChatMessage> {
var messages: [ChatMessage] {
var replies = messageController.replies
if let message = messageController.message, replies.last != message {
replies.append(message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import SwiftUI
@Published var showAlertBanner = false

@Published public var currentDateString: String?
@Published public var messages = LazyCachedMapCollection<ChatMessage>() {
@Published public var messages = [ChatMessage]() {
didSet {
if utils.messageListConfig.groupMessages {
groupMessages()
Expand Down Expand Up @@ -416,7 +416,7 @@ import SwiftUI

func dataSource(
channelDataSource: ChannelDataSource,
didUpdateMessages messages: LazyCachedMapCollection<ChatMessage>,
didUpdateMessages messages: [ChatMessage],
changes: [ListChange<ChatMessage>]
) {
if !isActive {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class MessageListDateUtils {
/// - Returns: optional index.
func indexForMessageDate(
message: ChatMessage,
in messages: LazyCachedMapCollection<ChatMessage>
in messages: [ChatMessage]
) -> Int? {
if messageListConfig.dateIndicatorPlacement != .messageList {
// Index computation will be done onAppear.
Expand All @@ -36,7 +36,7 @@ class MessageListDateUtils {
/// - Returns: optional index.
func index(
for message: ChatMessage,
in messages: LazyCachedMapCollection<ChatMessage>
in messages: [ChatMessage]
) -> Int? {
let index = messages.firstIndex { msg in
msg.id == message.id
Expand All @@ -52,7 +52,7 @@ class MessageListDateUtils {
/// - Returns: optional date, shown above a message.
func showMessageDate(
for index: Int?,
in messages: LazyCachedMapCollection<ChatMessage>
in messages: [ChatMessage]
) -> Date? {
guard let index else {
return nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public struct MessageListView<Factory: ViewFactory>: View, KeyboardReadable {

var factory: Factory
var channel: ChatChannel
var messages: LazyCachedMapCollection<ChatMessage>
var messages: [ChatMessage]
var messagesGroupingInfo: [String: [String]]
@Binding var scrolledId: String?
@Binding var showScrollToLatestButton: Bool
Expand Down Expand Up @@ -65,7 +65,7 @@ public struct MessageListView<Factory: ViewFactory>: View, KeyboardReadable {
public init(
factory: Factory,
channel: ChatChannel,
messages: LazyCachedMapCollection<ChatMessage>,
messages: [ChatMessage],
messagesGroupingInfo: [String: [String]],
scrolledId: Binding<String?>,
showScrollToLatestButton: Binding<Bool>,
Expand Down Expand Up @@ -108,10 +108,7 @@ public struct MessageListView<Factory: ViewFactory>: View, KeyboardReadable {
}
skipRenderingMessageIds = messageRenderingUtil.messagesToSkipRendering(newMessages: messages)
if !skipRenderingMessageIds.isEmpty {
self.messages = LazyCachedMapCollection(
source: messages.filter { !skipRenderingMessageIds.contains($0.id) },
map: { $0 }
)
self.messages = messages.filter { !skipRenderingMessageIds.contains($0.id) }
}
}

Expand Down Expand Up @@ -589,7 +586,7 @@ private class MessageRenderingUtil {
self.previousTopMessage = previousTopMessage
}

func messagesToSkipRendering(newMessages: LazyCachedMapCollection<ChatMessage>) -> [String] {
func messagesToSkipRendering(newMessages: [ChatMessage]) -> [String] {
let newTopMessage = newMessages.first
if newTopMessage?.id == previousTopMessage?.id {
return []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public struct ChannelList<Factory: ViewFactory>: View {
@Injected(\.colors) private var colors

private var factory: Factory
var channels: LazyCachedMapCollection<ChatChannel>
var channels: [ChatChannel]
@Binding var selectedChannel: ChannelSelectionInfo?
@Binding var swipedChannelId: String?
@Binding var scrolledChannelId: String?
Expand All @@ -28,7 +28,7 @@ public struct ChannelList<Factory: ViewFactory>: View {

public init(
factory: Factory,
channels: LazyCachedMapCollection<ChatChannel>,
channels: [ChatChannel],
selectedChannel: Binding<ChannelSelectionInfo?>,
swipedChannelId: Binding<String?>,
scrolledChannelId: Binding<String?> = .constant(nil),
Expand Down Expand Up @@ -123,7 +123,7 @@ public struct ChannelsLazyVStack<Factory: ViewFactory>: View {
@Injected(\.utils) private var utils

private var factory: Factory
var channels: LazyCachedMapCollection<ChatChannel>
var channels: [ChatChannel]
@Binding var selectedChannel: ChannelSelectionInfo?
@Binding var swipedChannelId: String?
private var onlineIndicatorShown: @MainActor (ChatChannel) -> Bool
Expand All @@ -138,7 +138,7 @@ public struct ChannelsLazyVStack<Factory: ViewFactory>: View {

public init(
factory: Factory,
channels: LazyCachedMapCollection<ChatChannel>,
channels: [ChatChannel],
selectedChannel: Binding<ChannelSelectionInfo?>,
swipedChannelId: Binding<String?>,
onlineIndicatorShown: @escaping @MainActor (ChatChannel) -> Bool,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import UIKit
private var selectedChannelId: String?

/// Temporarly holding changes while message list is shown.
private var queuedChannelsChanges = LazyCachedMapCollection<ChatChannel>()
private var queuedChannelsChanges = [ChatChannel]()

private var timer: Timer?

Expand All @@ -44,7 +44,7 @@ import UIKit
@Published public var scrolledChannelId: String?

/// Published variables.
@Published public var channels = LazyCachedMapCollection<ChatChannel>() {
@Published public var channels = [ChatChannel]() {
didSet {
if !markDirty {
queuedChannelsChanges = []
Expand Down Expand Up @@ -539,7 +539,7 @@ import UIKit
}

private func updateChannels() {
channels = controller?.channels ?? LazyCachedMapCollection<ChatChannel>()
channels = controller?.channels ?? [ChatChannel]()
}

private func handleChannelAppearance() {
Expand Down Expand Up @@ -586,7 +586,7 @@ import UIKit
temp[index] = selected
}
markDirty = true
channels = LazyCachedMapCollection(source: temp, map: { $0 })
channels = temp
}

private func scrollToAndOpen(channel: ChatChannel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import SwiftUI
/// Stateless component for the channel list.
/// If used directly, you should provide the thread list.
public struct ThreadList<Factory: ViewFactory, HeaderView: View, FooterView: View>: View {
var threads: LazyCachedMapCollection<ChatThread>
var threads: [ChatThread]
private var factory: Factory
private var threadDestination: @MainActor (ChatThread) -> Factory.ThreadDestination
@Binding private var selectedThread: ThreadSelectionInfo?
Expand All @@ -24,7 +24,7 @@ public struct ThreadList<Factory: ViewFactory, HeaderView: View, FooterView: Vie

public init(
factory: Factory,
threads: LazyCachedMapCollection<ChatThread>,
threads: [ChatThread],
threadDestination: @escaping @MainActor (ChatThread) -> Factory.ThreadDestination,
selectedThread: Binding<ThreadSelectionInfo?>,
onItemTap: @escaping (ChatThread) -> Void,
Expand Down Expand Up @@ -63,15 +63,15 @@ public struct ThreadsLazyVStack<Factory: ViewFactory>: View {
@Injected(\.colors) private var colors

private var factory: Factory
var threads: LazyCachedMapCollection<ChatThread>
var threads: [ChatThread]
private var threadDestination: @MainActor (ChatThread) -> Factory.ThreadDestination
@Binding private var selectedThread: ThreadSelectionInfo?
private var onItemTap: (ChatThread) -> Void
private var onItemAppear: (Int) -> Void

public init(
factory: Factory,
threads: LazyCachedMapCollection<ChatThread>,
threads: [ChatThread],
threadDestination: @escaping @MainActor (ChatThread) -> Factory.ThreadDestination,
selectedThread: Binding<ThreadSelectionInfo?>,
onItemTap: @escaping (ChatThread) -> Void,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import StreamChat
@Published public var selectedThread: ThreadSelectionInfo?

/// The list of threads.
@Published public var threads = LazyCachedMapCollection<ChatThread>()
@Published public var threads = [ChatThread]()

/// A boolean indicating if it is loading data from the server and no local cache is available.
@Published public var isLoading = false
Expand Down
1 change: 0 additions & 1 deletion StreamChatSwiftUI.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2659,7 +2659,6 @@
8434E58127707F19001E1B83 /* GridMediaView.swift in Sources */,
ADE0F5662CB962470053B8B9 /* ActionBannerView.swift in Sources */,
84BB4C4C2841104700CBE004 /* MessageListDateUtils.swift in Sources */,
82D64BE72AD7E5B700C5C79E /* ImageTask.swift in Sources */,
84EB881A2E8ABA610076DC17 /* ParticipantInfoView.swift in Sources */,
8465FDC12746A95700AF091E /* NoChannelsView.swift in Sources */,
C14A465B284665B100EF498E /* SDKIdentifier.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public class ChatMessageControllerSUI_Mock: ChatMessageController, @unchecked Se
}

public var replies_mock: [ChatMessage]?
override public var replies: LazyCachedMapCollection<ChatMessage> {
replies_mock.map { $0.lazyCachedMap { $0 } } ?? super.replies
override public var replies: [ChatMessage] {
replies_mock ?? super.replies
}

public var state_mock: State?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ enum ChannelInfoMockUtils {
static func generateMessagesWithAttachments(
withImages: Int = 0,
withVideos: Int = 0
) -> LazyCachedMapCollection<ChatMessage> {
) -> [ChatMessage] {
var result = [ChatMessage]()
for i in 0..<withImages {
let message = ChatMessage.mock(
Expand All @@ -72,12 +72,12 @@ enum ChannelInfoMockUtils {
result.append(message)
}

return LazyCachedMapCollection(source: result) { $0 }
return result
}

static func generateMessagesWithFileAttachments(
count: Int
) -> LazyCachedMapCollection<ChatMessage> {
) -> [ChatMessage] {
var result = [ChatMessage]()
for i in 0..<count {
let message = ChatMessage.mock(
Expand All @@ -90,12 +90,12 @@ enum ChannelInfoMockUtils {
result.append(message)
}

return LazyCachedMapCollection(source: result) { $0 }
return result
}

static func generateMessagesWithPdfAttachments(
count: Int
) -> LazyCachedMapCollection<ChatMessage> {
) -> [ChatMessage] {
var result = [ChatMessage]()
for i in 0..<count {
let message = ChatMessage.mock(
Expand All @@ -108,7 +108,7 @@ enum ChannelInfoMockUtils {
result.append(message)
}

return LazyCachedMapCollection(source: result) { $0 }
return result
}

static func generateMockUsers(count: Int) -> [ChatUser] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import XCTest
let additional = Array(ChannelInfoMockUtils.generateMessagesWithFileAttachments(count: 20))
var current = Array(messages)
current.append(contentsOf: additional)
messages = LazyCachedMapCollection(source: current) { $0 }
messages = current
messageSearchController.messages_mock = messages

// Initial load, when only the 5th attachment is displayed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ import XCTest

func dataSource(
channelDataSource: ChannelDataSource,
didUpdateMessages messages: LazyCachedMapCollection<ChatMessage>,
didUpdateMessages messages: [ChatMessage],
changes: [ListChange<ChatMessage>]
) {
updateMessagesCalled = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ import XCTest
viewModel.messageSentTapped()
viewModel.dataSource(
channelDataSource: ChatChannelDataSource(controller: channelController),
didUpdateMessages: LazyCachedMapCollection(elements: messages),
didUpdateMessages: messages,
changes: [
.insert(messages[0], index: .init(item: 0, section: 0)),
.update(messages[1], index: .init(item: 1, section: 0))
Expand Down Expand Up @@ -549,7 +549,7 @@ import XCTest
let message3 = ChatMessage.mock()
let channelController = makeChannelController(messages: [message1, message2])
let viewModel = ChatChannelViewModel(channelController: channelController)
let newMessages = LazyCachedMapCollection(elements: [message1, message2, message3])
let newMessages = [message1, message2, message3]

// When
viewModel.dataSource(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ class MessageListDateUtils_Tests: StreamChatTestCase {
createdAt: Date(timeIntervalSince1970: -100_000)
)

private lazy var messages = LazyCachedMapCollection(source: [testMessage], map: { $0 })
private lazy var messagesSameDay = LazyCachedMapCollection(source: [testMessage, testMessageSameDay], map: { $0 })
private lazy var messagesDifferentDay = LazyCachedMapCollection(source: [testMessage, testMessageOtherDay], map: { $0 })
private lazy var messages = [testMessage]
private lazy var messagesSameDay = [testMessage, testMessageSameDay]
private lazy var messagesDifferentDay = [testMessage, testMessageOtherDay]

func test_indexForMessageDate_messageListConfig() {
// Given
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ import XCTest
text: "Test",
author: .mock(id: .unique)
)]
let messages = LazyCachedMapCollection(source: temp, map: { $0 })
let messages = temp
let messageListView = MessageListView(
factory: DefaultViewFactory.shared,
channel: channel,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ import XCTest
messages: [ChatMessage],
channel: ChatChannel
) -> some View {
let messages = LazyCachedMapCollection(source: messages, map: { $0 })
let messages = messages
let messageListView = MessageListView(
factory: DefaultViewFactory.shared,
channel: channel,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ import XCTest
author: .mock(id: .unique),
reactionScores: reactions
)]
let messages = LazyCachedMapCollection(source: temp, map: { $0 })
let messages = temp
let messageListView = MessageListView(
factory: DefaultViewFactory.shared,
channel: channel,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ private class MockChatThreadListViewModel: ChatThreadListViewModel {
hasNewThreads: Bool
) {
self.init(threadListController: nil, eventsController: nil)
self.threads = LazyCachedMapCollection(elements: threads)
self.threads = threads
self.isLoading = isLoading
self.isReloading = isReloading
self.isEmpty = isEmpty
Expand Down
Loading
Loading