diff --git a/Modules/Sources/Browse/Logic/Models/Document.swift b/Modules/Sources/Browse/Logic/Models/Document.swift index 053a7d1..913a310 100644 --- a/Modules/Sources/Browse/Logic/Models/Document.swift +++ b/Modules/Sources/Browse/Logic/Models/Document.swift @@ -8,7 +8,7 @@ import Foundation -struct Document { +struct Document: FileSystemItem { // MARK: Properties @@ -35,7 +35,3 @@ struct Document { } } - -// MARK: - FileSystemItemable - -extension Document: FileSystemItemable {} diff --git a/Modules/Sources/Browse/Logic/Models/Folder.swift b/Modules/Sources/Browse/Logic/Models/Folder.swift index abf8b8e..63c22ea 100644 --- a/Modules/Sources/Browse/Logic/Models/Folder.swift +++ b/Modules/Sources/Browse/Logic/Models/Folder.swift @@ -6,7 +6,7 @@ // Copyright © 2022 Röck+Cöde. All rights reserved. // -public struct Folder { +public struct Folder: FileSystemItem { // MARK: Properties @@ -24,11 +24,3 @@ public struct Folder { } } - -// MARK: - FileSystemItemable - -extension Folder: FileSystemItemable {} - -// MARK: - Equatable - -extension Folder: Equatable {} diff --git a/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift b/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift index c4a9ae8..69b3931 100644 --- a/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift +++ b/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift @@ -6,11 +6,7 @@ // Copyright © 2022 Röck+Cöde. All rights reserved. // -protocol FileSystemItem { +protocol FileSystemItem: Identifiable, Hashable, Equatable { var id: String { get } var name: String { get } } - -// MARK: - Type aliases - -typealias FileSystemItemable = FileSystemItem & Identifiable & Hashable diff --git a/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift b/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift index 54aa3c9..281b6dc 100644 --- a/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift +++ b/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift @@ -22,7 +22,7 @@ struct GetItemsUseCase { id: String, username: String, password: String - ) async throws -> [any FileSystemItemable] { + ) async throws -> [any FileSystemItem] { let items = try await apiService.getItems( id: id, credentials: .init( @@ -32,7 +32,7 @@ struct GetItemsUseCase { ) return items - .compactMap { item -> any FileSystemItemable in + .compactMap { item -> any FileSystemItem in if item.isDirectory { return Folder( id: item.id, diff --git a/Modules/Sources/Browse/UI/Components/DocumentItem.swift b/Modules/Sources/Browse/UI/Components/DocumentItem.swift index 73b9f48..f895f2d 100644 --- a/Modules/Sources/Browse/UI/Components/DocumentItem.swift +++ b/Modules/Sources/Browse/UI/Components/DocumentItem.swift @@ -13,7 +13,7 @@ struct DocumentItem: View { // MARK: Properties - let item: FileSystemItem + let item: any FileSystemItem let select: ActionClosure let download: ActionClosure let delete: ActionClosure diff --git a/Modules/Sources/Browse/UI/Components/FolderItem.swift b/Modules/Sources/Browse/UI/Components/FolderItem.swift index 40733f4..fc1811b 100644 --- a/Modules/Sources/Browse/UI/Components/FolderItem.swift +++ b/Modules/Sources/Browse/UI/Components/FolderItem.swift @@ -13,7 +13,7 @@ struct FolderItem: View { // MARK: Properties - let item: FileSystemItem + let item: any FileSystemItem let select: ActionClosure let delete: ActionClosure diff --git a/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift b/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift index 8e3d494..9f01b9c 100644 --- a/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift +++ b/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift @@ -22,7 +22,7 @@ extension View { } func delete( - item: Binding<(any FileSystemItemable)?>, + item: Binding<(any FileSystemItem)?>, ) -> some View { modifier(DeleteItemViewModifier(item: item)) } diff --git a/Modules/Sources/Browse/UI/View Modifiers/DeleteItemViewModifier.swift b/Modules/Sources/Browse/UI/View Modifiers/DeleteItemViewModifier.swift index ac5a170..c4e9960 100644 --- a/Modules/Sources/Browse/UI/View Modifiers/DeleteItemViewModifier.swift +++ b/Modules/Sources/Browse/UI/View Modifiers/DeleteItemViewModifier.swift @@ -15,7 +15,7 @@ struct DeleteItemViewModifier: ViewModifier { // MARK: Bindings - @Binding var item: (any FileSystemItemable)? + @Binding var item: (any FileSystemItem)? // MARK: Body diff --git a/Modules/Sources/Browse/UI/Views/BrowseView.swift b/Modules/Sources/Browse/UI/Views/BrowseView.swift index f47cc48..f31931f 100644 --- a/Modules/Sources/Browse/UI/Views/BrowseView.swift +++ b/Modules/Sources/Browse/UI/Views/BrowseView.swift @@ -19,9 +19,9 @@ public struct BrowseView: View { // MARK: States @State private var status: ViewStatus = .loading - @State private var items: [any FileSystemItemable] = [] + @State private var items: [any FileSystemItem] = [] @State private var stack: Stack? - @State private var itemToDelete: (any FileSystemItemable)? + @State private var itemToDelete: (any FileSystemItem)? // MARK: Properties @@ -114,7 +114,7 @@ private extension BrowseView { // MARK: Functions @ViewBuilder func makeFolderItem( - for item: any FileSystemItemable + for item: any FileSystemItem ) -> some View { if let folder = item as? Folder { FolderItem(item: item) { @@ -139,7 +139,7 @@ private extension BrowseView { } @ViewBuilder func makeDocumentItem( - for item: any FileSystemItemable + for item: any FileSystemItem ) -> some View { if let document = item as? Document { DocumentItem(item: item) {