diff --git a/Modules/Sources/Browse/UI/Views/BrowseView.swift b/Modules/Sources/Browse/UI/Views/BrowseView.swift index bd11042..74821b9 100644 --- a/Modules/Sources/Browse/UI/Views/BrowseView.swift +++ b/Modules/Sources/Browse/UI/Views/BrowseView.swift @@ -89,13 +89,7 @@ private extension BrowseView { case is Folder: makeFolderItem(for: item) case is Document: - DocumentItem(item: item) { - // TODO: show the item id in a viewer... - } download: { - // TODO: download the item id from the backend. - } delete: { - // TODO: delete the item id from the backend. - } + makeDocumentItem(for: item) default: EmptyView() } @@ -120,27 +114,50 @@ 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. + if let folder = item as? Folder { + 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, + login: login + ), + tagged: .browse(folder), + in: $stack + ) + } else { + EmptyView() + } + } + + @ViewBuilder func makeDocumentItem( + for item: any FileSystemItemIdentifiable + ) -> some View { + if let document = item as? Document { + DocumentItem(item: item) { + stack = .open(document) + } download: { + // TODO: download the item id from the backend. + } delete: { + // TODO: delete the item id from the backend. + } + .navigate( + to: DocumentView( + document: document, + login: login + ), + tagged: .open(document), + in: $stack + ) + } else { + EmptyView() } - .navigate( - to: BrowseView( - folder: folder, - createFolder: createFolder, - uploadFile: uploadFile, - showProfile: showProfile, - login: login - ), - tagged: .browse(folder), - in: $stack - ) } }