addFeedToHashtags method

Future<void> addFeedToHashtags({
  1. required String feedId,
  2. required List<String> hashtags,
})

Implementation

Future<void> addFeedToHashtags({
  required final String feedId,
  required final List<String> hashtags,
}) async {
  for (final hashtag in hashtags) {
    final splittedHashtag = hashtag.split(' ');

    assert(splittedHashtag.length == 1, 'Invalid hashtag - $hashtag');
  }

  final currentTime = DateTime.now().millisecondsSinceEpoch;

  try {
    final futures = <Future>[];

    for (var hashtag in hashtags) {
      hashtag = hashtag.replaceAll('#', '');

      final hashtagRef = PeamanReferenceHelper.hashtagDoc(
        hashtag: hashtag,
      );

      final future = hashtagRef.set({
        'id': hashtag,
        'title': hashtag,
        'feeds': FieldValue.increment(1),
        'visibility': true,
        'search_keys': PeamanCommonHelper.getSearchKeys(text: hashtag),
        'updated_at': currentTime,
      }, SetOptions(merge: true)).then((value) {
        final hashtagFeedRef = PeamanReferenceHelper.hashtagFeedsCol(
          hashtag: hashtag,
        ).doc(feedId);

        final hashtagFeed = PeamanHashtagFeed(
          id: feedId,
          createdAt: currentTime,
          updatedAt: currentTime,
        );

        return hashtagFeedRef.set(hashtagFeed.toJson());
      });

      futures.add(future);
    }

    await Future.wait(futures);
    print('Success: Adding feed - $feedId to hashtags - $hashtags');
  } catch (e) {
    print(e);
    print('Error!!!: Adding feed - $feedId to hashtags - $hashtags');
  }
}