Private
Public Access
1
0

Reduce animations in transcript

This commit is contained in:
2025-09-03 17:08:54 -07:00
parent 7675894ba7
commit b2f8abfbff
2 changed files with 15 additions and 5 deletions

View File

@@ -29,7 +29,7 @@ struct TranscriptView: View
.padding()
}
.scaleEffect(CGSize(width: 1.0, height: -1.0))
.id(model.displayedConversation)
.id(model.displayedConversation?.id)
.task { await watchForMessageListChanges() }
}
@@ -39,7 +39,9 @@ struct TranscriptView: View
case .attachmentDownloaded(let attachmentId):
model.attachmentDownloaded(id: attachmentId)
case .messagesUpdated(let conversationId):
if let displayedConversation = model.displayedConversation, conversationId == displayedConversation.id {
if let displayedConversation = model.displayedConversation,
conversationId == displayedConversation.id
{
model.setNeedsReload(animated: true)
}
case .updateStreamReconnected:
@@ -158,9 +160,15 @@ struct TranscriptView: View
do {
let clientMessages = try await client.getMessages(conversationId: displayedConversation.id)
.map { Display.Message(from: $0) }
let newIds = Set(clientMessages.map(\.id))
.subtracting(self.messages.map(\.id))
// Only animate for incoming messages.
let shouldAnimate = (newIds.count == 1)
self.messages = clientMessages
self.rebuildDisplayItems(animated: animated)
self.rebuildDisplayItems(animated: animated && shouldAnimate)
} catch {
print("Message fetch error: \(error)")
}