Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PhotoView.android.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export default class PhotoView extends Component {
onPhotoViewerScale: this.props.onScale,
...this.props,
shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd),
src: source.uri,
src: source,
loadingIndicatorSrc: loadingIndicatorSource ? loadingIndicatorSource.uri : null,
};

Expand Down
14 changes: 7 additions & 7 deletions android/src/main/java/com/reactnative/photoview/ImageEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ public ImageEvent(int viewId, @ImageEventType int eventType) {
public static String eventNameForType(@ImageEventType int eventType) {
switch(eventType) {
case ON_ERROR:
return "topError";
return "photoViewError";
case ON_LOAD:
return "topLoad";
return "photoViewLoad";
case ON_LOAD_END:
return "topLoadEnd";
return "photoViewLoadEnd";
case ON_LOAD_START:
return "topLoadStart";
return "photoViewLoadStart";
case ON_TAP:
return "topTap";
return "photoViewTap";
case ON_VIEW_TAP:
return "topViewTap";
return "photoViewViewTap";
case ON_SCALE:
return "topScale";
return "photoViewScale";
default:
throw new IllegalStateException("Invalid image event: " + Integer.toString(eventType));
}
Expand Down
23 changes: 19 additions & 4 deletions android/src/main/java/com/reactnative/photoview/PhotoView.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@
import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.imagepipeline.image.ImageInfo;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.common.SystemClock;
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.EventDispatcher;
import me.relex.photodraweeview.OnPhotoTapListener;
Expand All @@ -34,6 +38,7 @@
*/
public class PhotoView extends PhotoDraweeView {
private Uri mUri;
private ReadableMap mHeaders;
private boolean mIsDirty;
private boolean mIsLocalImage;
private Drawable mLoadingImageDrawable;
Expand All @@ -45,21 +50,25 @@ public PhotoView(Context context) {
super(context);
}

public void setSource(@Nullable String source,
public void setSource(@Nullable ReadableMap source,
@NonNull ResourceDrawableIdHelper resourceDrawableIdHelper) {
mUri = null;
if (source != null) {
String uri = source.getString("uri");
try {
mUri = Uri.parse(source);
mUri = Uri.parse(uri);
// Verify scheme is set, so that relative uri (used by static resources) are not handled.
if (mUri.getScheme() == null) {
mUri = null;
}
if (source.hasKey("headers")) {
mHeaders = source.getMap("headers");
}
} catch (Exception e) {
// ignore malformed uri, then attempt to extract resource ID.
}
if (mUri == null) {
mUri = resourceDrawableIdHelper.getResourceDrawableUri(getContext(), source);
mUri = resourceDrawableIdHelper.getResourceDrawableUri(getContext(), uri);
mIsLocalImage = true;
} else {
mIsLocalImage = false;
Expand Down Expand Up @@ -139,8 +148,14 @@ public void maybeUpdateView(@NonNull PipelineDraweeControllerBuilder builder) {
? mFadeDurationMs
: mIsLocalImage ? 0 : REMOTE_IMAGE_FADE_DURATION_MS);

ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(mUri)
.setAutoRotateEnabled(true);

ImageRequest imageRequest = ReactNetworkImageRequest
.fromBuilderWithHeaders(imageRequestBuilder, mHeaders);

mDraweeControllerBuilder = builder;
mDraweeControllerBuilder.setUri(mUri);
mDraweeControllerBuilder.setImageRequest(imageRequest);
mDraweeControllerBuilder.setAutoPlayAnimations(true);
mDraweeControllerBuilder.setOldController(getController());
mDraweeControllerBuilder.setControllerListener(new BaseControllerListener<ImageInfo>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
Expand Down Expand Up @@ -38,7 +39,7 @@ protected PhotoView createViewInstance(ThemedReactContext reactContext) {
}

@ReactProp(name = "src")
public void setSource(PhotoView view, @Nullable String source) {
public void setSource(PhotoView view, @Nullable ReadableMap source) {
view.setSource(source, mResourceDrawableIdHelper);
}

Expand Down