Implemented the UploadView view for the Browse module.
This commit is contained in:
parent
b35544b014
commit
1c04a67184
78
Modules/Sources/Browse/UI/Views/UploadView.swift
Normal file
78
Modules/Sources/Browse/UI/Views/UploadView.swift
Normal 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.
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user