diff --git a/Course/Course/Presentation/Downloads/DownloadsView.swift b/Course/Course/Presentation/Downloads/DownloadsView.swift index 3c648ead4..791791204 100644 --- a/Course/Course/Presentation/Downloads/DownloadsView.swift +++ b/Course/Course/Presentation/Downloads/DownloadsView.swift @@ -15,12 +15,14 @@ public struct DownloadsView: View { // MARK: - Properties @Environment(\.dismiss) private var dismiss + @Environment (\.isHorizontal) private var isHorizontal @StateObject private var viewModel: DownloadsViewModel var isSheet: Bool = true public init( isSheet: Bool = true, + router: CourseRouter, courseId: String? = nil, downloads: [DownloadDataTask] = [], manager: DownloadManagerProtocol @@ -28,6 +30,7 @@ public struct DownloadsView: View { self.isSheet = isSheet self._viewModel = .init( wrappedValue: .init( + router: router, courseId: courseId, downloads: downloads, manager: manager @@ -38,13 +41,36 @@ public struct DownloadsView: View { // MARK: - Body public var body: some View { - ZStack { + ZStack(alignment: .top) { Theme.Colors.background .ignoresSafeArea() + if !isSheet { + HStack { + Text(CourseLocalization.Download.downloads) + .titleSettings(color: Theme.Colors.textPrimary) + .accessibilityIdentifier("downloads_text") + } + .padding(.top, isHorizontal ? 10 : 0) + VStack { + BackNavigationButton( + color: Theme.Colors.accentColor, + action: { + viewModel.router.back() + } + ) + .backViewStyle() + .padding(.leading, 8) + + } + .frame(minWidth: 0, maxWidth: .infinity, alignment: .topLeading) + .padding(.top, isHorizontal ? 23 : 13) + + } content .sheetNavigation(isSheet: isSheet) { dismiss() } + .padding(.top, isSheet ? 0 : 40) } } diff --git a/Course/Course/Presentation/Downloads/DownloadsViewModel.swift b/Course/Course/Presentation/Downloads/DownloadsViewModel.swift index 78c063778..709ecc402 100644 --- a/Course/Course/Presentation/Downloads/DownloadsViewModel.swift +++ b/Course/Course/Presentation/Downloads/DownloadsViewModel.swift @@ -15,15 +15,19 @@ final class DownloadsViewModel: ObservableObject { @Published private(set) var downloads: [DownloadDataTask] = [] private let courseId: String? + + let router: CourseRouter private let manager: DownloadManagerProtocol private var cancellables = Set() init( + router: CourseRouter, courseId: String? = nil, downloads: [DownloadDataTask] = [], manager: DownloadManagerProtocol ) { + self.router = router self.courseId = courseId self.manager = manager self.downloads = downloads diff --git a/Course/Course/Presentation/Outline/CourseOutlineView.swift b/Course/Course/Presentation/Outline/CourseOutlineView.swift index 7a72f6fa0..8895cb65c 100644 --- a/Course/Course/Presentation/Outline/CourseOutlineView.swift +++ b/Course/Course/Presentation/Outline/CourseOutlineView.swift @@ -216,7 +216,7 @@ public struct CourseOutlineView: View { .ignoresSafeArea() ) .sheet(isPresented: $showingDownloads) { - DownloadsView(manager: viewModel.manager) + DownloadsView(router: viewModel.router, manager: viewModel.manager) } .sheet(isPresented: $showingVideoDownloadQuality) { viewModel.storage.userSettings.map { diff --git a/OpenEdX/Router.swift b/OpenEdX/Router.swift index 8e582a5f4..cd0bd192e 100644 --- a/OpenEdX/Router.swift +++ b/OpenEdX/Router.swift @@ -545,7 +545,12 @@ public class Router: AuthorizationRouter, downloads: [DownloadDataTask], manager: DownloadManagerProtocol ) { - let downloadsView = DownloadsView(isSheet: false, downloads: downloads, manager: manager) + let downloadsView = DownloadsView( + isSheet: false, + router: Container.shared.resolve(CourseRouter.self)!, + downloads: downloads, + manager: manager + ) let controller = UIHostingController(rootView: downloadsView) navigationController.pushViewController(controller, animated: true) }