diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/ImageRequestHelper.java b/ReactAndroid/src/main/java/com/facebook/react/flat/ImageRequestHelper.java new file mode 100644 index 000000000..bcb683817 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/ImageRequestHelper.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +package com.facebook.react.flat; + +import javax.annotation.Nullable; + +import android.content.Context; +import android.content.res.Resources; +import android.net.Uri; + +import com.facebook.imagepipeline.request.ImageRequest; +import com.facebook.imagepipeline.request.ImageRequestBuilder; + +/* package */ class ImageRequestHelper { + + /* package */ static @Nullable ImageRequest createImageRequest( + Context context, + @Nullable String source) { + if (source == null) { + return null; + } + + final ImageRequestBuilder imageRequestBuilder; + if (isNetworkResource(source)) { + imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(Uri.parse(source)); + } else { + Resources resources = context.getResources(); + int resId = resources.getIdentifier( + source, + "drawable", + context.getPackageName()); + imageRequestBuilder = ImageRequestBuilder.newBuilderWithResourceId(resId); + } + + return imageRequestBuilder.build(); + } + + private static boolean isNetworkResource(String source) { + return source.startsWith("http://") || source.startsWith("https://"); + } +} diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/RCTImageView.java b/ReactAndroid/src/main/java/com/facebook/react/flat/RCTImageView.java index 445380310..1b735b615 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/RCTImageView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/RCTImageView.java @@ -11,13 +11,8 @@ package com.facebook.react.flat; import javax.annotation.Nullable; -import android.content.Context; -import android.content.res.Resources; -import android.net.Uri; - import com.facebook.csslayout.Spacing; import com.facebook.drawee.drawable.ScalingUtils.ScaleType; -import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.ReactProp; import com.facebook.react.uimanager.ViewProps; @@ -87,25 +82,8 @@ import com.facebook.react.views.image.ImageResizeMode; @ReactProp(name = "src") public void setSource(@Nullable String source) { - if (source == null) { - getMutableDrawImage().setImageRequest(null); - return; - } - - final ImageRequestBuilder imageRequestBuilder; - if (isNetworkResource(source)) { - imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(Uri.parse(source)); - } else { - Context context = getThemedContext(); - Resources resources = context.getResources(); - int resId = resources.getIdentifier( - source, - "drawable", - context.getPackageName()); - imageRequestBuilder = ImageRequestBuilder.newBuilderWithResourceId(resId); - } - - getMutableDrawImage().setImageRequest(imageRequestBuilder.build()); + getMutableDrawImage().setImageRequest( + ImageRequestHelper.createImageRequest(getThemedContext(), source)); } @ReactProp(name = "tintColor")