diff --git a/Modules/Sources/Browse/Logic/Models/Document.swift b/Modules/Sources/Browse/Logic/Models/Document.swift index 46df5eb..053a7d1 100644 --- a/Modules/Sources/Browse/Logic/Models/Document.swift +++ b/Modules/Sources/Browse/Logic/Models/Document.swift @@ -36,6 +36,6 @@ struct Document { } -// MARK: - FileSystemIdIdentifiable +// MARK: - FileSystemItemable -extension Document: FileSystemItemIdentifiable {} +extension Document: FileSystemItemable {} diff --git a/Modules/Sources/Browse/Logic/Models/Folder.swift b/Modules/Sources/Browse/Logic/Models/Folder.swift index b089e36..abf8b8e 100644 --- a/Modules/Sources/Browse/Logic/Models/Folder.swift +++ b/Modules/Sources/Browse/Logic/Models/Folder.swift @@ -25,9 +25,9 @@ public struct Folder { } -// MARK: - FileSystemIdIdentifiable +// MARK: - FileSystemItemable -extension Folder: FileSystemItemIdentifiable {} +extension Folder: FileSystemItemable {} // MARK: - Equatable diff --git a/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift b/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift index d4f4d04..c4a9ae8 100644 --- a/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift +++ b/Modules/Sources/Browse/Logic/Protocols/FileSystemItem.swift @@ -13,4 +13,4 @@ protocol FileSystemItem { // MARK: - Type aliases -typealias FileSystemItemIdentifiable = FileSystemItem & Identifiable & Hashable +typealias FileSystemItemable = FileSystemItem & Identifiable & Hashable diff --git a/Modules/Sources/Browse/Logic/Use Cases/GetDataUseCase.swift b/Modules/Sources/Browse/Logic/Use Cases/GetDataUseCase.swift index 5b87e28..daee2de 100644 --- a/Modules/Sources/Browse/Logic/Use Cases/GetDataUseCase.swift +++ b/Modules/Sources/Browse/Logic/Use Cases/GetDataUseCase.swift @@ -13,9 +13,9 @@ import Foundation struct GetDataUseCase { - // MARK: Dependencies + // MARK: Properties - @Dependency(\.apiService) private var apiService + let apiService: APIService // MARK: Functions @@ -34,3 +34,13 @@ struct GetDataUseCase { } } + +// MARK: - Initialisers + +extension GetDataUseCase { + init() { + @Dependency(\.apiService) var apiService + + self.init(apiService: apiService) + } +} diff --git a/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift b/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift index bbd219f..54aa3c9 100644 --- a/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift +++ b/Modules/Sources/Browse/Logic/Use Cases/GetItemsUseCase.swift @@ -12,9 +12,9 @@ import Dependencies struct GetItemsUseCase { - // MARK: Dependencies + // MARK: Properties - @Dependency(\.apiService) private var apiService + let apiService: APIService // MARK: Functions @@ -22,7 +22,7 @@ struct GetItemsUseCase { id: String, username: String, password: String - ) async throws -> [any FileSystemItemIdentifiable] { + ) async throws -> [any FileSystemItemable] { let items = try await apiService.getItems( id: id, credentials: .init( @@ -32,7 +32,7 @@ struct GetItemsUseCase { ) return items - .compactMap { item -> any FileSystemItemIdentifiable in + .compactMap { item -> any FileSystemItemable in if item.isDirectory { return Folder( id: item.id, @@ -51,3 +51,13 @@ struct GetItemsUseCase { } } + +// MARK: - Initialisers + +extension GetItemsUseCase { + init() { + @Dependency(\.apiService) var apiService + + self.init(apiService: apiService) + } +} diff --git a/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift b/Modules/Sources/Browse/UI/Extensions/View+ViewModifiers.swift index d2f9003..8e3d494 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 FileSystemItemIdentifiable)?> + item: Binding<(any FileSystemItemable)?>, ) -> 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 d92ce12..ac5a170 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 FileSystemItemIdentifiable)? + @Binding var item: (any FileSystemItemable)? // MARK: Body diff --git a/Modules/Sources/Browse/UI/Views/BrowseView.swift b/Modules/Sources/Browse/UI/Views/BrowseView.swift index 29ffc97..f47cc48 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 FileSystemItemIdentifiable] = [] + @State private var items: [any FileSystemItemable] = [] @State private var stack: Stack? - @State private var itemToDelete: (any FileSystemItemIdentifiable)? + @State private var itemToDelete: (any FileSystemItemable)? // MARK: Properties @@ -32,7 +32,7 @@ public struct BrowseView: View { private let login: ActionClosure private let getItems: GetItemsUseCase = .init() - + // MARK: Initialisers public init( @@ -114,7 +114,7 @@ private extension BrowseView { // MARK: Functions @ViewBuilder func makeFolderItem( - for item: any FileSystemItemIdentifiable + for item: any FileSystemItemable ) -> some View { if let folder = item as? Folder { FolderItem(item: item) { @@ -139,7 +139,7 @@ private extension BrowseView { } @ViewBuilder func makeDocumentItem( - for item: any FileSystemItemIdentifiable + for item: any FileSystemItemable ) -> some View { if let document = item as? Document { DocumentItem(item: item) {