mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-28 00:34:06 +02:00
60 lines
1.5 KiB
Dart
60 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:mobile/models/user.dart';
|
|
import 'package:mobile/results.dart';
|
|
import 'package:mobile/server/server.dart';
|
|
|
|
class SessionController extends ChangeNotifier {
|
|
final Server server;
|
|
String? _sessionToken;
|
|
|
|
SessionController({required this.server});
|
|
|
|
Future<Result<Null, String>> login(String email, String password) async {
|
|
switch (await server.login(email, password)) {
|
|
case Success<String>(data: final token):
|
|
_sessionToken = token;
|
|
notifyListeners();
|
|
return const Ok(null);
|
|
case Error<String>(message: final message):
|
|
notifyListeners();
|
|
return Err(message);
|
|
}
|
|
}
|
|
|
|
Future<Result<User, Null>> user() async {
|
|
final token = _sessionToken;
|
|
if (token == null) {
|
|
notifyListeners();
|
|
return const Err(null);
|
|
}
|
|
final res = await server.sessionUser(token);
|
|
switch (res) {
|
|
case Success<User>(data: final user):
|
|
return Ok(user);
|
|
case Error<User>():
|
|
_sessionToken = null;
|
|
notifyListeners();
|
|
return const Err(null);
|
|
}
|
|
}
|
|
|
|
get sessionToken {
|
|
return _sessionToken;
|
|
}
|
|
|
|
Future<void> logout() async {
|
|
final token = _sessionToken;
|
|
if (token != null) {
|
|
server.logout(token);
|
|
_sessionToken = null;
|
|
}
|
|
print(_sessionToken);
|
|
print("notifying listeners");
|
|
notifyListeners();
|
|
}
|
|
|
|
Result<int, String> pay(int userId, int amount) {
|
|
return const Err("not implemented");
|
|
}
|
|
}
|