Skip to content

Commit 03468f3

Browse files
committed
Fork v1.5.3
1 parent e28f541 commit 03468f3

File tree

12 files changed

+4453
-51
lines changed

12 files changed

+4453
-51
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## react-native-photo-view fork
2+
3+
#### v1.5.3
4+
5+
* Apply "Fixing initialZoomScaleWithMinScale when image is larger than the screen #86" by @douglasjunior
6+
* Updated build.gradle to get settings from root project.
7+
* Updated gradle plugin to v3.1.0
8+
* Updated facebook fresco to v1.3.0
9+
* Updated photodraweeview to v1.1.3
10+
* Minor fixes, makes some Java methods private.

PhotoView.android.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
3-
import { requireNativeComponent, View } from 'react-native';
4-
import ViewPropTypes from 'react-native/Libraries/Components/View/ViewPropTypes';
3+
import { requireNativeComponent, View, ViewPropTypes } from 'react-native';
54

65
const resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
76

@@ -13,7 +12,7 @@ export default class PhotoView extends Component {
1312
}),
1413
// Opaque type returned by require('./image.jpg')
1514
PropTypes.number
16-
]),
15+
]).isRequired,
1716
loadingIndicatorSource: PropTypes.oneOfType([
1817
PropTypes.shape({
1918
uri: PropTypes.string
@@ -39,7 +38,7 @@ export default class PhotoView extends Component {
3938

4039
render() {
4140
const source = resolveAssetSource(this.props.source);
42-
var loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource);
41+
const loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource);
4342

4443
if (source && source.uri === '') {
4544
console.warn('source.uri should not be an empty string');
@@ -50,9 +49,9 @@ export default class PhotoView extends Component {
5049
}
5150

5251
if (source && source.uri) {
53-
var {onLoadStart, onLoad, onLoadEnd, onTap, onViewTap, onScale, onError, ...props} = this.props;
52+
const {onLoadStart, onLoad, onLoadEnd, onTap, onViewTap, onScale, onError, ...props} = this.props;
5453

55-
var nativeProps = {
54+
const nativeProps = {
5655
onPhotoViewerError: onError,
5756
onPhotoViewerLoadStart: onLoadStart,
5857
onPhotoViewerLoad: onLoad,
@@ -72,7 +71,7 @@ export default class PhotoView extends Component {
7271
}
7372
}
7473

75-
var cfg = {
74+
const cfg = {
7675
nativeOnly: {
7776
onPhotoViewerError: true,
7877
onPhotoViewerLoadStart: true,

PhotoView.ios.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
3-
import { requireNativeComponent, View } from 'react-native';
4-
import ViewPropTypes from 'react-native/Libraries/Components/View/ViewPropTypes';
3+
import { requireNativeComponent, View, ViewPropTypes } from 'react-native';
54

65
const resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
76

@@ -13,7 +12,7 @@ export default class PhotoView extends Component {
1312
}),
1413
// Opaque type returned by require('./image.jpg')
1514
PropTypes.number
16-
]),
15+
]).isRequired,
1716
loadingIndicatorSource: PropTypes.oneOfType([
1817
PropTypes.shape({
1918
uri: PropTypes.string
@@ -39,7 +38,7 @@ export default class PhotoView extends Component {
3938

4039
render() {
4140
const source = resolveAssetSource(this.props.source);
42-
var loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource);
41+
const loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource);
4342

4443
if (source && source.uri === '') {
4544
console.warn('source.uri should not be an empty string');
@@ -50,9 +49,9 @@ export default class PhotoView extends Component {
5049
}
5150

5251
if (source && source.uri) {
53-
var {onLoadStart, onLoad, onLoadEnd, onProgress, onTap, onViewTap, onScale, onError, ...props} = this.props;
52+
const {onLoadStart, onLoad, onLoadEnd, onProgress, onTap, onViewTap, onScale, onError, ...props} = this.props;
5453

55-
var nativeProps = {
54+
const nativeProps = {
5655
onPhotoViewerError: onError,
5756
onPhotoViewerLoadStart: onLoadStart,
5857
onPhotoViewerLoad: onLoad,
@@ -72,7 +71,7 @@ export default class PhotoView extends Component {
7271
}
7372
}
7473

75-
var cfg = {
74+
const cfg = {
7675
nativeOnly: {
7776
onPhotoViewerError: true,
7877
onPhotoViewerLoadStart: true,

android/build.gradle

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

3+
def DEFAULT_COMPILE_SDK_VERSION = 26
4+
def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3"
5+
def DEFAULT_TARGET_SDK_VERSION = 26
6+
37
buildscript {
48
repositories {
59
jcenter()
10+
google()
611
}
712
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.1.0'
13+
classpath 'com.android.tools.build:gradle:3.1.0'
914

1015
// NOTE: Do not place your application dependencies here; they belong
1116
// in the individual module build.gradle files
@@ -15,12 +20,12 @@ buildscript {
1520
apply plugin: 'com.android.library'
1621

1722
android {
18-
compileSdkVersion 23
19-
buildToolsVersion "25.0.0"
23+
compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
24+
buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION
2025

2126
defaultConfig {
22-
minSdkVersion 16
23-
targetSdkVersion 22
27+
minSdkVersion 21
28+
targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION
2429
versionCode 1
2530
}
2631
lintOptions {
@@ -29,12 +34,15 @@ android {
2934
}
3035

3136
repositories {
32-
mavenCentral()
37+
mavenLocal()
3338
jcenter()
39+
maven {
40+
url "$rootDir/../node_modules/react-native/android"
41+
}
3442
}
3543

3644
dependencies {
37-
compile 'com.facebook.react:react-native:+'
38-
compile 'com.facebook.fresco:fresco:0.11.0'
39-
compile 'me.relex:photodraweeview:1.0.0'
45+
implementation 'com.facebook.react:react-native:+'
46+
implementation 'com.facebook.fresco:fresco:1.3.0'
47+
implementation 'me.relex:photodraweeview:1.1.3'
4048
}

android/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

android/src/main/java/com/reactnative/photoview/ImageEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class ImageEvent extends Event<ImageEvent> {
3333
private final int mEventType;
3434
private WritableMap mMap;
3535

36-
public ImageEvent(int viewId, @ImageEventType int eventType) {
36+
ImageEvent(int viewId, @ImageEventType int eventType) {
3737
super(viewId);
3838
mEventType = eventType;
3939
mMap = null;

android/src/main/java/com/reactnative/photoview/PhotoView.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@
55
import android.graphics.drawable.Drawable;
66
import android.net.Uri;
77
import android.support.annotation.NonNull;
8-
import android.util.Log;
98
import android.view.View;
9+
1010
import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
1111
import com.facebook.drawee.controller.BaseControllerListener;
1212
import com.facebook.drawee.controller.ControllerListener;
1313
import com.facebook.drawee.drawable.AutoRotateDrawable;
1414
import com.facebook.drawee.drawable.ScalingUtils;
1515
import com.facebook.drawee.generic.GenericDraweeHierarchy;
1616
import com.facebook.imagepipeline.common.ResizeOptions;
17+
import com.facebook.imagepipeline.common.RotationOptions;
1718
import com.facebook.imagepipeline.image.ImageInfo;
1819
import com.facebook.imagepipeline.request.ImageRequest;
1920
import com.facebook.imagepipeline.request.ImageRequestBuilder;
2021
import com.facebook.react.bridge.Arguments;
2122
import com.facebook.react.bridge.ReactContext;
2223
import com.facebook.react.bridge.ReadableMap;
2324
import com.facebook.react.bridge.WritableMap;
24-
import com.facebook.react.common.SystemClock;
2525
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
2626
import com.facebook.react.uimanager.UIManagerModule;
2727
import com.facebook.react.uimanager.events.EventDispatcher;
@@ -48,9 +48,8 @@ public class PhotoView extends PhotoDraweeView {
4848
private boolean mIsDirty;
4949
private boolean mIsLocalImage;
5050
private Drawable mLoadingImageDrawable;
51-
private PipelineDraweeControllerBuilder mDraweeControllerBuilder;
5251
private int mFadeDurationMs = -1;
53-
private ControllerListener mControllerListener;
52+
private ControllerListener<ImageInfo> mControllerListener;
5453

5554
public PhotoView(Context context) {
5655
super(context);
@@ -87,7 +86,7 @@ public void setLoadingIndicatorSource(@Nullable String name,
8786
ResourceDrawableIdHelper resourceDrawableIdHelper) {
8887
Drawable drawable = resourceDrawableIdHelper.getResourceDrawable(getContext(), name);
8988
mLoadingImageDrawable =
90-
drawable != null ? (Drawable) new AutoRotateDrawable(drawable, 1000) : null;
89+
drawable != null ? new AutoRotateDrawable(drawable, 1000) : null;
9190
mIsDirty = true;
9291
}
9392

@@ -155,16 +154,16 @@ public void maybeUpdateView(@NonNull PipelineDraweeControllerBuilder builder) {
155154
: mIsLocalImage ? 0 : REMOTE_IMAGE_FADE_DURATION_MS);
156155

157156
ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(mUri)
158-
.setAutoRotateEnabled(true).setResizeOptions(new ResizeOptions(getMaxTextureSize(), getMaxTextureSize()));
157+
.setRotationOptions(RotationOptions.autoRotate())
158+
.setResizeOptions(new ResizeOptions(getMaxTextureSize(), getMaxTextureSize()));
159159

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

163-
mDraweeControllerBuilder = builder;
164-
mDraweeControllerBuilder.setImageRequest(imageRequest);
165-
mDraweeControllerBuilder.setAutoPlayAnimations(true);
166-
mDraweeControllerBuilder.setOldController(getController());
167-
mDraweeControllerBuilder.setControllerListener(new BaseControllerListener<ImageInfo>() {
163+
builder.setImageRequest(imageRequest);
164+
builder.setAutoPlayAnimations(true);
165+
builder.setOldController(getController());
166+
builder.setControllerListener(new BaseControllerListener<ImageInfo>() {
168167
@Override
169168
public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {
170169
super.onFinalImageSet(id, imageInfo, animatable);
@@ -176,10 +175,10 @@ public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatabl
176175
});
177176

178177
if (mControllerListener != null) {
179-
mDraweeControllerBuilder.setControllerListener(mControllerListener);
178+
builder.setControllerListener(mControllerListener);
180179
}
181180

182-
setController(mDraweeControllerBuilder.build());
181+
setController(builder.build());
183182
setViewCallbacks();
184183

185184
mIsDirty = false;

android/src/main/java/com/reactnative/photoview/PhotoViewManager.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.reactnative.photoview;
22

3-
import android.widget.ImageView.ScaleType;
43
import com.facebook.drawee.backends.pipeline.Fresco;
5-
import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
64
import com.facebook.drawee.drawable.ScalingUtils;
75
import com.facebook.drawee.generic.GenericDraweeHierarchy;
86
import com.facebook.react.bridge.ReactApplicationContext;
@@ -74,7 +72,7 @@ public void setScale(PhotoView view, float scale) {
7472
}
7573

7674
@ReactProp(name = "androidZoomTransitionDuration")
77-
public void setScale(PhotoView view, int durationMs) {
75+
public void setZoomTransitionDuration(PhotoView view, int durationMs) {
7876
view.setZoomTransitionDuration(durationMs);
7977
}
8078

@@ -111,9 +109,9 @@ public void setScaleType(PhotoView view, String scaleType) {
111109

112110
@Override
113111
public @Nullable
114-
Map getExportedCustomDirectEventTypeConstants() {
112+
Map<String, Object> getExportedCustomDirectEventTypeConstants() {
115113
return MapBuilder.of(
116-
ImageEvent.eventNameForType(ImageEvent.ON_ERROR), MapBuilder.of("registrationName", "onPhotoViewerError"),
114+
ImageEvent.eventNameForType(ImageEvent.ON_ERROR), (Object) MapBuilder.of("registrationName", "onPhotoViewerError"),
117115
ImageEvent.eventNameForType(ImageEvent.ON_LOAD_START), MapBuilder.of("registrationName", "onPhotoViewerLoadStart"),
118116
ImageEvent.eventNameForType(ImageEvent.ON_LOAD), MapBuilder.of("registrationName", "onPhotoViewerLoad"),
119117
ImageEvent.eventNameForType(ImageEvent.ON_LOAD_END), MapBuilder.of("registrationName", "onPhotoViewerLoadEnd"),

android/src/main/java/com/reactnative/photoview/ResourceDrawableIdHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020

2121
private Map<String, Integer> mResourceDrawableIdMap;
2222

23-
public ResourceDrawableIdHelper() {
24-
mResourceDrawableIdMap = new HashMap<String, Integer>();
23+
ResourceDrawableIdHelper() {
24+
mResourceDrawableIdMap = new HashMap<>();
2525
}
2626

27-
public int getResourceDrawableId(Context context, @Nullable String name) {
27+
private int getResourceDrawableId(Context context, @Nullable String name) {
2828
if (name == null || name.isEmpty()) {
2929
return 0;
3030
}

ios/RNPhotoView.m

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ - (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch {
140140
#pragma mark - Setup
141141

142142
- (CGFloat)initialZoomScaleWithMinScale {
143+
CGFloat minZoom = self.minimumZoomScale;
143144
CGFloat zoomScale = self.minimumZoomScale;
144145
if (_photoImageView) {
145146
// Zoom image to fill if the aspect ratios are fairly similar
@@ -153,7 +154,7 @@ - (CGFloat)initialZoomScaleWithMinScale {
153154
if (ABS(boundsAR - imageAR) < 0.17) {
154155
zoomScale = MAX(xScale, yScale);
155156
// Ensure we don't zoom in or out too far, just in case
156-
zoomScale = MIN(MAX(self.minimumZoomScale, zoomScale), self.maximumZoomScale);
157+
zoomScale = MIN(MAX(minZoom, zoomScale), minZoom);
157158
}
158159
}
159160
return zoomScale;
@@ -295,7 +296,7 @@ - (void)setSource:(NSDictionary *)source {
295296
}
296297
_source = source;
297298
NSURL *imageURL = [NSURL URLWithString:uri];
298-
299+
299300
if (![[uri substringToIndex:4] isEqualToString:@"http"]) {
300301
@try {
301302
UIImage *image = RCTImageFromLocalAssetURL(imageURL);
@@ -316,10 +317,10 @@ - (void)setSource:(NSDictionary *)source {
316317
}
317318

318319
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imageURL];
319-
320+
320321
if (source[@"headers"]) {
321322
NSMutableURLRequest *mutableRequest = [request mutableCopy];
322-
323+
323324
NSDictionary *headers = source[@"headers"];
324325
NSEnumerator *enumerator = [headers keyEnumerator];
325326
id key;

0 commit comments

Comments
 (0)