Skip to content

Commit e9f9640

Browse files
Small performance improvements
1 parent fd7f55e commit e9f9640

File tree

6 files changed

+18
-15
lines changed

6 files changed

+18
-15
lines changed

DemoAppSwiftUI/CustomChannelHeader.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public struct CustomChannelHeader: ToolbarContent {
3535
logoutAlertShown = true
3636
} label: {
3737
LazyImage(source: currentUserController.currentUser?.imageURL)
38-
.onDisappear(.reset)
38+
.onDisappear(.cancel)
3939
.clipShape(Circle())
4040
.frame(
4141
width: 30,

DemoAppSwiftUI/LoginView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ struct DemoUserView: View {
5858
var body: some View {
5959
HStack {
6060
LazyImage(source: user.avatarURL)
61-
.onDisappear(.reset)
61+
.onDisappear(.cancel)
6262
.clipShape(Circle())
6363
.frame(
6464
width: imageSize,

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
1818
private var cancellables = Set<AnyCancellable>()
1919
private var lastRefreshThreshold = 200
2020
private let refreshThreshold = 200
21-
private var timer: DispatchSourceTimer?
22-
private let queue = DispatchQueue(label: "io.getstream.background.timer")
21+
private var timer: Timer?
2322
private var currentDate: Date? {
2423
didSet {
2524
handleDateChange()
@@ -217,7 +216,7 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
217216
loadingPreviousMessages = true
218217
channelDataSource.loadPreviousMessages(
219218
before: nil,
220-
limit: 50,
219+
limit: utils.messageListConfig.pageSize,
221220
completion: { [weak self] _ in
222221
guard let self = self else { return }
223222
self.loadingPreviousMessages = false
@@ -228,13 +227,14 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
228227

229228
private func save(lastDate: Date) {
230229
currentDate = lastDate
231-
timer?.cancel()
232-
timer = DispatchSource.makeTimerSource(queue: queue)
233-
timer?.schedule(deadline: .now() + 0.5, repeating: .never)
234-
timer?.setEventHandler(handler: { [weak self] in
235-
self?.currentDate = nil
236-
})
237-
timer?.resume()
230+
timer?.invalidate()
231+
timer = Timer.scheduledTimer(
232+
withTimeInterval: 0.5,
233+
repeats: false,
234+
block: { [weak self] _ in
235+
self?.currentDate = nil
236+
}
237+
)
238238
}
239239

240240
private func maybeSendReadEvent(for message: ChatMessage) {

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageContainerView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ struct MessageContainerView<Factory: ViewFactory>: View {
136136
}
137137
})
138138

139-
if message.replyCount > 0 && !message.threadParticipants.isEmpty && !isInThread {
139+
if message.replyCount > 0 && !isInThread {
140140
MessageRepliesView(
141141
factory: factory,
142142
channel: channel,

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListConfig.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ public struct MessageListConfig {
1313
groupMessages: Bool = true,
1414
messageDisplayOptions: MessageDisplayOptions = MessageDisplayOptions(),
1515
messagePaddings: MessagePaddings = MessagePaddings(),
16-
dateIndicatorPlacement: DateIndicatorPlacement = .overlay
16+
dateIndicatorPlacement: DateIndicatorPlacement = .overlay,
17+
pageSize: Int = 50
1718
) {
1819
self.messageListType = messageListType
1920
self.typingIndicatorPlacement = typingIndicatorPlacement
2021
self.groupMessages = groupMessages
2122
self.messageDisplayOptions = messageDisplayOptions
2223
self.messagePaddings = messagePaddings
2324
self.dateIndicatorPlacement = dateIndicatorPlacement
25+
self.pageSize = pageSize
2426
}
2527

2628
let messageListType: MessageListType
@@ -29,6 +31,7 @@ public struct MessageListConfig {
2931
let messageDisplayOptions: MessageDisplayOptions
3032
let messagePaddings: MessagePaddings
3133
let dateIndicatorPlacement: DateIndicatorPlacement
34+
let pageSize: Int
3235
}
3336

3437
/// Contains information about the message paddings.

Sources/StreamChatSwiftUI/Utils/Common/ChatMessage+Extensions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public extension ChatMessage {
7878
///
7979
/// Note that for messages sent with attachments, large emojis aren's rendered
8080
var shouldRenderAsJumbomoji: Bool {
81-
guard attachmentCounts.isEmpty, let textContent = textContent, !textContent.isEmpty else { return false }
81+
guard let textContent = textContent, !textContent.isEmpty else { return false }
8282
return textContent.count <= 3 && textContent.containsOnlyEmoji
8383
}
8484
}

0 commit comments

Comments
 (0)