Extract ImageRequest creation into a helper class

Summary: This diff add an ImageRequestHelper class to reuse code that creates ImageRequest in both RCTImageView and (upcoming) RCTTextInlineImage

Reviewed By: ahmedre

Differential Revision: D2792548
This commit is contained in:
Denis Koroskin
2016-01-04 12:55:21 -08:00
committed by Ahmed El-Helw
parent 368e0361dd
commit 0f2a5cffa7
2 changed files with 50 additions and 24 deletions

View File

@@ -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://");
}
}

View File

@@ -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")