Line data Source code
1 : import 'package:tech_proof/core/error/logger_service.dart'; 2 : import 'package:dartz/dartz.dart'; // Assuming you're using dartz for Either 3 : 4 : // Define a base Failure class and some concrete Failure types 5 : 6 : abstract class Failure { 7 : final String message; 8 1 : Failure(this.message); 9 : } 10 : 11 : class UnexpectedFailure extends Failure { 12 0 : UnexpectedFailure(super.message); 13 : } 14 : 15 : class SharedPreferencesFailure extends Failure { 16 1 : SharedPreferencesFailure(super.message); 17 : } 18 : 19 : /// Safely executes a synchronous SharedPreferences operation. 20 : /// 21 : /// Returns a [Right] containing the result [T] on success, 22 : /// or a [Left] containing a [Failure] on error. 23 1 : Either<Failure, T> safeSharedPreferencesCall<T>(T Function() request) { 24 : try { 25 1 : final result = request(); 26 1 : return Right(result); 27 : } catch (e, st) { 28 2 : LoggerService.error("SharedPreferences", e.toString(), st); 29 : // You could try to parse the error type if you expect specific SharedPreferences errors, 30 : // but for now, a generic UnexpectedFailure is a good starting point. 31 1 : return Left( 32 1 : SharedPreferencesFailure( 33 2 : "Error accessing SharedPreferences: ${e.toString()}", 34 : ), 35 : ); 36 : } 37 : }