follow method

  1. @override
Future<void> follow({
  1. required String followerId,
  2. required String targetId,
})
override

Records that followerId is following targetId.

Implementation

@override
Future<void> follow({
  required String followerId,
  required String targetId,
}) async {
  try {
    final batch = _firestore.batch();
    final now = FieldValue.serverTimestamp();

    // users/{targetId}/followers/{followerId}
    // users/{followerId}/following/{targetId}
    // Root collection for cross-user queries.
    batch
      ..set(_followersDoc(targetId, followerId), {
        'followerId': followerId,
        'createdAt': now,
      })
      ..set(_followingDoc(followerId, targetId), {
        'targetId': targetId,
        'createdAt': now,
      })
      ..set(_followsCollection().doc('${followerId}_$targetId'), {
        'followerId': followerId,
        'targetId': targetId,
        'createdAt': now,
      });

    await batch.commit();
  } catch (error) {
    throw Exception(
      'FirebaseFollowSource.follow failed '
      '($followerId → $targetId): $error',
    );
  }
}