injectImages<D extends WithImgHashes> function

D injectImages<D extends WithImgHashes>(
  1. D data, {
  2. bool preloadFull = false,
})

Implementation

D injectImages<D extends WithImgHashes>(D data, {bool preloadFull = false}) {
  Future<ImageData?> getImgDataFromHash(String? hash) {
    if (preloadFull) API().getImageByHash(hash!, compressed: false);
    return API().getImageByHash(hash!, compressed: true).then((value) => value
      ?..fullImageGetter = () => API()
          .getImageByHash(hash, compressed: false)
          .then((value) => value?.thumbnail));
  }

  if (data.mainhash != null &&
      data.mainhash != Options().no_image_placeholder_name) {
    var mainImage = getImgDataFromHash(data.mainhash);
    data.imageFutures =
        data.imagehashes?.map((hash) => getImgDataFromHash(hash)).toList();
    data.mainImage = mainImage;
    data.previewImage = mainImage;
  } else {
    //no main image set
    if (data.imagehashes == null ||
        data.imagehashes!.length == 0) //the second check *could* be omitted
      return data;
    data.previewImage = Future.value(null);
    if (data.imagehashes != null && data.imagehashes!.length > 0) {
      data.imageFutures =
          data.imagehashes?.map((hash) => getImgDataFromHash(hash)).toList();
      data.previewImage = data.imageFutures!.first;
    }
  }

  return data;
}