isFetchDocuments static method

  1. @visibleForTesting
Future<bool> isFetchDocuments(
  1. DocumentReference cacheDocRef,
  2. String firestoreCacheField,
  3. String localCacheKey
)

Implementation

@visibleForTesting
static Future<bool> isFetchDocuments(
  DocumentReference cacheDocRef,
  String firestoreCacheField,
  String localCacheKey,
) async {
  var isFetch = true;
  var prefs = await SharedPreferences.getInstance();
  final dateStr = prefs.getString(localCacheKey);

  if (dateStr != null) {
    final cacheDate = DateTime.parse(dateStr);
    final doc = await cacheDocRef.get();
    final data = doc.data();

    if (!doc.exists) {
      throw CacheDocDoesNotExist();
    } else if (data == null || !data.containsKey(firestoreCacheField)) {
      throw CacheDocFieldDoesNotExist();
    }

    final DateTime latestDate = data[firestoreCacheField].toDate();
    if (latestDate.isBefore(cacheDate)) {
      isFetch = false;
    }
  }

  return isFetch;
}