add auth, format
This commit is contained in:
@@ -9,16 +9,12 @@ sealed class Failure {
|
||||
const Failure({required this.message});
|
||||
|
||||
/// Network-related failure
|
||||
const factory Failure.network({
|
||||
required String message,
|
||||
int? statusCode,
|
||||
}) = NetworkFailure;
|
||||
const factory Failure.network({required String message, int? statusCode}) =
|
||||
NetworkFailure;
|
||||
|
||||
/// Server error failure (5xx errors)
|
||||
const factory Failure.server({
|
||||
required String message,
|
||||
int? statusCode,
|
||||
}) = ServerFailure;
|
||||
const factory Failure.server({required String message, int? statusCode}) =
|
||||
ServerFailure;
|
||||
|
||||
/// Authentication failure
|
||||
const factory Failure.authentication({
|
||||
@@ -33,20 +29,14 @@ sealed class Failure {
|
||||
}) = ValidationFailure;
|
||||
|
||||
/// Not found failure (404)
|
||||
const factory Failure.notFound({
|
||||
required String message,
|
||||
}) = NotFoundFailure;
|
||||
const factory Failure.notFound({required String message}) = NotFoundFailure;
|
||||
|
||||
/// Conflict failure (409)
|
||||
const factory Failure.conflict({
|
||||
required String message,
|
||||
}) = ConflictFailure;
|
||||
const factory Failure.conflict({required String message}) = ConflictFailure;
|
||||
|
||||
/// Rate limit exceeded failure (429)
|
||||
const factory Failure.rateLimit({
|
||||
required String message,
|
||||
int? retryAfter,
|
||||
}) = RateLimitFailure;
|
||||
const factory Failure.rateLimit({required String message, int? retryAfter}) =
|
||||
RateLimitFailure;
|
||||
|
||||
/// Payment failure
|
||||
const factory Failure.payment({
|
||||
@@ -55,19 +45,13 @@ sealed class Failure {
|
||||
}) = PaymentFailure;
|
||||
|
||||
/// Cache failure
|
||||
const factory Failure.cache({
|
||||
required String message,
|
||||
}) = CacheFailure;
|
||||
const factory Failure.cache({required String message}) = CacheFailure;
|
||||
|
||||
/// Storage failure
|
||||
const factory Failure.storage({
|
||||
required String message,
|
||||
}) = StorageFailure;
|
||||
const factory Failure.storage({required String message}) = StorageFailure;
|
||||
|
||||
/// Parse failure
|
||||
const factory Failure.parse({
|
||||
required String message,
|
||||
}) = ParseFailure;
|
||||
const factory Failure.parse({required String message}) = ParseFailure;
|
||||
|
||||
/// No internet connection failure
|
||||
const factory Failure.noInternet() = NoInternetFailure;
|
||||
@@ -76,9 +60,7 @@ sealed class Failure {
|
||||
const factory Failure.timeout() = TimeoutFailure;
|
||||
|
||||
/// Unknown failure
|
||||
const factory Failure.unknown({
|
||||
required String message,
|
||||
}) = UnknownFailure;
|
||||
const factory Failure.unknown({required String message}) = UnknownFailure;
|
||||
|
||||
final String message;
|
||||
|
||||
@@ -120,15 +102,21 @@ sealed class Failure {
|
||||
/// Get user-friendly error message
|
||||
String getUserMessage() {
|
||||
return switch (this) {
|
||||
ValidationFailure(:final message, :final errors) => _formatValidationMessage(message, errors),
|
||||
RateLimitFailure(:final message, :final retryAfter) => _formatRateLimitMessage(message, retryAfter),
|
||||
NoInternetFailure() => 'Không có kết nối internet. Vui lòng kiểm tra kết nối của bạn.',
|
||||
ValidationFailure(:final message, :final errors) =>
|
||||
_formatValidationMessage(message, errors),
|
||||
RateLimitFailure(:final message, :final retryAfter) =>
|
||||
_formatRateLimitMessage(message, retryAfter),
|
||||
NoInternetFailure() =>
|
||||
'Không có kết nối internet. Vui lòng kiểm tra kết nối của bạn.',
|
||||
TimeoutFailure() => 'Kết nối quá lâu. Vui lòng thử lại.',
|
||||
_ => message,
|
||||
};
|
||||
}
|
||||
|
||||
String _formatValidationMessage(String message, Map<String, List<String>>? errors) {
|
||||
String _formatValidationMessage(
|
||||
String message,
|
||||
Map<String, List<String>>? errors,
|
||||
) {
|
||||
if (errors != null && errors.isNotEmpty) {
|
||||
final firstError = errors.values.first.first;
|
||||
return '$message: $firstError';
|
||||
@@ -146,10 +134,7 @@ sealed class Failure {
|
||||
|
||||
/// Network-related failure
|
||||
final class NetworkFailure extends Failure {
|
||||
const NetworkFailure({
|
||||
required super.message,
|
||||
this.statusCode,
|
||||
});
|
||||
const NetworkFailure({required super.message, this.statusCode});
|
||||
|
||||
@override
|
||||
final int? statusCode;
|
||||
@@ -157,10 +142,7 @@ final class NetworkFailure extends Failure {
|
||||
|
||||
/// Server error failure (5xx errors)
|
||||
final class ServerFailure extends Failure {
|
||||
const ServerFailure({
|
||||
required super.message,
|
||||
this.statusCode,
|
||||
});
|
||||
const ServerFailure({required super.message, this.statusCode});
|
||||
|
||||
@override
|
||||
final int? statusCode;
|
||||
@@ -168,10 +150,7 @@ final class ServerFailure extends Failure {
|
||||
|
||||
/// Authentication failure
|
||||
final class AuthenticationFailure extends Failure {
|
||||
const AuthenticationFailure({
|
||||
required super.message,
|
||||
this.statusCode,
|
||||
});
|
||||
const AuthenticationFailure({required super.message, this.statusCode});
|
||||
|
||||
@override
|
||||
final int? statusCode;
|
||||
@@ -179,84 +158,61 @@ final class AuthenticationFailure extends Failure {
|
||||
|
||||
/// Validation failure
|
||||
final class ValidationFailure extends Failure {
|
||||
const ValidationFailure({
|
||||
required super.message,
|
||||
this.errors,
|
||||
});
|
||||
const ValidationFailure({required super.message, this.errors});
|
||||
|
||||
final Map<String, List<String>>? errors;
|
||||
}
|
||||
|
||||
/// Not found failure (404)
|
||||
final class NotFoundFailure extends Failure {
|
||||
const NotFoundFailure({
|
||||
required super.message,
|
||||
});
|
||||
const NotFoundFailure({required super.message});
|
||||
}
|
||||
|
||||
/// Conflict failure (409)
|
||||
final class ConflictFailure extends Failure {
|
||||
const ConflictFailure({
|
||||
required super.message,
|
||||
});
|
||||
const ConflictFailure({required super.message});
|
||||
}
|
||||
|
||||
/// Rate limit exceeded failure (429)
|
||||
final class RateLimitFailure extends Failure {
|
||||
const RateLimitFailure({
|
||||
required super.message,
|
||||
this.retryAfter,
|
||||
});
|
||||
const RateLimitFailure({required super.message, this.retryAfter});
|
||||
|
||||
final int? retryAfter;
|
||||
}
|
||||
|
||||
/// Payment failure
|
||||
final class PaymentFailure extends Failure {
|
||||
const PaymentFailure({
|
||||
required super.message,
|
||||
this.transactionId,
|
||||
});
|
||||
const PaymentFailure({required super.message, this.transactionId});
|
||||
|
||||
final String? transactionId;
|
||||
}
|
||||
|
||||
/// Cache failure
|
||||
final class CacheFailure extends Failure {
|
||||
const CacheFailure({
|
||||
required super.message,
|
||||
});
|
||||
const CacheFailure({required super.message});
|
||||
}
|
||||
|
||||
/// Storage failure
|
||||
final class StorageFailure extends Failure {
|
||||
const StorageFailure({
|
||||
required super.message,
|
||||
});
|
||||
const StorageFailure({required super.message});
|
||||
}
|
||||
|
||||
/// Parse failure
|
||||
final class ParseFailure extends Failure {
|
||||
const ParseFailure({
|
||||
required super.message,
|
||||
});
|
||||
const ParseFailure({required super.message});
|
||||
}
|
||||
|
||||
/// No internet connection failure
|
||||
final class NoInternetFailure extends Failure {
|
||||
const NoInternetFailure()
|
||||
: super(message: 'Không có kết nối internet');
|
||||
const NoInternetFailure() : super(message: 'Không có kết nối internet');
|
||||
}
|
||||
|
||||
/// Timeout failure
|
||||
final class TimeoutFailure extends Failure {
|
||||
const TimeoutFailure()
|
||||
: super(message: 'Kết nối quá lâu');
|
||||
const TimeoutFailure() : super(message: 'Kết nối quá lâu');
|
||||
}
|
||||
|
||||
/// Unknown failure
|
||||
final class UnknownFailure extends Failure {
|
||||
const UnknownFailure({
|
||||
required super.message,
|
||||
});
|
||||
const UnknownFailure({required super.message});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user