injectImages<D extends WithImgHashes> function

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

Implementation

D injectImages<D extends WithImgHashes>(D data, {bool preloadFull = true}) {
  if (data is InspectionLocation) {
    Future<ImageData?> getImgDataFromHash(String? hash) {
      if (!hash!.endsWith(".jpg") &&
          !hash.endsWith(".jpeg") &&
          !hash.endsWith(".JPG") &&
          !hash.endsWith(".png")) debugPrint('hash $hash is not an image');
      return API()
          .getImageByHash(data.imagelink!, hash!, compressed: true)
          .then((value) => value
            ?..fullImageGetter = () => API()
                .getImageByHash(data.imagelink!, hash, compressed: false)
                .then((value) => value?.thumbnail));
    }

    if (data.mainhash != null &&
        data.mainhash != Options().no_image_placeholder_name) {
      if (data.mainhash!.endsWith("jpg") ||
          data.mainhash!.endsWith("JPG") ||
          data.mainhash!.endsWith("jpeg") ||
          data.mainhash!.endsWith("png"))
        data.mainImage = getImgDataFromHash(data.mainhash);
      var mainImage = getImgDataFromHash(data.mainhash);
      data.imageFutures = data.imagehashes
          ?.where((hash) =>
              hash.endsWith("jpg") ||
              hash.endsWith("JPG") ||
              hash.endsWith("jpeg") ||
              hash.endsWith("png"))
          .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
            ?.where((hash) =>
                hash.endsWith("jpg") ||
                hash.endsWith("JPG") ||
                hash.endsWith("jpeg") ||
                hash.endsWith("png"))
            .map((hash) => getImgDataFromHash(hash))
            .toList();
        data.previewImage = data.imageFutures!.first;
      }
    }
  }
  return data;
}