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) } } }