Integrated the create folder feature into the BrowseView view for the Browse module.

This commit is contained in:
Javier Cicchelli 2022-12-17 00:05:07 +01:00
parent 55a89975be
commit c0c7d0a4df
2 changed files with 13 additions and 14 deletions

View File

@ -85,7 +85,6 @@ private extension ContentView {
id: user.rootFolder.id, id: user.rootFolder.id,
name: user.rootFolder.name name: user.rootFolder.name
), ),
createFolder: createFolder,
uploadFile: uploadFile, uploadFile: uploadFile,
showProfile: showProfile, showProfile: showProfile,
login: login login: login

View File

@ -22,11 +22,11 @@ public struct BrowseView: View {
@State private var items: [any FileSystemItem] = [] @State private var items: [any FileSystemItem] = []
@State private var stack: Stack? @State private var stack: Stack?
@State private var itemToDelete: (any FileSystemItem)? @State private var itemToDelete: (any FileSystemItem)?
@State private var showCreateFolder: Bool = false
// MARK: Properties // MARK: Properties
private let folder: Folder private let folder: Folder
private let createFolder: ActionClosure
private let uploadFile: ActionClosure private let uploadFile: ActionClosure
private let showProfile: ActionClosure private let showProfile: ActionClosure
private let login: ActionClosure private let login: ActionClosure
@ -37,13 +37,11 @@ public struct BrowseView: View {
public init( public init(
folder: Folder, folder: Folder,
createFolder: @escaping ActionClosure,
uploadFile: @escaping ActionClosure, uploadFile: @escaping ActionClosure,
showProfile: @escaping ActionClosure, showProfile: @escaping ActionClosure,
login: @escaping ActionClosure login: @escaping ActionClosure
) { ) {
self.folder = folder self.folder = folder
self.createFolder = createFolder
self.uploadFile = uploadFile self.uploadFile = uploadFile
self.showProfile = showProfile self.showProfile = showProfile
self.login = login self.login = login
@ -56,14 +54,24 @@ public struct BrowseView: View {
.navigationTitle(folder.name) .navigationTitle(folder.name)
.toolbar { .toolbar {
BrowseToolbar( BrowseToolbar(
createFolder: createFolder, createFolder: {
showCreateFolder = true
},
uploadFile: uploadFile, uploadFile: uploadFile,
showProfile: showProfile showProfile: showProfile
) )
} }
.createFolder(
isPresenting: $showCreateFolder,
id: folder.id
) {
Task {
await loadItems()
}
}
.delete(item: $itemToDelete) { .delete(item: $itemToDelete) {
Task { Task {
await updateItems() await loadItems()
} }
} }
.task(id: folder) { .task(id: folder) {
@ -129,7 +137,6 @@ private extension BrowseView {
.navigate( .navigate(
to: BrowseView( to: BrowseView(
folder: folder, folder: folder,
createFolder: createFolder,
uploadFile: uploadFile, uploadFile: uploadFile,
showProfile: showProfile, showProfile: showProfile,
login: login login: login
@ -196,11 +203,6 @@ private extension BrowseView {
status = .error status = .error
} }
} }
func updateItems() async {
items = items.filter { $0.id != itemToDelete?.id }
itemToDelete = nil
}
} }
// MARK: - Previews // MARK: - Previews
@ -212,8 +214,6 @@ struct BrowseView_Previews: PreviewProvider {
id: UUID().uuidString, id: UUID().uuidString,
name: "Some folder name" name: "Some folder name"
)) { )) {
// create folder closure.
} uploadFile: {
// upload file closure. // upload file closure.
} showProfile: { } showProfile: {
// show profile closure. // show profile closure.