add auth, format

This commit is contained in:
Phuoc Nguyen
2025-11-07 11:52:06 +07:00
parent 24a8508fce
commit 3803bd26e0
173 changed files with 8505 additions and 7116 deletions

View File

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