diff --git a/CanvasPlusPlayground/Features/Announcements/AllAnnouncementsView.swift b/CanvasPlusPlayground/Features/Announcements/AllAnnouncementsView.swift index 3ad1207..9294cc1 100644 --- a/CanvasPlusPlayground/Features/Announcements/AllAnnouncementsView.swift +++ b/CanvasPlusPlayground/Features/Announcements/AllAnnouncementsView.swift @@ -17,7 +17,9 @@ struct AllAnnouncementsView: View { var body: some View { List(selection: $selectedAnnouncement) { ForEach(announcementsManager.announcements) { announcement in - NavigationLink(value: announcement) { + NavigationLink { + CourseAnnouncementDetailView(announcement: announcement) + } label: { AnnouncementRow( course: announcement.course, announcement: announcement, @@ -27,10 +29,6 @@ struct AllAnnouncementsView: View { } } .navigationTitle("All Announcements") - .navigationDestination( - item: $selectedAnnouncement, - destination: CourseAnnouncementDetailView.init - ) .statusToolbarItem("Announcements", isVisible: isLoadingAnnouncements) .task { isLoadingAnnouncements = true diff --git a/CanvasPlusPlayground/Features/Navigation/HomeView.swift b/CanvasPlusPlayground/Features/Navigation/HomeView.swift index 5636e75..52443bb 100644 --- a/CanvasPlusPlayground/Features/Navigation/HomeView.swift +++ b/CanvasPlusPlayground/Features/Navigation/HomeView.swift @@ -18,6 +18,7 @@ struct HomeView: View { @EnvironmentObject private var llmEvaluator: LLMEvaluator @State private var columnVisibility = NavigationSplitViewVisibility.all + @State private var isLoadingCourses = false @SceneStorage("CourseListView.selectedNavigationPage") private var selectedNavigationPage: NavigationPage? @@ -39,6 +40,10 @@ struct HomeView: View { NavigationSplitView(columnVisibility: $columnVisibility) { Sidebar() + .statusToolbarItem("Courses", isVisible: isLoadingCourses) + .refreshable { + await loadCourses() + } } content: { contentView } detail: { @@ -53,6 +58,13 @@ struct HomeView: View { navigationModel.selectedNavigationPage = selectedNavigationPage navigationModel.selectedCoursePage = selectedCoursePage } + .task { + if StorageKeys.needsAuthorization { + navigationModel.showAuthorizationSheet = true + } else { + await loadCourses() + } + } .onChange(of: navigationModel.selectedNavigationPage) { _, new in selectedNavigationPage = new } @@ -88,6 +100,13 @@ struct HomeView: View { ContentUnavailableView("Select a course", systemImage: "folder") } } + + private func loadCourses() async { + isLoadingCourses = true + await courseManager.getCourses() + await profileManager.getCurrentUserAndProfile() + isLoadingCourses = false + } } #Preview { diff --git a/CanvasPlusPlayground/Features/Navigation/Sidebar.swift b/CanvasPlusPlayground/Features/Navigation/Sidebar.swift index ebc7432..b709a61 100644 --- a/CanvasPlusPlayground/Features/Navigation/Sidebar.swift +++ b/CanvasPlusPlayground/Features/Navigation/Sidebar.swift @@ -14,8 +14,6 @@ struct Sidebar: View { @Environment(CourseManager.self) private var courseManager @Environment(ProfileManager.self) private var profileManager - @State private var isLoadingCourses = false - var body: some View { @Bindable var navigationModel = navigationModel @@ -49,7 +47,6 @@ struct Sidebar: View { .navigationSplitViewColumnWidth(min: 275, ideal: 275) #endif .listStyle(.sidebar) - .statusToolbarItem("Courses", isVisible: isLoadingCourses) #if os(iOS) .toolbar { ToolbarItem(placement: .cancellationAction) { @@ -59,23 +56,6 @@ struct Sidebar: View { } } #endif - .task { - if StorageKeys.needsAuthorization { - navigationModel.showAuthorizationSheet = true - } else { - await loadCourses() - } - } - .refreshable { - await loadCourses() - } - } - - private func loadCourses() async { - isLoadingCourses = true - await courseManager.getCourses() - await profileManager.getCurrentUserAndProfile() - isLoadingCourses = false } }