Files

76 lines
1.8 KiB
Swift

//
// SearchPanelPresenter.swift
// PrivadoVPN
//
// Created by Zhandos Bolatbekov on 25.05.2021.
// Copyright © 2021 Privado LLC. All rights reserved.
//
protocol SearchPanelOutput: AnyObject {
func sortPanelDidSelect(order: SortPanelOrder)
func sortPanelSearch(query: String)
func sortPanelSearchCancel()
}
enum SortPanelOrder {
case `default`
case nameASC
case nameDESC
case latencyASC
case latencyDESC
var localizedSting: String {
get {
switch self {
case .latencyASC:
return "serverlist.panelSort.latencyASC"
case .latencyDESC:
return "serverlist.panelSort.latencyDESC"
case .nameASC:
return "serverlist.panelSort.nameASC"
case .nameDESC:
return "serverlist.panelSort.nameDESC"
case .default:
return "default"
}
}
}
}
final class SearchPanelPresenter {
private weak var output: SearchPanelOutput?
weak var viewInput: SearchPanelViewInput?
private var order: SortPanelOrder {
didSet {
self.output?.sortPanelDidSelect(order: self.order)
}
}
private let sortOptions: [SortPanelOrder] = [
.latencyASC, .latencyDESC, .nameASC, .nameDESC
]
// MARK: - Init
init(order: SortPanelOrder = .default, output: SearchPanelOutput?) {
self.order = order
self.output = output
}
}
// MARK: - SortPanelViewOutput
extension SearchPanelPresenter: SearchPanelViewOutput {
func viewIsReady() { }
func search(query: String) {
self.output?.sortPanelSearch(query: query.trimmingCharacters(in: .whitespacesAndNewlines))
}
func searchCancel() {
self.output?.sortPanelSearchCancel()
}
}