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