getAndSaveFeed method

Future<List<FeedEntryModel>> getAndSaveFeed()

Implementation

Future<List<FeedEntryModel>> getAndSaveFeed() async {
  if (!cache.hasInit) {
    cache.init();
  }
  try {
    List<FeedEntryModel> recentModels = await feedProvider.parseFeed();
    recentModels.sort((a, b) => a.dateTime.compareTo(b.dateTime));
    List<FeedEntryModel> cachedModels = await cache.retriveAll();
    if (cachedModels.isNotEmpty) {
      cachedModels.sort((a, b) => a.dateTime.compareTo(b.dateTime));
      if (cachedModels.first.dateTime.isAfter(recentModels.first.dateTime)) {
        await cache.putAll(recentModels);
        return recentModels;
      } else {
        return cachedModels;
      }
    } else {
      await cache.putAll(recentModels);
      return recentModels;
    }
  } catch (e) {
    List<FeedEntryModel> cachedModels = await cache.retriveAll();
    cachedModels.sort((a, b) => a.dateTime.compareTo(b.dateTime));
    return cachedModels;
  }
}