mirror of
https://github.com/Dvorinka/1356.git
synced 2026-06-04 20:12:56 +00:00
Added core data models, repositories, and utilities
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
import 'failure.dart';
|
||||
|
||||
class ErrorMapper {
|
||||
static Failure mapError(dynamic error) {
|
||||
if (error is AuthException) {
|
||||
switch (error.message) {
|
||||
case 'Invalid login credentials':
|
||||
return const AuthFailure('Invalid email or password');
|
||||
case 'Email not confirmed':
|
||||
return const AuthFailure('Please confirm your email address');
|
||||
case 'User already registered':
|
||||
return const AuthFailure('An account with this email already exists');
|
||||
case 'Password should be at least 6 characters':
|
||||
return const AuthFailure('Password must be at least 6 characters');
|
||||
default:
|
||||
return AuthFailure(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
if (error is PostgrestException) {
|
||||
switch (error.code) {
|
||||
case '23505':
|
||||
return const ValidationFailure('This record already exists');
|
||||
case '23503':
|
||||
return const ValidationFailure('Referenced record does not exist');
|
||||
case '42501':
|
||||
return const PermissionFailure('You do not have permission to perform this action');
|
||||
default:
|
||||
return ServerFailure(
|
||||
error.message,
|
||||
statusCode: int.tryParse(error.code ?? ''),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (error is Exception) {
|
||||
return NetworkFailure(error.toString().replaceAll('Exception: ', ''));
|
||||
}
|
||||
|
||||
return UnknownFailure(error.toString());
|
||||
}
|
||||
|
||||
static String getUserMessage(Failure failure) {
|
||||
return failure.message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
abstract class Failure {
|
||||
final String message;
|
||||
final int? statusCode;
|
||||
|
||||
const Failure(this.message, {this.statusCode});
|
||||
|
||||
@override
|
||||
String toString() => 'Failure: $message';
|
||||
}
|
||||
|
||||
class ServerFailure extends Failure {
|
||||
const ServerFailure(super.message, {super.statusCode});
|
||||
}
|
||||
|
||||
class NetworkFailure extends Failure {
|
||||
const NetworkFailure(super.message);
|
||||
}
|
||||
|
||||
class AuthFailure extends Failure {
|
||||
const AuthFailure(super.message);
|
||||
}
|
||||
|
||||
class ValidationFailure extends Failure {
|
||||
const ValidationFailure(super.message);
|
||||
}
|
||||
|
||||
class NotFoundFailure extends Failure {
|
||||
const NotFoundFailure(super.message);
|
||||
}
|
||||
|
||||
class PermissionFailure extends Failure {
|
||||
const PermissionFailure(super.message);
|
||||
}
|
||||
|
||||
class UnknownFailure extends Failure {
|
||||
const UnknownFailure(super.message);
|
||||
}
|
||||
Reference in New Issue
Block a user