Files
fcs/lib/model/notification_model.dart
2020-05-29 07:45:27 +06:30

75 lines
1.8 KiB
Dart

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<Notification> notifications = [];
var filterValues = {1: "po", 2: "do", 3: "buyer"};
List<Notification> 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<void> _loadNotifications() async {
Stream<QuerySnapshot> 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<void> seen() async {
await request("/notification/seen", "POST", token: await getToken());
}
Future<void> seenID(String id) async {
await request("/notification/seen/${user.docID}/$id", "POST",
token: await getToken());
}
}