loadBookingCache function
Implementation
Future<String?> loadBookingCache(String listen, String providerId) async {
try{
prepareCache(){
ordersDataCache = [];
ordersDataCache.addAll(_ordersDataCache1);
ordersDataCache.addAll(_ordersDataCache2);
ordersDataCache.sort((a, b) => b.time.compareTo(a.time));
}
User? user = FirebaseAuth.instance.currentUser;
work(querySnapshot){
_ordersDataCache1 = [];
if (querySnapshot.exists){
if (querySnapshot.data() != null) {
var _meData = querySnapshot.data()!;
for (var item in _meData.entries){
var t = OrderDataCache.fromJson(item.key, item.value);
if (!t.delete && t.status != "temp") {
if (listen.isEmpty) { // admin
_ordersDataCache1.add(t);
} else {
if (user != null) { // customer app and provider app
if (listen == "customerId" && t.customerId == user.uid)
_ordersDataCache1.add(t);
if (listen == "providerId" && t.providerId == providerId)
_ordersDataCache1.add(t);
}
}
}
}
}
_ordersDataCache1.sort((a, b) => b.time.compareTo(a.time));
}
}
var querySnapshot = await FirebaseFirestore.instance.collection("cache").doc("orders").get();
work(querySnapshot);
FirebaseFirestore.instance.collection("cache")
.doc("orders").snapshots().listen((querySnapshot) {
work(querySnapshot);
prepareCache();
redrawMainWindow();
}).onError((error, stackTrace) {
print("loadBookingCache_2 $error");
});
//
// #2
//
work2(List<OrderDataCache> t1){
_ordersDataCache2 = [];
for (var t in t1) {
if (!t.delete && t.status != "temp") {
if (listen.isEmpty) { // admin
_ordersDataCache2.add(t);
} else {
if (user != null) { // customer app and provider app
if (listen == "customerId" && t.customerId == user.uid)
_ordersDataCache2.add(t);
if (listen == "providerId" && t.providerId == providerId)
_ordersDataCache2.add(t);
}
}
}
}
}
List<OrderDataCache> t1 = await dbGetDocument("cache", "orders2");
if (t1.isNotEmpty){
work2(t1);
dbListenChanges("cache", (List<OrderDataCache> _data){
work2(_data);
prepareCache();
redrawMainWindow();
}, document: "orders2");
prepareCache();
}
}catch(ex){
return "loadBookingCache " + ex.toString();
}
return null;
}