40 lines
821 B
Swift
40 lines
821 B
Swift
import Foundation
|
|
|
|
protocol ErrorActionHandling {
|
|
func handle(error: RocketChatError)
|
|
}
|
|
|
|
final class ErrorActionHandler {
|
|
@Dependency private var database: Database
|
|
@Dependency private var serversDB: ServersDatabase
|
|
@Dependency private var router: AppRouting
|
|
|
|
private let server: Server
|
|
|
|
init(server: Server) {
|
|
self.server = server
|
|
}
|
|
|
|
private func handleOnMain(error: RocketChatError) {
|
|
switch error {
|
|
case .server(let response):
|
|
router.present(error: response)
|
|
case .unauthorized:
|
|
router.route(to: .serverList)
|
|
|
|
database.remove()
|
|
serversDB.remove(server)
|
|
case .unknown:
|
|
print("Unexpected error on Client.")
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ErrorActionHandler: ErrorActionHandling {
|
|
func handle(error: RocketChatError) {
|
|
DispatchQueue.main.async {
|
|
self.handleOnMain(error: error)
|
|
}
|
|
}
|
|
}
|