injectImages<D extends Data> function

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

Implementation

D injectImages<D extends Data>(D data, {bool preloadFull = false}) {
  Future<ImageData?> getImgDataFromHash(String? hash) {
    if (hash == null) return Future.value(null);

    return API().getImageByHash(hash, owner: data).catchError((e, st) {
      debugPrint('getImageByHash failed ($hash): $e');
      return null;
    });
  }

  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;
}