Implemented the UploadView view for the Browse module.

This commit is contained in:
Javier Cicchelli 2022-12-17 21:06:30 +01:00
parent b35544b014
commit 1c04a67184

View File

@ -0,0 +1,78 @@
//
// 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 {
DocumentPicker { 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.
}
}
}