From 58a73fa6378083fd5df0e8971882f257d3a7b706 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Thu, 15 Dec 2022 00:16:59 +0100 Subject: [PATCH] Implemented the stack navigation of the folder items in the BrowseView view for the Browse module. --- .../Sources/Browse/UI/Views/BrowseView.swift | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/Modules/Sources/Browse/UI/Views/BrowseView.swift b/Modules/Sources/Browse/UI/Views/BrowseView.swift index 6e0d9b1..ab7dcfe 100644 --- a/Modules/Sources/Browse/UI/Views/BrowseView.swift +++ b/Modules/Sources/Browse/UI/Views/BrowseView.swift @@ -19,6 +19,7 @@ public struct BrowseView: View { // MARK: States @State private var items: [any FileSystemItemIdentifiable] = [] + @State private var stack: Stack? // MARK: Properties @@ -49,17 +50,13 @@ public struct BrowseView: View { List(items, id: \.id) { item in switch item { case is Folder: - FolderItem(item: item) { id in - // TODO: browse to the item id in another view. - } delete: { id in - // TODO: delete the item id from the backend. - } + makeFolderItem(for: item) case is Document: - DocumentItem(item: item) { id in + DocumentItem(item: item) { // TODO: show the item id in a viewer... - } download: { id in + } download: { // TODO: download the item id from the backend. - } delete: { id in + } delete: { // TODO: delete the item id from the backend. } default: @@ -80,6 +77,35 @@ public struct BrowseView: View { } } } + +// MARK: - UI + +private extension BrowseView { + @ViewBuilder func makeFolderItem( + for item: any FileSystemItemIdentifiable + ) -> some View { + let folder = Folder( + id: item.id, + name: item.name + ) + + FolderItem(item: item) { + stack = .browse(folder) + } delete: { + // TODO: delete the item id from the backend. + } + .navigate( + to: BrowseView( + folder: folder, + createFolder: createFolder, + uploadFile: uploadFile, + showProfile: showProfile + ), + tagged: .browse(folder), + in: $stack + ) + } +} // MARK: - Helpers