Change error prompts

This commit is contained in:
problematicconsumer
2023-08-26 17:01:51 +03:30
parent f393020a31
commit 2ecb781f60
15 changed files with 88 additions and 48 deletions

View File

@@ -14,9 +14,9 @@ sealed class UpdateFailure with _$UpdateFailure, Failure {
]) = UpdateUnexpectedFailure;
@override
String present(TranslationsEn t) {
({String type, String? message}) present(TranslationsEn t) {
return switch (this) {
UpdateUnexpectedFailure() => t.failure.unexpected,
UpdateUnexpectedFailure() => (type: t.failure.unexpected, message: null),
};
}
}

View File

@@ -25,15 +25,20 @@ sealed class ConnectionFailure with _$ConnectionFailure, Failure {
CoreConnectionFailure;
@override
String present(TranslationsEn t) {
({String type, String? message}) present(TranslationsEn t) {
return switch (this) {
UnexpectedConnectionFailure() => t.failure.connectivity.unexpected,
MissingVpnPermission(:final message) =>
t.failure.connectivity.missingVpnPermission +
(message == null ? "" : ": $message"),
MissingNotificationPermission(:final message) =>
t.failure.connectivity.missingNotificationPermission +
(message == null ? "" : ": $message"),
UnexpectedConnectionFailure() => (
type: t.failure.connectivity.unexpected,
message: null
),
MissingVpnPermission(:final message) => (
type: t.failure.connectivity.missingVpnPermission,
message: message
),
MissingNotificationPermission(:final message) => (
type: t.failure.connectivity.missingNotificationPermission,
message: message
),
CoreConnectionFailure(:final failure) => failure.present(t),
};
}

View File

@@ -42,19 +42,32 @@ sealed class CoreServiceFailure with _$CoreServiceFailure, Failure {
};
@override
String present(TranslationsEn t) {
({String type, String? message}) present(TranslationsEn t) {
return switch (this) {
UnexpectedCoreServiceFailure() => t.failure.singbox.unexpected,
CoreServiceNotRunning(:final message) =>
t.failure.singbox.serviceNotRunning +
(message == null ? "" : ": $message"),
InvalidConfig(:final message) =>
t.failure.singbox.invalidConfig + (message == null ? "" : ": $message"),
CoreServiceCreateFailure(:final message) =>
t.failure.singbox.create + (message == null ? "" : ": $message"),
CoreServiceStartFailure(:final message) =>
t.failure.singbox.start + (message == null ? "" : ": $message"),
CoreServiceOtherFailure(:final message) => message ?? "",
UnexpectedCoreServiceFailure() => (
type: t.failure.singbox.unexpected,
message: null
),
CoreServiceNotRunning(:final message) => (
type: t.failure.singbox.serviceNotRunning,
message: message
),
InvalidConfig(:final message) => (
type: t.failure.singbox.invalidConfig,
message: message
),
CoreServiceCreateFailure(:final message) => (
type: t.failure.singbox.create,
message: message
),
CoreServiceStartFailure(:final message) => (
type: t.failure.singbox.start,
message: message
),
CoreServiceOtherFailure(:final message) => (
type: t.failure.singbox.unexpected,
message: message
),
};
}
}

View File

@@ -2,12 +2,20 @@ import 'package:hiddify/core/locale/locale.dart';
// TODO: rewrite
mixin Failure {
String present(TranslationsEn t);
({String type, String? message}) present(TranslationsEn t);
}
extension ErrorPresenter on TranslationsEn {
String presentError(Object error) {
if (error case Failure()) return error.present(this);
String printError(Object error) {
if (error case Failure()) {
final err = error.present(this);
return err.type + (err.message == null ? "" : ": ${err.message}");
}
return failure.unexpected;
}
({String type, String? message}) presentError(Object error) {
if (error case Failure()) return error.present(this);
return (type: failure.unexpected, message: null);
}
}

View File

@@ -19,13 +19,20 @@ sealed class ProfileFailure with _$ProfileFailure, Failure {
ProfileInvalidConfigFailure;
@override
String present(TranslationsEn t) {
({String type, String? message}) present(TranslationsEn t) {
return switch (this) {
ProfileUnexpectedFailure() => t.failure.profiles.unexpected,
ProfileNotFoundFailure() => t.failure.profiles.notFound,
ProfileInvalidConfigFailure(:final message) =>
t.failure.profiles.invalidConfig +
(message == null ? "" : ": $message"),
ProfileUnexpectedFailure() => (
type: t.failure.profiles.unexpected,
message: null
),
ProfileNotFoundFailure() => (
type: t.failure.profiles.notFound,
message: null
),
ProfileInvalidConfigFailure(:final message) => (
type: t.failure.profiles.invalidConfig,
message: message
),
};
}
}