From e78a326595e8fafbab969cf47c54817a62925507 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sun, 18 Dec 2022 01:06:11 +0100 Subject: [PATCH] Integrated the DownloadView view into the BrowseView view for the Browse module. --- .../Sources/Browse/UI/Views/BrowseView.swift | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/Modules/Sources/Browse/UI/Views/BrowseView.swift b/Modules/Sources/Browse/UI/Views/BrowseView.swift index c493659..dcc95a8 100644 --- a/Modules/Sources/Browse/UI/Views/BrowseView.swift +++ b/Modules/Sources/Browse/UI/Views/BrowseView.swift @@ -23,7 +23,7 @@ public struct BrowseView: View { @State private var stack: Stack? @State private var itemToDelete: (any FileSystemItem)? @State private var showCreateFolder: Bool = false - @State private var showUploadFile: Bool = false + @State private var showSheet: SheetView? // MARK: Properties @@ -56,14 +56,24 @@ public struct BrowseView: View { showCreateFolder = true }, uploadFile: { - showUploadFile = true + showSheet = .upload(id: folder.id) }, showProfile: showProfile ) } - .sheet(isPresented: $showUploadFile) { - UploadView(id: folder.id) { - Task { await loadItems() } + .sheet(item: $showSheet) { sheet in + switch sheet { + case let .upload(id): + UploadView(id: id) { + Task { await loadItems() } + } + case let .download(id, name): + DownloadView( + id: id, + name: name + ) { + Task { await loadItems() } + } } } .createFolder( @@ -118,7 +128,7 @@ private extension BrowseView { MessageView( type: .empty, action: { - showUploadFile = true + showSheet = .upload(id: folder.id) } ) case .error: @@ -162,7 +172,10 @@ private extension BrowseView { DocumentItem(item: item) { stack = .open(document) } download: { - // TODO: download the item id from the backend. + showSheet = .download( + id: document.id, + name: document.name + ) } delete: { itemToDelete = item } @@ -211,6 +224,17 @@ private extension BrowseView { } } +// MARK: - Enumerations + +private extension BrowseView { + enum SheetView: Identifiable { + case upload(id: String) + case download(id: String, name: String) + + var id: String { UUID().uuidString } + } +} + // MARK: - Previews struct BrowseView_Previews: PreviewProvider {