[mob][photos] Deprecate in User model and create extension of User which has displayName() method that gets user name from emailToNameCache
This commit is contained in:
14
mobile/lib/extensions/user_extension.dart
Normal file
14
mobile/lib/extensions/user_extension.dart
Normal file
@@ -0,0 +1,14 @@
|
||||
import "package:photos/models/api/collection/user.dart";
|
||||
import "package:photos/services/machine_learning/face_ml/person/person_service.dart";
|
||||
|
||||
extension UserExtension on User {
|
||||
String? displayName() {
|
||||
final emailToName = PersonService.instance.emailToNameMapCache;
|
||||
if (emailToName.containsKey(email)) {
|
||||
return emailToName[email];
|
||||
} else {
|
||||
//Some initial users have name in name field.
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,10 @@ import "dart:convert";
|
||||
class User {
|
||||
int? id;
|
||||
String email;
|
||||
@Deprecated(
|
||||
"Use displayName() extension method instead. Note: Some early users have"
|
||||
" value in name field.",
|
||||
)
|
||||
String? name;
|
||||
String? role;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class PersonService {
|
||||
final EntityService entityService;
|
||||
final MLDataDB faceMLDataDB;
|
||||
final SharedPreferences prefs;
|
||||
final _emailToNameMap = <String, String>{};
|
||||
final _emailToNameMapCache = <String, String>{};
|
||||
|
||||
PersonService(this.entityService, this.faceMLDataDB, this.prefs);
|
||||
|
||||
@@ -44,14 +44,17 @@ class PersonService {
|
||||
_instance!.getPersons().then((value) {
|
||||
for (var person in value) {
|
||||
if (person.data.email != null && person.data.email!.isNotEmpty) {
|
||||
_instance!._emailToNameMap[person.data.email!] = person.data.name;
|
||||
_instance!._emailToNameMapCache[person.data.email!] =
|
||||
person.data.name;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Map<String, String> get emailToNameMapCache => _emailToNameMapCache;
|
||||
|
||||
void clearCache() {
|
||||
_emailToNameMap.clear();
|
||||
_emailToNameMapCache.clear();
|
||||
}
|
||||
|
||||
Future<List<PersonEntity>> getPersons() async {
|
||||
@@ -191,7 +194,7 @@ class PersonService {
|
||||
clusterID: clusterID,
|
||||
);
|
||||
if (data.email != null) {
|
||||
_emailToNameMap[data.email!] = data.name;
|
||||
_emailToNameMapCache[data.email!] = data.name;
|
||||
}
|
||||
return PersonEntity(result.id, data);
|
||||
}
|
||||
@@ -282,7 +285,7 @@ class PersonService {
|
||||
justName.data.logStats();
|
||||
|
||||
if (entity.data.email != null) {
|
||||
_emailToNameMap.remove(entity.data.email!);
|
||||
_emailToNameMapCache.remove(entity.data.email!);
|
||||
}
|
||||
} else {
|
||||
await entityService.deleteEntry(personID);
|
||||
@@ -290,7 +293,7 @@ class PersonService {
|
||||
|
||||
if (entity != null) {
|
||||
if (entity.data.email != null) {
|
||||
_emailToNameMap.remove(entity.data.email!);
|
||||
_emailToNameMapCache.remove(entity.data.email!);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -454,10 +457,10 @@ class PersonService {
|
||||
);
|
||||
await updatePerson(updatedPerson).then((value) {
|
||||
if (email != null) {
|
||||
_emailToNameMap[email] = updatedPerson.data.name;
|
||||
_emailToNameMapCache[email] = updatedPerson.data.name;
|
||||
}
|
||||
if (name != null && updatedPerson.data.email != null) {
|
||||
_emailToNameMap[updatedPerson.data.email!] = name;
|
||||
_emailToNameMapCache[updatedPerson.data.email!] = name;
|
||||
}
|
||||
});
|
||||
return updatedPerson;
|
||||
|
||||
Reference in New Issue
Block a user