From ef092bde466ec9f27c1c1c42f7f14170ad41bce7 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Mon, 24 Feb 2025 22:45:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8E=E6=97=A5=E6=9C=9F=E7=9A=84?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dimensionhub/Core/API.swift | 9 ++++++++- dimensionhub/Views/DateNavView.swift | 6 +++++- dimensionhub/Views/IndexView.swift | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/dimensionhub/Core/API.swift b/dimensionhub/Core/API.swift index 6402536..ef263b3 100644 --- a/dimensionhub/Core/API.swift +++ b/dimensionhub/Core/API.swift @@ -53,6 +53,13 @@ struct API { return await doRequest(request: request, as: T.self) } + // 指定时间索引 + static func loadDateUpdateDramas(userId: Int, date: String, as: T.Type) async -> APIResponse { + let request = URLRequest(url: URL(string: baseUrl + "/api/load_date_dramas?user_id=\(userId)&date=\(date)")!) + + return await doRequest(request: request, as: T.self) + } + static func getDateIndex(as: T.Type) async -> APIResponse { let request = URLRequest(url: URL(string: url + "date_index")!) @@ -74,7 +81,7 @@ struct API { } let x = String(data: data, encoding: .utf8)! - print("url: \(request.url?.path()), data is: \(x)") + print("url: \(request.url!.path()), data is: \(x)") do { let result = try JSONDecoder().decode(APISuccessResponse.self, from: data) return .result(result.result) diff --git a/dimensionhub/Views/DateNavView.swift b/dimensionhub/Views/DateNavView.swift index ee82a9f..f9e0b5c 100644 --- a/dimensionhub/Views/DateNavView.swift +++ b/dimensionhub/Views/DateNavView.swift @@ -72,9 +72,13 @@ extension DateNavView { } .onTapGesture { + // 如果之前的状态就是选中状态,则不触发回调函数 + if !self.selected { + onSelected(id) + } + self.selected = true self.showDateNavPopover = false - onSelected(id) } } } diff --git a/dimensionhub/Views/IndexView.swift b/dimensionhub/Views/IndexView.swift index ec690d8..0d17960 100644 --- a/dimensionhub/Views/IndexView.swift +++ b/dimensionhub/Views/IndexView.swift @@ -112,6 +112,16 @@ final class IndexModel { } } + // 指定日期,并更新日期下对应的数据 + @MainActor + func loadDateUpdateDramas(userId: Int, date: String) async { + let response = await API.loadDateUpdateDramas(userId: userId, date: date, as: [UpdateDramaGroup].self) + if case let .result(groups) = response { + self.updateDramaGroups = preappendMergeDramaGroups(groups: self.updateDramaGroups, mergeGroups: groups) + self.showUpdateDramas = transformGroupUpdateDramas(updateDramaGroups: self.updateDramaGroups) + } + } + // 格式化 private func transformGroupUpdateDramas(updateDramaGroups: [UpdateDramaGroup]) -> [UpdateDramaShowItem] { var updateItems: [UpdateDramaShowItem] = [] @@ -214,7 +224,6 @@ struct IndexView: View { .fontWeight(.regular) .onTapGesture { selectGroupId = group.group_id - print("current group_id: \(self.selectGroupId)") indexModel.selectedDate = group.group_id showDateNavPopover = true } @@ -248,9 +257,6 @@ struct IndexView: View { } } } - .onChange(of: indexModel.selectedDate) { oldValue, newValue in - print("old date: \(oldValue), new value: \(newValue)") - } Rectangle() .frame(height: 0) @@ -277,6 +283,9 @@ struct IndexView: View { .popover(isPresented: $showDateNavPopover) { DateNavView(selectGroupId: self.$selectGroupId, showDateNavPopover: $showDateNavPopover) { selectedDate in print("new selected date: " + selectedDate) + Task { + await indexModel.loadDateUpdateDramas(userId: 1, date: selectedDate) + } } } .refreshable {