This repository has been archived on 2025-08-25. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Seshat/lib/data/repositories/auth_repository.dart

42 lines
1 KiB
Dart

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<bool> 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<Result<void>> 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));
}
}
}