diff --git a/dimensionhub/Views/DateNavView.swift b/dimensionhub/Views/DateNavView.swift index 07c6824..d0c3a5f 100644 --- a/dimensionhub/Views/DateNavView.swift +++ b/dimensionhub/Views/DateNavView.swift @@ -92,10 +92,8 @@ struct DateNavView: View { } } .padding(15) - .frame(height: 600) .task { await self.navModel.loadDateCells(userId: self.userId) - print(UIScreen.main.bounds.height) } } diff --git a/dimensionhub/Views/IndexView.swift b/dimensionhub/Views/IndexView.swift index 7d773ac..5754f5e 100644 --- a/dimensionhub/Views/IndexView.swift +++ b/dimensionhub/Views/IndexView.swift @@ -56,6 +56,9 @@ final class IndexModel { // 保存原始的更新数据 var updateDramaGroups: [UpdateDramaGroup] = [] + @ObservationIgnored + private var isLoaded = false + init() { self.dramas = [] self.selectedDate = "" @@ -63,6 +66,10 @@ final class IndexModel { @MainActor func loadData(userId: String) async { + guard !isLoaded else { + return + } + let response = await API.getIndexData(userId: userId, as: IndexResponse.self) switch response { case .error(let code, let message): @@ -71,6 +78,7 @@ final class IndexModel { self.dramas = result.dramas self.updateDramaGroups = result.update_dramas } + self.isLoaded = true } @MainActor @@ -196,6 +204,7 @@ struct IndexView: View { } case .satisfied: IndexMainView() + .id("indexMainView") } } .onAppear { @@ -338,15 +347,8 @@ extension IndexView { } } .coordinateSpace(name: "scrollView") - .popover(isPresented: $showDateNavPopover) { - DateNavView(selectGroupId: self.$selectGroupId, showDateNavPopover: $showDateNavPopover) { selectedDate in - Task { - await indexModel.loadDateUpdateDramas(userId: self.userId, date: selectedDate) - } - } - } .refreshable { - guard !self.isPrevLoading else { + guard !self.isPrevLoading && !self.showDateNavPopover else { return } @@ -360,12 +362,23 @@ extension IndexView { .frame(width: 370) } .ignoresSafeArea(edges: .bottom) + .popover(isPresented: $showDateNavPopover) { + DateNavView(selectGroupId: self.$selectGroupId, showDateNavPopover: $showDateNavPopover) { selectedDate in + Task { + await indexModel.loadDateUpdateDramas(userId: self.userId, date: selectedDate) + } + } + } .alert(isPresented: $showPrompt) { Alert(title: Text("提示"), message: Text(self.promptMessage), dismissButton: .default(Text("OK"))) } - .task { - await self.indexModel.loadData(userId: self.userId) - print(UIScreen.main.bounds.width) + .onAppear { + Task { + await self.indexModel.loadData(userId: self.userId) + } + withUnsafePointer(to: indexModel) { pointer in + print(pointer) + } } } }