loadMedia function

Future<CachedMediaInfo?> loadMedia(
  1. String mediaUrl, {
  2. required GetStorage getStorage,
})

Return CachedMediaInfo? after either finding in cache or downloading then set in cache

Implementation

Future<CachedMediaInfo?> loadMedia(String mediaUrl, {required GetStorage getStorage}) async {
  CachedMediaInfo? cachedMediaInfo = await findFirstCachedMediaInfoOrNull(getStorage, mediaUrl);
  if (cachedMediaInfo == null) {
    await downloadAndSetInCache(mediaUrl, getStorage: getStorage);
  } else {
    if (await doesFileExist(cachedMediaInfo.cachedMediaUrl)) {
      return cachedMediaInfo;
    } else {
      removeCachedMediaInfo(getStorage, cachedMediaInfo.id);
      await downloadAndSetInCache(mediaUrl, getStorage: getStorage);
    }
  }
  cachedMediaInfo = await findFirstCachedMediaInfoOrNull(getStorage, mediaUrl);
  return cachedMediaInfo;
}