diff --git a/lib/src/database/daos/key_verification.dao.dart b/lib/src/database/daos/key_verification.dao.dart index f4693ff4..cfcbaf84 100644 --- a/lib/src/database/daos/key_verification.dao.dart +++ b/lib/src/database/daos/key_verification.dao.dart @@ -103,6 +103,25 @@ class KeyVerificationDao extends DatabaseAccessor }); } + Future getTransferredTrustVerificationsCount() async { + final kv = keyVerifications; + final ur = userDiscoveryUserRelations; + + final query = selectOnly(ur, distinct: true) + ..addColumns([ur.announcedUserId]) + ..join([ + innerJoin(contacts, contacts.userId.equalsExp(ur.fromContactId)), + innerJoin(kv, kv.contactId.equalsExp(ur.fromContactId)), + ]) + ..where( + ur.publicKeyVerifiedTimestamp.isNotNull() & + ur.announcedUserId.equalsExp(ur.fromContactId).not(), + ); + + final rows = await query.get(); + return rows.length; + } + Stream watchAllGroupMembersVerified(String groupId) { final gm = groupMembers; final directKv = alias(keyVerifications, 'directKv'); diff --git a/lib/src/services/user_study.service.dart b/lib/src/services/user_study.service.dart index 4507add8..79b9cb07 100644 --- a/lib/src/services/user_study.service.dart +++ b/lib/src/services/user_study.service.dart @@ -46,6 +46,8 @@ Future handleUserStudyUpload() async { final contacts = await twonlyDB.contactsDao.getAllContacts(); final verifications = await twonlyDB.keyVerificationDao .getFirstVerificationTypeByContacts(); + final udVerifiedByContactsCount = await twonlyDB.keyVerificationDao + .getTransferredTrustVerificationsCount(); final udFriendsShared = await twonlyDB.contactsDao .getContactsAnnouncedViaUserDiscovery(); @@ -81,6 +83,7 @@ Future handleUserStudyUpload() async { 'user_study_count_new_friends_via_suggestion': userService.currentUser.userStudyCountNewFriendsViaSuggestion, + 'user_discovery_count_verified_by_contacts': udVerifiedByContactsCount, 'accepted_contacts': contacts.where((c) => c.accepted).length, 'verified_contacts': verifications.length,