loadBookingCache function

Future<String?> loadBookingCache(
  1. String listen,
  2. String providerId
)

Implementation

Future<String?> loadBookingCache(String listen, String providerId) async {
  try{
    User? user = FirebaseAuth.instance.currentUser;

    work(querySnapshot){
      // dprint("loadBookingCache");
      ordersDataCache = [];
      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
                ordersDataCache.add(t);
              } else {
                if (user != null) { // customer app and provider app
                  if (listen == "customerId" && t.customerId == user.uid)
                    ordersDataCache.add(t);
                  if (listen == "providerId" && t.providerId == providerId)
                    ordersDataCache.add(t);
                }
              }
            }
          }
        }
        ordersDataCache.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);
      redrawMainWindow();
    });
  }catch(ex){
    return "loadBookingCache " + ex.toString();
  }

  return null;
}