| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import 'package:dio/dio.dart';
- import 'package:flutter_secure_storage/flutter_secure_storage.dart';
- import 'package:encrypt/encrypt.dart';
- import 'package:e2ee_chat/common/global.dart';
- import 'package:e2ee_chat/common/api.dart';
- import '../model/user.dart';
- import 'profile.dart';
- /*
- static Future<void> put(User user) async {
- debug('put user ${user.id} ${user.username}');
- final store = await openStore();
- final box = store.box<User>();
- box.put(user);
- store.close();
- }
- static Future<User?> query(String username) async {
- final store = await openStore();
- final box = store.box<User>();
- int id = 0;
- box.getAll().forEach((user) {
- if (user.username == username) id = user.id;
- });
- User? user = box.get(id);
- // Query<User> query = box.query(User_.username.equals(username)).build();
- // final user = query.findFirst();
- // query.close();
- debug('query user with username=$username get id=$id');
- store.close();
- return user;
- }
- */
- class LoginPresenter extends ProfilePresenter {
- bool get isLogin => profile.isLogin;
- User? get user => profile.user;
- Future<bool> login({String? username, String? password}) async {
- debug('UserModel login begin');
- if (username != null) {
- profile.user = User(username);
- }
- bool _result = false;
- String? token = await profile.token;
- if (profile.username != null && (password != null || token != null)) {
- String? _token;
- try {
- _token = await Api().login(username: profile.username!, password: password, token: token);
- _result = _token != null;
- } on DioError catch(e) {
- print(e);
- }
- profile.setToken(_token);
- debug('UserModel login get token: ${await profile.token}');
- if (await profile.token != null) {
- debug('UserModel login success!');
- profile.isLogin = true;
- profile.isLogout = false;
- // await User.put(profile.user!);
- profile.setToken(_token);
- notifyListeners();
- }
- }
- debug('UserModel login end');
- return _result;
- }
- Future<void> logout() async {
- if (profile.isLogin && await Api().logout()) {
- profile.isLogin = false;
- profile.isLogout = true;
- notifyListeners();
- }
- }
- Future<bool> loginOrRegister(String username, String password) async {
- if (await login(username: username, password: password)) {
- return true;
- } else if (await Api().register(username, password)) {
- return await login(username: username, password: password);
- }
- return false;
- }
- }
|