static Component onCreateLayout()

in vito/litho/src/main/java/com/facebook/fresco/vito/litho/FrescoVitoTapToRetryImageSpec.java [70:127]


  static Component onCreateLayout(
      final ComponentContext c,
      @Prop final ImageSource imageSource,
      @Prop(optional = true) final @Nullable ImageSource fallbackImageSource,
      @Prop(optional = true) final @Nullable Object callerContext,
      @Prop(optional = true, resType = ResType.FLOAT) final float imageAspectRatio,
      @Prop(optional = true) final @Nullable EventHandler<ClickEvent> imageClickHandler,
      @Prop(optional = true) final @Nullable EventHandler<LongClickEvent> imageLongClickHandler,
      @Prop(optional = true) final @Nullable EventHandler<TouchEvent> imageTouchHandler,
      @Prop(optional = true) final @Nullable ImageListener imageListener,
      @Prop(optional = true) final @Nullable ImageOptions imageOptions,
      @Prop(optional = true) final int maxTapCount,
      @Prop(optional = true) final OnFadeListener onFadeListener,
      @Prop(optional = true) final @Nullable FrescoVitoImage2Spec.Prefetch prefetch,
      @Prop(optional = true) final @Nullable RequestListener prefetchRequestListener,
      @Prop(resType = ResType.DRAWABLE, optional = true) final @Nullable Drawable retryImage,
      @Prop(optional = true) final @Nullable ScalingUtils.ScaleType retryImageScaleType,
      @State final boolean isTapToRetry,
      @State final boolean useFallbackImageSource,
      @State final int tapCount) {
    if (isTapToRetry) {
      Drawable scaledRetryDrawable =
          (retryImageScaleType == null || retryImage == null)
              ? retryImage
              : new ScaleTypeDrawable(retryImage, retryImageScaleType);
      return Image.create(c)
          .drawable(scaledRetryDrawable)
          .scaleType(ImageView.ScaleType.FIT_XY)
          .clickHandler(FrescoVitoTapToRetryImage.onRetryClickEvent(c))
          .aspectRatio(imageAspectRatio)
          .build();
    }
    final ImageListener internalListener =
        new BaseImageListener() {
          @Override
          public void onFailure(long id, @Nullable Drawable error, @Nullable Throwable throwable) {
            if (tapCount < maxTapCount) {
              FrescoVitoTapToRetryImage.onImageFailure(c);
            }
          }
        };

    boolean useFallback = fallbackImageSource != null && useFallbackImageSource;

    return FrescoVitoImage2.create(c)
        .callerContext(callerContext)
        .imageAspectRatio(imageAspectRatio)
        .imageListener(ForwardingImageListener.create(internalListener, imageListener))
        .imageOptions(imageOptions)
        .imageSource(useFallback ? fallbackImageSource : imageSource)
        .onFadeListener(onFadeListener)
        .prefetch(prefetch)
        .clickHandler(imageClickHandler)
        .longClickHandler(imageLongClickHandler)
        .touchHandler(imageTouchHandler)
        .prefetchRequestListener(prefetchRequestListener)
        .build();
  }