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,
name: user.rootFolder.name
),
createFolder: createFolder,
uploadFile: uploadFile,
showProfile: showProfile,
login: login

View File

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