基于日期的加载

This commit is contained in:
anlicheng 2025-02-24 22:45:22 +08:00
parent 66f9f81a4a
commit ef092bde46
3 changed files with 26 additions and 6 deletions

View File

@ -53,6 +53,13 @@ struct API {
return await doRequest(request: request, as: T.self) return await doRequest(request: request, as: T.self)
} }
//
static func loadDateUpdateDramas<T: Codable>(userId: Int, date: String, as: T.Type) async -> APIResponse<T> {
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<T: Codable>(as: T.Type) async -> APIResponse<T> { static func getDateIndex<T: Codable>(as: T.Type) async -> APIResponse<T> {
let request = URLRequest(url: URL(string: url + "date_index")!) let request = URLRequest(url: URL(string: url + "date_index")!)
@ -74,7 +81,7 @@ struct API {
} }
let x = String(data: data, encoding: .utf8)! let x = String(data: data, encoding: .utf8)!
print("url: \(request.url?.path()), data is: \(x)") print("url: \(request.url!.path()), data is: \(x)")
do { do {
let result = try JSONDecoder().decode(APISuccessResponse<T>.self, from: data) let result = try JSONDecoder().decode(APISuccessResponse<T>.self, from: data)
return .result(result.result) return .result(result.result)

View File

@ -72,9 +72,13 @@ extension DateNavView {
} }
.onTapGesture { .onTapGesture {
//
if !self.selected {
onSelected(id)
}
self.selected = true self.selected = true
self.showDateNavPopover = false self.showDateNavPopover = false
onSelected(id)
} }
} }
} }

View File

@ -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] { private func transformGroupUpdateDramas(updateDramaGroups: [UpdateDramaGroup]) -> [UpdateDramaShowItem] {
var updateItems: [UpdateDramaShowItem] = [] var updateItems: [UpdateDramaShowItem] = []
@ -214,7 +224,6 @@ struct IndexView: View {
.fontWeight(.regular) .fontWeight(.regular)
.onTapGesture { .onTapGesture {
selectGroupId = group.group_id selectGroupId = group.group_id
print("current group_id: \(self.selectGroupId)")
indexModel.selectedDate = group.group_id indexModel.selectedDate = group.group_id
showDateNavPopover = true showDateNavPopover = true
} }
@ -248,9 +257,6 @@ struct IndexView: View {
} }
} }
} }
.onChange(of: indexModel.selectedDate) { oldValue, newValue in
print("old date: \(oldValue), new value: \(newValue)")
}
Rectangle() Rectangle()
.frame(height: 0) .frame(height: 0)
@ -277,6 +283,9 @@ struct IndexView: View {
.popover(isPresented: $showDateNavPopover) { .popover(isPresented: $showDateNavPopover) {
DateNavView(selectGroupId: self.$selectGroupId, showDateNavPopover: $showDateNavPopover) { selectedDate in DateNavView(selectGroupId: self.$selectGroupId, showDateNavPopover: $showDateNavPopover) { selectedDate in
print("new selected date: " + selectedDate) print("new selected date: " + selectedDate)
Task {
await indexModel.loadDateUpdateDramas(userId: 1, date: selectedDate)
}
} }
} }
.refreshable { .refreshable {