base project
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'api_failure.freezed.dart';
|
||||
|
||||
@freezed
|
||||
sealed class ApiFailure with _$ApiFailure {
|
||||
const ApiFailure._();
|
||||
|
||||
const factory ApiFailure.serverError({
|
||||
required int statusCode,
|
||||
required Object errorMessage,
|
||||
}) = _ServerError;
|
||||
|
||||
const factory ApiFailure.unexpectedError({
|
||||
required Object errorMessage,
|
||||
required StackTrace stackTrace,
|
||||
}) = _UnexpectedError;
|
||||
|
||||
const factory ApiFailure.connectionError() = _ConnectionError;
|
||||
|
||||
const factory ApiFailure.internalServerError() = _InternalServerError;
|
||||
|
||||
const factory ApiFailure.unauthorized(String? message) = _Unauthorized;
|
||||
|
||||
const factory ApiFailure.badRequest(String? message) = _BadRequest;
|
||||
|
||||
const factory ApiFailure.notFound(String? message) = _NotFound;
|
||||
|
||||
const factory ApiFailure.connectionTimeout() = _ConnectionTimeout;
|
||||
|
||||
String toStringFormatted(
|
||||
BuildContext context, {
|
||||
String? unauthorizedMessage,
|
||||
}) {
|
||||
return switch (this) {
|
||||
_ServerError(:final statusCode, :final errorMessage) =>
|
||||
'There is a problem with the server. Status code: $statusCode Error: $errorMessage',
|
||||
|
||||
_UnexpectedError() => 'An error occurred. Please try again later.',
|
||||
|
||||
_ConnectionError() => 'No Internet',
|
||||
|
||||
_InternalServerError() =>
|
||||
'The server is experiencing problems. Please try again later.',
|
||||
|
||||
_Unauthorized(:final message) =>
|
||||
message ?? unauthorizedMessage ?? 'Session has expired.',
|
||||
|
||||
_BadRequest(:final message) =>
|
||||
message ?? 'There is an incorrect entry. Please check again',
|
||||
|
||||
_NotFound(:final message) => message ?? 'Not Found',
|
||||
|
||||
_ConnectionTimeout() => 'Connection Timeout',
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user