Skip to content
Snippets Groups Projects
Select Git revision
  • 949bb0fa0d47b3a00ca0038f831e8c40f6e25299
  • main default protected
  • dev protected
  • hotfixes-oct-2022
  • refactor/avatar-cell
  • 1.1.5
  • 1.1.4
  • 1.1.3
  • 1.1
  • 1.0.8
  • 1.0.7
  • 1.0.6
12 results

BackupViewModel.swift

Blame
  • 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