40 lines
853 B
Swift
40 lines
853 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: [.loading, .serverList]) {
|
|
self.database.remove()
|
|
self.serversDB.remove(self.server)
|
|
}
|
|
case .unknown:
|
|
print("Unexpected error on Client.")
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ErrorActionHandler: ErrorActionHandling {
|
|
func handle(error: RocketChatError) {
|
|
DispatchQueue.main.async {
|
|
self.handleOnMain(error: error)
|
|
}
|
|
}
|
|
}
|