update sync
This commit is contained in:
@@ -8,6 +8,8 @@ public struct ClipboardNotice: Identifiable, Equatable {
|
||||
|
||||
@MainActor
|
||||
public class MenuBarController: NSObject, ObservableObject, NSWindowDelegate {
|
||||
public static let minimumSearchCharacters = 3
|
||||
|
||||
@Published public var config: SyncConfig
|
||||
@Published public var isSyncing = false
|
||||
@Published public var lastSyncTime: Date?
|
||||
@@ -322,7 +324,7 @@ public class MenuBarController: NSObject, ObservableObject, NSWindowDelegate {
|
||||
searchTask?.cancel()
|
||||
|
||||
let trimmed = query.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
guard !trimmed.isEmpty else {
|
||||
guard trimmed.count >= Self.minimumSearchCharacters else {
|
||||
searchResults = []
|
||||
isSearching = false
|
||||
searchError = nil
|
||||
@@ -333,11 +335,11 @@ public class MenuBarController: NSObject, ObservableObject, NSWindowDelegate {
|
||||
searchError = nil
|
||||
searchTask = Task { [weak self] in
|
||||
do {
|
||||
try await Task.sleep(for: .milliseconds(180))
|
||||
try await Task.sleep(for: .milliseconds(300))
|
||||
await self?.performSearch(for: trimmed)
|
||||
} catch {
|
||||
await MainActor.run {
|
||||
if self?.searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) == trimmed {
|
||||
if self?.isCurrentSearchQuery(trimmed) == true {
|
||||
self?.isSearching = false
|
||||
}
|
||||
}
|
||||
@@ -368,18 +370,24 @@ public class MenuBarController: NSObject, ObservableObject, NSWindowDelegate {
|
||||
do {
|
||||
let results = try await apiClient.searchDocuments(query: liveSearchQuery(for: query))
|
||||
guard !Task.isCancelled else { return }
|
||||
guard searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) == query else { return }
|
||||
guard isCurrentSearchQuery(query) else { return }
|
||||
searchResults = Array(results.prefix(8))
|
||||
selectedSearchIndex = min(selectedSearchIndex, max(searchResults.count - 1, 0))
|
||||
searchError = nil
|
||||
} catch {
|
||||
guard !Task.isCancelled else { return }
|
||||
guard isCurrentSearchQuery(query) else { return }
|
||||
searchResults = []
|
||||
searchError = error.localizedDescription
|
||||
}
|
||||
isSearching = false
|
||||
}
|
||||
|
||||
private func isCurrentSearchQuery(_ query: String) -> Bool {
|
||||
let trimmed = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
return trimmed == query && trimmed.count >= Self.minimumSearchCharacters
|
||||
}
|
||||
|
||||
private func resetSearch() {
|
||||
searchTask?.cancel()
|
||||
searchQuery = ""
|
||||
|
||||
Reference in New Issue
Block a user