hasUnreadChatsProvider top-level property
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;
});