This commit is contained in:
Dmitry 2024-07-25 10:47:46 +03:00
parent 30fdd2a174
commit b297e12b4b
4 changed files with 7 additions and 4 deletions

View file

@ -41,12 +41,14 @@ class HttpRepository extends Repository with Api {
Future<(UserDto, String)> createOrGetUser( Future<(UserDto, String)> createOrGetUser(
String externalId, String externalId,
ExternalIdType idType, ExternalIdType idType,
String email,
String? name, String? name,
) async { ) async {
try { try {
final r = await _dio.post<String>('$path/user/create', data: { final r = await _dio.post<String>('$path/user/create', data: {
'token': externalId, 'token': externalId,
'tokenType': idType.name, 'tokenType': idType.name,
'email': email,
'name': name, 'name': name,
}); });
//todo add client header encryption ?? //todo add client header encryption ??

View file

@ -1,7 +1,6 @@
import 'package:mnemo_cards/managers/user_manager.dart'; import 'package:mnemo_cards/managers/user_manager.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart'; import 'package:mnemo_cards_common/mnemo_cards_common.dart';
abstract class Repository { abstract class Repository {
Future<UserDto> get user; Future<UserDto> get user;
@ -14,12 +13,12 @@ abstract class Repository {
Future<(UserDto, String)> createOrGetUser( Future<(UserDto, String)> createOrGetUser(
String externalId, String externalId,
ExternalIdType idType, ExternalIdType idType,
String email,
String? name, String? name,
); );
Future<UserDto?> getUser(); Future<UserDto?> getUser();
void setAuthToken(String? authToken); void setAuthToken(String? authToken);
Future<void> updateUserData(UserDataDto data); Future<void> updateUserData(UserDataDto data);

View file

@ -61,10 +61,11 @@ class UserManager {
Future<void> _createUser( Future<void> _createUser(
String externalId, String externalId,
ExternalIdType idType, ExternalIdType idType,
String email,
String? name, String? name,
) async { ) async {
final (user, token) = final (user, token) =
await _repository.createOrGetUser(externalId, idType, name); await _repository.createOrGetUser(externalId, idType, email, name);
await _setAuthToken(token); await _setAuthToken(token);
userStateHolder.setUser(user); userStateHolder.setUser(user);
} }
@ -124,11 +125,12 @@ class UserManager {
.distinct((p, n) => p?.id == n?.id) .distinct((p, n) => p?.id == n?.id)
.listen((account) async { .listen((account) async {
if (account != null) { if (account != null) {
final email = account.email;
final name = account.displayName; final name = account.displayName;
final externalToken = final externalToken =
await account.authentication.then((value) => value.idToken); await account.authentication.then((value) => value.idToken);
Analytics.login(ExternalIdType.google); Analytics.login(ExternalIdType.google);
await _createUser(externalToken!, ExternalIdType.google, name); await _createUser(externalToken!, ExternalIdType.google, email, name);
} }
})) }))
..add( ..add(