Fix iOS chat scroll pinning

This commit is contained in:
2026-06-07 19:58:04 -07:00
parent 8f6e8c17a5
commit 22aa652257
4 changed files with 86 additions and 28 deletions

View File

@@ -107,6 +107,7 @@ final class SybilViewModel {
var isLoadingCollections = false
var isLoadingSelection = false
var isCreatingSearchChat = false
var chatBottomPinRequestID = 0
var errorMessage: String?
var composer = ""
@@ -1699,6 +1700,10 @@ final class SybilViewModel {
isLoadingSelection = false
}
private func requestChatBottomPin() {
chatBottomPinRequestID += 1
}
private func startSelectionRefreshTask() -> Task<Void, Never> {
isLoadingSelection = true
let task = Task { [weak self] in
@@ -1752,6 +1757,7 @@ final class SybilViewModel {
}
selectedChat = chat
selectedSearch = nil
requestChatBottomPin()
if let provider = chat.lastUsedProvider,
let model = chat.lastUsedModel,
@@ -1824,6 +1830,7 @@ final class SybilViewModel {
} else {
pendingDraftChatState = PendingChatState(chatID: nil, messages: optimisticMessages)
}
requestChatBottomPin()
if chatID == nil {
let created = try await client.createChat(title: nil)
@@ -1871,6 +1878,7 @@ final class SybilViewModel {
if let draftPending = pendingDraftChatState {
pendingDraftChatState = nil
pendingChatStates[chatID] = PendingChatState(chatID: chatID, messages: draftPending.messages)
requestChatBottomPin()
} else if pendingChatStates[chatID] == nil {
pendingChatStates[chatID] = PendingChatState(chatID: chatID, messages: optimisticMessages)
} else {