From 9ff57b765c7dfea9129ceb4d4ea42c1f0e60d2f0 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Wed, 22 Jan 2025 16:02:43 +0530 Subject: [PATCH] [mob][photos] Deprecate in User model and create extension of User which has displayName() method that gets user name from emailToNameCache --- mobile/lib/extensions/user_extension.dart | 14 ++++++++++++++ mobile/lib/models/api/collection/user.dart | 4 ++++ .../face_ml/person/person_service.dart | 19 +++++++++++-------- 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 mobile/lib/extensions/user_extension.dart diff --git a/mobile/lib/extensions/user_extension.dart b/mobile/lib/extensions/user_extension.dart new file mode 100644 index 0000000000..6670cd95e8 --- /dev/null +++ b/mobile/lib/extensions/user_extension.dart @@ -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; + } + } +} diff --git a/mobile/lib/models/api/collection/user.dart b/mobile/lib/models/api/collection/user.dart index cce90d8147..179756d8c1 100644 --- a/mobile/lib/models/api/collection/user.dart +++ b/mobile/lib/models/api/collection/user.dart @@ -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; diff --git a/mobile/lib/services/machine_learning/face_ml/person/person_service.dart b/mobile/lib/services/machine_learning/face_ml/person/person_service.dart index 3ff47f167f..351e713cf1 100644 --- a/mobile/lib/services/machine_learning/face_ml/person/person_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/person/person_service.dart @@ -19,7 +19,7 @@ class PersonService { final EntityService entityService; final MLDataDB faceMLDataDB; final SharedPreferences prefs; - final _emailToNameMap = {}; + final _emailToNameMapCache = {}; 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 get emailToNameMapCache => _emailToNameMapCache; + void clearCache() { - _emailToNameMap.clear(); + _emailToNameMapCache.clear(); } Future> 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;