hasUnreadChatsProvider top-level property

dynamic hasUnreadChatsProvider
final

Implementation

final hasUnreadChatsProvider = FutureProvider.autoDispose((ref) async {
  if (!ref.watch(isActiveProvider(LabsFeature.chatUnread))) {
    // feature not active

    return UrgencyBadge.none;
  }
  final chats = ref.watch(chatIdsProvider);
  if (chats.isEmpty) {
    return UrgencyBadge.none;
  }
  UrgencyBadge currentBadge = UrgencyBadge.none;

  for (final chat in chats) {
    // this is highly inefficient
    final unreadCounter = await ref.watch(unreadCountersProvider(chat).future);
    if (unreadCounter.$1 > 0) {
      // mentions, we just blurb
      return UrgencyBadge.important;
    }
    if (unreadCounter.$2 > 0) {
      //
      currentBadge = UrgencyBadge.unread;
    }
  }
  return currentBadge;
});