mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-05-25 10:12:12 +00:00
add new numbers to the user_studies
This commit is contained in:
parent
50679ce9ed
commit
4a8fbdce28
3 changed files with 79 additions and 1 deletions
|
|
@ -146,6 +146,18 @@ class ContactsDao extends DatabaseAccessor<TwonlyDB> with _$ContactsDaoMixin {
|
||||||
.watch();
|
.watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<Contact>> getContactsAnnouncedViaUserDiscovery() async {
|
||||||
|
return (select(contacts)..where(
|
||||||
|
(t) =>
|
||||||
|
t.userDiscoveryVersion.isNotNull() &
|
||||||
|
t.userDiscoveryExcluded.equals(false) &
|
||||||
|
t.mediaSendCounter.isBiggerOrEqualValue(
|
||||||
|
userService.currentUser.minimumRequiredImagesExchanged,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
.get();
|
||||||
|
}
|
||||||
|
|
||||||
Stream<List<Contact>> watchAllContacts() {
|
Stream<List<Contact>> watchAllContacts() {
|
||||||
return select(contacts).watch();
|
return select(contacts).watch();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,46 @@ class UserDiscoveryDao extends DatabaseAccessor<TwonlyDB>
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<AnnouncedUsersWithRelations>
|
||||||
|
getAllAnnouncedUsersWithRelations() async {
|
||||||
|
final query = select(userDiscoveryAnnouncedUsers).join([
|
||||||
|
innerJoin(
|
||||||
|
userDiscoveryUserRelations,
|
||||||
|
userDiscoveryUserRelations.announcedUserId.equalsExp(
|
||||||
|
userDiscoveryAnnouncedUsers.announcedUserId,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
innerJoin(
|
||||||
|
contacts,
|
||||||
|
contacts.userId.equalsExp(
|
||||||
|
userDiscoveryUserRelations.fromContactId,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
])..where(userDiscoveryAnnouncedUsers.username.isNotNull());
|
||||||
|
|
||||||
|
final rows = await query.get();
|
||||||
|
// ignore: omit_local_variable_types
|
||||||
|
final AnnouncedUsersWithRelations results = {};
|
||||||
|
|
||||||
|
for (final row in rows) {
|
||||||
|
final user = row.readTable(userDiscoveryAnnouncedUsers);
|
||||||
|
final relation = row.readTable(userDiscoveryUserRelations);
|
||||||
|
final contact = row.readTable(contacts);
|
||||||
|
|
||||||
|
final relationData = (
|
||||||
|
contact,
|
||||||
|
relation.publicKeyVerifiedTimestamp,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!results.containsKey(user)) {
|
||||||
|
results[user] = [];
|
||||||
|
}
|
||||||
|
results[user]!.add(relationData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
Stream<AnnouncedUsersWithRelations> watchAllAnnouncedUsersWithRelations() {
|
Stream<AnnouncedUsersWithRelations> watchAllAnnouncedUsersWithRelations() {
|
||||||
final query = select(userDiscoveryAnnouncedUsers).join([
|
final query = select(userDiscoveryAnnouncedUsers).join([
|
||||||
innerJoin(
|
innerJoin(
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
const userStudySurveyKey = 'user_study_survey';
|
const userStudySurveyKey = 'user_study_survey';
|
||||||
|
|
||||||
// LEASE DO NOT SPAM OR TRY SENDING DIRECTLY TO THIS URL!
|
// PLEASE DO NOT SPAM OR TRY SENDING DIRECTLY TO THIS URL!
|
||||||
// You're just making my master's thesis more difficult and destroy scientific data. :/
|
// You're just making my master's thesis more difficult and destroy scientific data. :/
|
||||||
const surveyUrlBase = 'https://survey.twonly.org/upload.php';
|
const surveyUrlBase = 'https://survey.twonly.org/upload.php';
|
||||||
|
|
||||||
|
|
@ -47,8 +47,34 @@ Future<void> handleUserStudyUpload() async {
|
||||||
final verifications = await twonlyDB.keyVerificationDao
|
final verifications = await twonlyDB.keyVerificationDao
|
||||||
.getFirstVerificationTypeByContacts();
|
.getFirstVerificationTypeByContacts();
|
||||||
|
|
||||||
|
final udFriendsShared = await twonlyDB.contactsDao
|
||||||
|
.getContactsAnnouncedViaUserDiscovery();
|
||||||
|
|
||||||
|
final udAllAnnouncedUsers = await twonlyDB.userDiscoveryDao
|
||||||
|
.getAllAnnouncedUsersWithRelations();
|
||||||
|
|
||||||
|
var udUnknownAnnouncedUsers = 0;
|
||||||
|
|
||||||
|
for (final udUser in udAllAnnouncedUsers.keys) {
|
||||||
|
if (!contacts.any((c) => c.userId == udUser.announcedUserId)) {
|
||||||
|
udUnknownAnnouncedUsers += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final dataCollection = {
|
final dataCollection = {
|
||||||
'total_contacts': contacts.length,
|
'total_contacts': contacts.length,
|
||||||
|
|
||||||
|
'user_discovery_enabled': userService.currentUser.isUserDiscoveryEnabled,
|
||||||
|
'user_discovery_minimum_images':
|
||||||
|
userService.currentUser.minimumRequiredImagesExchanged,
|
||||||
|
'user_discovery_threshold':
|
||||||
|
userService.currentUser.userDiscoveryThreshold,
|
||||||
|
|
||||||
|
'user_discovery_count_friends_shared': udFriendsShared.length,
|
||||||
|
|
||||||
|
'user_discovery_count_announced_users': udAllAnnouncedUsers.length,
|
||||||
|
'user_discovery_count_unknown_announced_users': udUnknownAnnouncedUsers,
|
||||||
|
|
||||||
'accepted_contacts': contacts.where((c) => c.accepted).length,
|
'accepted_contacts': contacts.where((c) => c.accepted).length,
|
||||||
'verified_contacts': verifications.length,
|
'verified_contacts': verifications.length,
|
||||||
'verified_contacts_via_migrated_from_old_version': verifications.values
|
'verified_contacts_via_migrated_from_old_version': verifications.values
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue