Line data Source code
1 : import 'package:tech_proof/core/error/failure.dart'; 2 : import 'package:tech_proof/core/error/logger_service.dart'; 3 : import 'package:dartz/dartz.dart'; 4 : import 'package:dio/dio.dart'; 5 : 6 3 : Future<Either<Failure, T>> safeCall<T>(Future<T> Function() request) async { 7 : try { 8 3 : final result = await request(); 9 3 : return Right(result); 10 2 : } on DioException catch (e) { 11 2 : final failure = UnexpectedFailure(e.message ?? "Dio Exception"); 12 3 : LoggerService.error("Repository", failure.message, e.stackTrace); 13 2 : if (e.error is Failure) return Left(e.error as Failure); 14 4 : return Left(UnexpectedFailure("Unhandled Dio error: ${e.message}")); 15 : } catch (e, st) { 16 2 : LoggerService.error("Repository", e.toString(), st); 17 : 18 3 : return Left(UnexpectedFailure(e.toString())); 19 : } 20 : }