initService function

Future<String?> initService(
  1. String listen,
  2. String providerId,
  3. dynamic callback()
)

Implementation

Future<String?> initService(String listen, String providerId, Function() callback) async{
  if (_loadProcess)
    return null;
  _loadProcess = true;
  product = [];
  dprint("initService get from 'service' where $listen arrayContains $providerId");
  await _getLocal();
  bool _localLoad = false;
  if (product.isEmpty) {
    late QuerySnapshot<Map<String, dynamic>> querySnapshot;
    if (listen == "all")
       querySnapshot = await FirebaseFirestore.instance.collection("service").get();
    else
       querySnapshot = await FirebaseFirestore.instance.collection("service")
         .where(listen, arrayContains: providerId).get();

    for (var result in querySnapshot.docs) {
      var _data = result.data();
      var t = ProductData.fromJson(result.id, _data);
      if (!t.delete)
        product.add(t);
    }

    addStat("product", querySnapshot.docs.length);
  }else
    _localLoad = true;

  product.sort((a, b) => b.timeModify.compareTo(a.timeModify));
  if (product.isEmpty)
    _last = DateTime.now();
  else
    _last = product[0].timeModify; //timeUtc;

  if (!_localLoad)
    _saveLocal(_last);

  dprint("services init count=${product.length}");
  callback();
  _loadProcess = false;
  return await _listen(listen, providerId, callback);
}