upsertDiscoveredGroup method

Future<void> upsertDiscoveredGroup({
  1. required String groupId,
  2. String? displayName,
  3. int? memberCount,
})

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),
    ));
  }
}