Select Git revision
BackupViewModel.swift
RestoreListController.swift 3.68 KiB
import HUD
import UIKit
import Shared
import Combine
import DrawerFeature
import DependencyInjection
public final class RestoreListController: UIViewController {
@Dependency var hud: HUD
@Dependency var coordinator: RestoreCoordinating
lazy private var screenView = RestoreListView()
private let viewModel = RestoreListViewModel()
private var cancellables = Set<AnyCancellable>()
private var drawerCancellables = Set<AnyCancellable>()
public override func loadView() {
view = screenView
presentWarning()
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationItem.backButtonTitle = ""
navigationController?.navigationBar.customize(translucent: true)
}
public override func viewDidLoad() {
super.viewDidLoad()
viewModel.sftpPublisher
.receive(on: DispatchQueue.main)
.sink { [unowned self] _ in
coordinator.toSFTP(from: self) { [weak self] host, username, password in
guard let self else { return }
self.viewModel.setupSFTP(
host: host,
username: username,
password: password
)
}
}.store(in: &cancellables)
viewModel.hudPublisher
.receive(on: DispatchQueue.main)
.sink { [hud] in hud.update(with: $0) }
.store(in: &cancellables)
viewModel.detailsPublisher
.receive(on: DispatchQueue.main)
.sink { [unowned self] in
coordinator.toRestore(with: $0, from: self)
}.store(in: &cancellables)
screenView.cancelButton
.publisher(for: .touchUpInside)
.sink { [unowned self] in didTapBack() }
.store(in: &cancellables)
screenView.driveButton
.publisher(for: .touchUpInside)
.sink { [unowned self] in
viewModel.link(provider: .drive, from: self) { [weak self] in
guard let self else { return }
self.viewModel.fetch(provider: .drive)
}
}.store(in: &cancellables)
screenView.icloudButton