// // UploadView.swift // Browse // // Created by Javier Cicchelli on 17/12/2022. // Copyright © 2022 Röck+Cöde. All rights reserved. // import DataModels import Foundation import KeychainStorage import SwiftUI struct UploadView: View { // MARK: Storages @KeychainStorage(key: .KeychainStorage.account) private var account: Account? // MARK: States @State private var urls: [URL] = [] // MARK: Properties let id: String let uploaded: ActionClosure private let uploadFile: UploadFileUseCase = .init() // MARK: Body var body: some View { SelectDocumentPicker { urls in Task { await addFile(from: urls) } } } } // MARK: - Helpers private extension UploadView { func addFile(from urls: [URL]) async { guard let url = urls.first else { // TODO: Handle this error case. return } guard let account else { // TODO: Handle this error case. return } do { try await uploadFile( id: id, url: url, username: account.username, password: account.password ) uploaded() } catch { // TODO: Handle this error case. } } } // MARK: - Previews struct UploadView_Previews: PreviewProvider { static var previews: some View { UploadView(id: "1234567890") { // uploaded closure. } } }