|
|
@@ -1,7 +1,7 @@
|
|
|
import 'package:dio/dio.dart';
|
|
|
-import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
|
-import 'package:provider/provider.dart';
|
|
|
+
|
|
|
+import 'package:encrypt/encrypt.dart';
|
|
|
|
|
|
import 'package:e2ee_chat/common/global.dart';
|
|
|
import 'package:e2ee_chat/common/api.dart';
|
|
|
@@ -43,10 +43,23 @@ class LoginPresenter extends ProfilePresenter {
|
|
|
|
|
|
User? get user => profile.user;
|
|
|
|
|
|
+ @Transient()
|
|
|
+ Future<String?> get _secretKey async {
|
|
|
+ if (user == null) return null;
|
|
|
+ final storage = FlutterSecureStorage();
|
|
|
+ String? _key = await storage.read(key: _keyKey);
|
|
|
+ if (_key == null) {
|
|
|
+ _key = Key.fromSecureRandom(256).base64;
|
|
|
+ await storage.write(key: _keyKey, value: _key);
|
|
|
+ }
|
|
|
+ return _key;
|
|
|
+ }
|
|
|
+
|
|
|
+ String get _keyKey => "e2ee_chat secret key of ${user!.username}";
|
|
|
+
|
|
|
Future<bool> login({String? username, String? password}) async {
|
|
|
debug('UserModel login begin');
|
|
|
if (username != null) {
|
|
|
-
|
|
|
profile.user = User(username);
|
|
|
}
|
|
|
bool _result = false;
|