dismissWidget method

Future<void> dismissWidget(
  1. String userId,
  2. String widgetId
)

Dismiss a widget for a user.

Implementation

Future<void> dismissWidget(String userId, String widgetId) async {
  final docRef = _firestore.collection('user_states').doc(userId);
  await _firestore.runTransaction((tx) async {
    final doc = await tx.get(docRef);
    if (doc.exists) {
      final dismissed = List<String>.from(
        doc.data()?['dismissed_widgets'] as List<dynamic>? ?? [],
      );
      if (!dismissed.contains(widgetId)) {
        dismissed.add(widgetId);
        tx.update(docRef, {'dismissed_widgets': dismissed});
      }
    } else {
      tx.set(docRef, {
        'dismissed_widgets': [widgetId],
        'actions': [],
      });
    }
  });
}