upsertDiscoveredGroup method
Insert or update a discovered group.
If the group already exists, only lastSeenAt and memberCount
are updated — preserving the user's isSubscribed preference and
any custom displayName they may have set.
Implementation
Future<void> upsertDiscoveredGroup({
required String groupId,
String? displayName,
int? memberCount,
}) async {
final now = DateTime.now().millisecondsSinceEpoch;
final existing = await getGroupById(groupId);
if (existing != null) {
// Group already known — update freshness + member count only
await (update(groups)..where((t) => t.groupId.equals(groupId))).write(
GroupsCompanion(
lastSeenAt: Value(now),
memberCount: memberCount != null
? Value(memberCount)
: const Value.absent(),
),
);
} else {
// New group discovered — insert it
await into(groups).insert(GroupsCompanion.insert(
groupId: groupId,
displayName: displayName ?? groupId,
discoveredAt: now,
lastSeenAt: now,
memberCount: Value(memberCount ?? 1),
));
}
}