add structure
This commit is contained in:
74
lib/model/notification_model.dart
Normal file
74
lib/model/notification_model.dart
Normal file
@@ -0,0 +1,74 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user