import 'package:flutter/foundation.dart'; import 'package:seshat/data/services/auth_client.dart'; import 'package:seshat/utils/result.dart'; class AuthRepository extends ChangeNotifier { AuthRepository({required AuthClient authClient}) : _authClient = authClient; final AuthClient _authClient; bool? _isAuthenticated; Future get isLoggedIn async { if (_isAuthenticated != null) { return _isAuthenticated!; } final result = await _authClient.hasValidToken(); switch (result) { case Ok(): if (result.value) { return true; } return false; case Error(): return false; } } Future> login(String username, String password) async { try { final result = await _authClient.login(username, password); switch (result) { case Ok(): _isAuthenticated = true; return Result.ok(()); case Error(): return Result.error(result.error); } } catch (e) { return Result.error(Exception(e)); } } }