Present error alert on missing provider (#766)
This commit is contained in:
parent
11a0f95cdd
commit
7ede841346
|
@ -41,7 +41,7 @@
|
|||
"kind" : "remoteSourceControl",
|
||||
"location" : "git@github.com:passepartoutvpn/passepartoutkit-source",
|
||||
"state" : {
|
||||
"revision" : "d21f1b362dfe667c36483e18b2dbb494bba54660"
|
||||
"revision" : "db0f5258fdbd5192dd2b87dedc46494494bc7ffb"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -28,7 +28,7 @@ let package = Package(
|
|||
],
|
||||
dependencies: [
|
||||
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", from: "0.9.0"),
|
||||
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", revision: "d21f1b362dfe667c36483e18b2dbb494bba54660"),
|
||||
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source", revision: "db0f5258fdbd5192dd2b87dedc46494494bc7ffb"),
|
||||
// .package(path: "../../../passepartoutkit-source"),
|
||||
.package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", from: "0.9.1"),
|
||||
// .package(url: "git@github.com:passepartoutvpn/passepartoutkit-source-openvpn-openssl", revision: "031863a1cd683962a7dfe68e20b91fa820a1ecce"),
|
||||
|
|
|
@ -56,9 +56,6 @@ extension PassepartoutError: LocalizedError {
|
|||
return Strings.Errors.App.Passepartout.connectionModuleRequired
|
||||
|
||||
case .corruptProviderModule:
|
||||
if let ppReason = reason as? PassepartoutError, ppReason.code == .notFound {
|
||||
return Strings.Errors.App.Provider.missingEntity
|
||||
}
|
||||
return Strings.Errors.App.Passepartout.corruptProviderModule(reason?.localizedDescription ?? "")
|
||||
|
||||
case .incompatibleModules:
|
||||
|
@ -84,6 +81,9 @@ extension PassepartoutError: LocalizedError {
|
|||
.compactMap { $0 }
|
||||
.joined(separator: " ")
|
||||
|
||||
case .providerRequired:
|
||||
return Strings.Errors.App.Passepartout.providerRequired
|
||||
|
||||
case .unhandled:
|
||||
return reason?.localizedDescription
|
||||
|
||||
|
|
|
@ -133,12 +133,16 @@ public enum Strings {
|
|||
public static let incompatibleModules = Strings.tr("Localizable", "errors.app.passepartout.incompatible_modules", fallback: "Some active modules are incompatible, try to only activate one of them.")
|
||||
/// Invalid fields.
|
||||
public static let invalidFields = Strings.tr("Localizable", "errors.app.passepartout.invalid_fields", fallback: "Invalid fields.")
|
||||
/// No provider server selected.
|
||||
public static let missingProviderEntity = Strings.tr("Localizable", "errors.app.passepartout.missing_provider_entity", fallback: "No provider server selected.")
|
||||
/// Unable to parse file.
|
||||
public static let parsing = Strings.tr("Localizable", "errors.app.passepartout.parsing", fallback: "Unable to parse file.")
|
||||
/// No provider selected.
|
||||
public static let providerRequired = Strings.tr("Localizable", "errors.app.passepartout.provider_required", fallback: "No provider selected.")
|
||||
}
|
||||
public enum Provider {
|
||||
/// No provider server selected.
|
||||
public static let missingEntity = Strings.tr("Localizable", "errors.app.provider.missing_entity", fallback: "No provider server selected.")
|
||||
/// No provider selected.
|
||||
public static let `required` = Strings.tr("Localizable", "errors.app.provider.required", fallback: "No provider selected.")
|
||||
}
|
||||
}
|
||||
public enum Tunnel {
|
||||
|
|
|
@ -260,13 +260,15 @@
|
|||
|
||||
"errors.app.empty_profile_name" = "Profile name is empty.";
|
||||
"errors.app.malformed_module" = "Module %@ is malformed. %@";
|
||||
"errors.app.provider.missing_entity" = "No provider server selected.";
|
||||
"errors.app.provider.required" = "No provider selected.";
|
||||
"errors.app.default" = "Unable to complete operation.";
|
||||
"errors.app.passepartout.connection_module_required" = "Routing module can only be enabled together with a connection.";
|
||||
"errors.app.passepartout.corrupt_provider_module" = "Unable to connect to provider server (reason=%@).";
|
||||
"errors.app.passepartout.invalid_fields" = "Invalid fields.";
|
||||
"errors.app.passepartout.incompatible_modules" = "Some active modules are incompatible, try to only activate one of them.";
|
||||
"errors.app.passepartout.invalid_fields" = "Invalid fields.";
|
||||
"errors.app.passepartout.missing_provider_entity" = "No provider server selected.";
|
||||
"errors.app.passepartout.parsing" = "Unable to parse file.";
|
||||
"errors.app.passepartout.provider_required" = "No provider selected.";
|
||||
"errors.app.passepartout.default" = "Unable to complete operation (code=%@).";
|
||||
|
||||
"errors.tunnel.auth" = "Auth failed";
|
||||
|
|
|
@ -160,7 +160,7 @@ private struct ProviderCountryFlag: View {
|
|||
var body: some View {
|
||||
ThemeCountryFlag(
|
||||
code: provider.entity?.header.countryCode,
|
||||
placeholderTip: Strings.Errors.App.Provider.missingEntity,
|
||||
placeholderTip: Strings.Errors.App.Passepartout.missingProviderEntity,
|
||||
countryTip: {
|
||||
$0.localizedAsRegionCode
|
||||
}
|
||||
|
|
|
@ -140,9 +140,20 @@ private extension TunnelToggleButton {
|
|||
} catch is CancellationError {
|
||||
//
|
||||
} catch {
|
||||
if (error as? PassepartoutError)?.code == .missingProviderEntity {
|
||||
switch (error as? PassepartoutError)?.code {
|
||||
case .missingProviderEntity:
|
||||
onProviderEntityRequired?(profile)
|
||||
return
|
||||
|
||||
case .providerRequired:
|
||||
errorHandler.handle(
|
||||
error,
|
||||
title: Strings.Global.connection
|
||||
)
|
||||
return
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
errorHandler.handle(
|
||||
error,
|
||||
|
|
Loading…
Reference in New Issue