import 'dart:async'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fcs/vo/notification.dart'; import 'base_model.dart'; import 'constants.dart'; import 'firebase_helper.dart'; class NotificationModel extends BaseModel { int filer=0; List notifications = []; var filterValues = {1: "po", 2: "do", 3: "buyer"}; List get notis { return notifications .where((n) => filer == 0 || n.itemType == filterValues[filer]) .toList(); } int unseen = 0; void initUser(user) { super.initUser(user); _loadNotifications(); } @override logout() async { notifications = []; } Future _loadNotifications() async { Stream snapshots = Firestore.instance .collection( "/$biz_collection/${setting.okEnergyId}/$user_collection/${user.docID}/$notification_collection") .orderBy("time", descending: true) .limit(50) .snapshots(); snapshots.listen((snaps) async { notifications.clear(); unseen = 0; // snaps.documentChanges.forEach((c) { // if (c.type == DocumentChangeType.added) { // FlutterRingtonePlayer.play( // android: AndroidSounds.notification, // ios: IosSounds.glass, // ); // } // }); snaps.documents.forEach((d) { var n = Notification.fromMap(d.data, d.documentID); if (!n.seen) unseen++; notifications.add(n); }); notifyListeners(); }); } void filter(int filter) { this.filer = filter; } Future seen() async { await request("/notification/seen", "POST", token: await getToken()); } Future seenID(String id) async { await request("/notification/seen/${user.docID}/$id", "POST", token: await getToken()); } }