fix search

This commit is contained in:
JinJiangHuang
2026-03-01 22:57:20 +08:00
parent ee8c71dcd4
commit e58322339f
4 changed files with 58 additions and 4 deletions
+10
View File
@@ -17,6 +17,8 @@ class SearchViewModel: ObservableObject {
///
private let sourceService = SourceService.shared
///
private var latestSearchRequestId: UUID = UUID()
///
init() {
@@ -27,6 +29,8 @@ class SearchViewModel: ObservableObject {
func search() async {
let trimmed = keyword.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return }
let requestId = UUID()
latestSearchRequestId = requestId
isSearching = true
errorMessage = nil
@@ -37,6 +41,7 @@ class SearchViewModel: ObservableObject {
//
let videos = await sourceService.searchAll(keyword: trimmed)
guard requestId == latestSearchRequestId else { return }
self.results = videos
if videos.isEmpty {
@@ -50,13 +55,18 @@ class SearchViewModel: ObservableObject {
func searchInSource(_ source: SourceBean) async {
let trimmed = keyword.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return }
let requestId = UUID()
latestSearchRequestId = requestId
isSearching = true
errorMessage = nil
do {
let videos = try await sourceService.search(sourceBean: source, keyword: trimmed)
guard requestId == latestSearchRequestId else { return }
self.results = videos
} catch {
guard requestId == latestSearchRequestId else { return }
errorMessage = error.localizedDescription
}