Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
R
react-native-fast-image
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
react-native-fast-image
Commits
5cc6201a
Unverified
Commit
5cc6201a
authored
Mar 18, 2018
by
Dylan Vann
Committed by
GitHub
Mar 18, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #168 from DylanVann/revert-82-glide-v4
Revert "Upgrade android to Glide v4 "
parents
31126bcd
71c5e63a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
90 additions
and
94 deletions
+90
-94
android/build.gradle
android/build.gradle
+3
-7
android/src/main/AndroidManifest.xml
android/src/main/AndroidManifest.xml
+16
-1
android/src/main/java/com/dylanvann/fastimage/FastImageRequestListener.java
...ava/com/dylanvann/fastimage/FastImageRequestListener.java
+0
-52
android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java
...in/java/com/dylanvann/fastimage/FastImageViewManager.java
+59
-19
android/src/main/java/com/dylanvann/fastimage/FastImageViewModule.java
...ain/java/com/dylanvann/fastimage/FastImageViewModule.java
+3
-8
android/src/main/java/com/dylanvann/fastimage/OkHttpProgressGlideModule.java
...va/com/dylanvann/fastimage/OkHttpProgressGlideModule.java
+9
-7
No files found.
android/build.gradle
View file @
5cc6201a
buildscript
{
repositories
{
jcenter
()
}
dependencies
{
classpath
'com.android.tools.build:gradle:2.2.3'
...
...
@@ -27,14 +26,11 @@ android {
repositories
{
mavenCentral
()
maven
{
url
"https://maven.google.com"
}
}
dependencies
{
compile
'com.facebook.react:react-native:+'
compile
group:
'com.github.bumptech.glide'
,
name:
'glide'
,
version:
'
4.3.1
'
compile
group:
'com.github.bumptech.glide'
,
name:
'okhttp3-integration'
,
version:
'
4.3.1
'
compile
'com.android.support:support-v4:
23.0.1
'
compile
group:
'com.github.bumptech.glide'
,
name:
'glide'
,
version:
'
3.8.0
'
compile
group:
'com.github.bumptech.glide'
,
name:
'okhttp3-integration'
,
version:
'
1.5.0
'
compile
'com.android.support:support-v4:
19.1.0
'
}
android/src/main/AndroidManifest.xml
View file @
5cc6201a
<manifest
package=
"com.dylanvann.fastimage"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"com.dylanvann.fastimage"
>
<application>
<meta-data
android:name=
"com.dylanvann.fastimage.OkHttpProgressGlideModule"
android:value=
"GlideModule"
/>
<meta-data
android:name=
"com.bumptech.glide.integration.okhttp.OkHttpGlideModule"
tools:node=
"remove"
android:value=
"GlideModule"
/>
</application>
</manifest>
android/src/main/java/com/dylanvann/fastimage/FastImageRequestListener.java
deleted
100644 → 0
View file @
31126bcd
package
com.dylanvann.fastimage
;
import
android.graphics.drawable.Drawable
;
import
com.bumptech.glide.load.DataSource
;
import
com.bumptech.glide.load.engine.GlideException
;
import
com.bumptech.glide.request.RequestListener
;
import
com.bumptech.glide.request.target.ImageViewTarget
;
import
com.bumptech.glide.request.target.Target
;
import
com.facebook.react.bridge.WritableNativeMap
;
import
com.facebook.react.uimanager.ThemedReactContext
;
import
com.facebook.react.uimanager.events.RCTEventEmitter
;
public
class
FastImageRequestListener
implements
RequestListener
<
Drawable
>
{
public
static
final
String
REACT_ON_ERROR_EVENT
=
"onFastImageError"
;
public
static
final
String
REACT_ON_LOAD_EVENT
=
"onFastImageLoad"
;
public
static
final
String
REACT_ON_LOAD_END_EVENT
=
"onFastImageLoadEnd"
;
private
static
String
key
=
null
;
public
FastImageRequestListener
(
String
key
)
{
this
.
key
=
key
;
}
@Override
public
boolean
onLoadFailed
(
@android
.
support
.
annotation
.
Nullable
GlideException
e
,
Object
model
,
Target
<
Drawable
>
target
,
boolean
isFirstResource
)
{
OkHttpProgressGlideModule
.
forget
(
key
);
if
(!(
target
instanceof
ImageViewTarget
))
{
return
false
;
}
ImageViewWithUrl
view
=
(
ImageViewWithUrl
)
((
ImageViewTarget
)
target
).
getView
();
ThemedReactContext
context
=
(
ThemedReactContext
)
view
.
getContext
();
RCTEventEmitter
eventEmitter
=
context
.
getJSModule
(
RCTEventEmitter
.
class
);
int
viewId
=
view
.
getId
();
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_ERROR_EVENT
,
new
WritableNativeMap
());
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_END_EVENT
,
new
WritableNativeMap
());
return
false
;
}
@Override
public
boolean
onResourceReady
(
Drawable
resource
,
Object
model
,
Target
<
Drawable
>
target
,
DataSource
dataSource
,
boolean
isFirstResource
)
{
if
(!(
target
instanceof
ImageViewTarget
))
{
return
false
;
}
ImageViewWithUrl
view
=
(
ImageViewWithUrl
)
((
ImageViewTarget
)
target
).
getView
();
ThemedReactContext
context
=
(
ThemedReactContext
)
view
.
getContext
();
RCTEventEmitter
eventEmitter
=
context
.
getJSModule
(
RCTEventEmitter
.
class
);
int
viewId
=
view
.
getId
();
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_EVENT
,
new
WritableNativeMap
());
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_END_EVENT
,
new
WritableNativeMap
());
return
false
;
}
}
android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java
View file @
5cc6201a
...
...
@@ -8,10 +8,12 @@ import android.widget.ImageView;
import
com.bumptech.glide.Glide
;
import
com.bumptech.glide.Priority
;
import
com.bumptech.glide.RequestManager
;
import
com.bumptech.glide.load.engine.DiskCacheStrategy
;
import
com.bumptech.glide.load.model.GlideUrl
;
import
com.bumptech.glide.request.RequestOptions
;
import
com.bumptech.glide.load.resource.drawable.GlideDrawable
;
import
com.bumptech.glide.request.RequestListener
;
import
com.bumptech.glide.request.target.ImageViewTarget
;
import
com.bumptech.glide.request.target.Target
;
import
com.facebook.react.bridge.ReadableMap
;
import
com.facebook.react.bridge.WritableMap
;
import
com.facebook.react.bridge.WritableNativeMap
;
...
...
@@ -29,10 +31,6 @@ import java.util.Map;
import
javax.annotation.Nullable
;
import
static
com
.
dylanvann
.
fastimage
.
FastImageRequestListener
.
REACT_ON_ERROR_EVENT
;
import
static
com
.
dylanvann
.
fastimage
.
FastImageRequestListener
.
REACT_ON_LOAD_END_EVENT
;
import
static
com
.
dylanvann
.
fastimage
.
FastImageRequestListener
.
REACT_ON_LOAD_EVENT
;
class
ImageViewWithUrl
extends
ImageView
{
public
GlideUrl
glideUrl
;
...
...
@@ -46,9 +44,11 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
private
static
final
String
REACT_CLASS
=
"FastImageView"
;
private
static
final
String
REACT_ON_LOAD_START_EVENT
=
"onFastImageLoadStart"
;
private
static
final
String
REACT_ON_PROGRESS_EVENT
=
"onFastImageProgress"
;
private
static
final
String
REACT_ON_ERROR_EVENT
=
"onFastImageError"
;
private
static
final
String
REACT_ON_LOAD_EVENT
=
"onFastImageLoad"
;
private
static
final
String
REACT_ON_LOAD_END_EVENT
=
"onFastImageLoadEnd"
;
private
static
final
Drawable
TRANSPARENT_DRAWABLE
=
new
ColorDrawable
(
Color
.
TRANSPARENT
);
private
static
final
Map
<
String
,
List
<
ImageViewWithUrl
>>
VIEWS_FOR_URLS
=
new
HashMap
<>();
private
static
RequestManager
requestManager
=
null
;
@Override
public
String
getName
()
{
...
...
@@ -57,10 +57,52 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
@Override
protected
ImageViewWithUrl
createViewInstance
(
ThemedReactContext
reactContext
)
{
requestManager
=
Glide
.
with
(
reactContext
);
return
new
ImageViewWithUrl
(
reactContext
);
}
private
static
RequestListener
<
GlideUrl
,
GlideDrawable
>
LISTENER
=
new
RequestListener
<
GlideUrl
,
GlideDrawable
>()
{
@Override
public
boolean
onException
(
Exception
e
,
GlideUrl
uri
,
Target
<
GlideDrawable
>
target
,
boolean
isFirstResource
)
{
OkHttpProgressGlideModule
.
forget
(
uri
.
toStringUrl
());
if
(!(
target
instanceof
ImageViewTarget
))
{
return
false
;
}
ImageViewWithUrl
view
=
(
ImageViewWithUrl
)
((
ImageViewTarget
)
target
).
getView
();
ThemedReactContext
context
=
(
ThemedReactContext
)
view
.
getContext
();
RCTEventEmitter
eventEmitter
=
context
.
getJSModule
(
RCTEventEmitter
.
class
);
int
viewId
=
view
.
getId
();
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_ERROR_EVENT
,
new
WritableNativeMap
());
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_END_EVENT
,
new
WritableNativeMap
());
return
false
;
}
@Override
public
boolean
onResourceReady
(
GlideDrawable
resource
,
GlideUrl
uri
,
Target
<
GlideDrawable
>
target
,
boolean
isFromMemoryCache
,
boolean
isFirstResource
)
{
if
(!(
target
instanceof
ImageViewTarget
))
{
return
false
;
}
ImageViewWithUrl
view
=
(
ImageViewWithUrl
)
((
ImageViewTarget
)
target
).
getView
();
ThemedReactContext
context
=
(
ThemedReactContext
)
view
.
getContext
();
RCTEventEmitter
eventEmitter
=
context
.
getJSModule
(
RCTEventEmitter
.
class
);
int
viewId
=
view
.
getId
();
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_EVENT
,
mapFromResource
(
resource
));
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_END_EVENT
,
mapFromResource
(
resource
));
return
false
;
}
};
private
static
WritableMap
mapFromResource
(
GlideDrawable
resource
)
{
WritableMap
resourceData
=
new
WritableNativeMap
();
resourceData
.
putInt
(
"width"
,
resource
.
getIntrinsicWidth
());
...
...
@@ -73,7 +115,7 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
public
void
setSrc
(
ImageViewWithUrl
view
,
@Nullable
ReadableMap
source
)
{
if
(
source
==
null
)
{
// Cancel existing requests.
requestManager
.
clear
(
view
);
Glide
.
clear
(
view
);
if
(
view
.
glideUrl
!=
null
)
{
OkHttpProgressGlideModule
.
forget
(
view
.
glideUrl
.
toStringUrl
());
}
...
...
@@ -90,7 +132,7 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
final
Priority
priority
=
FastImageViewConverter
.
priority
(
source
);
// Cancel existing request.
requestManager
.
clear
(
view
);
Glide
.
clear
(
view
);
String
key
=
glideUrl
.
toStringUrl
();
OkHttpProgressGlideModule
.
expect
(
key
,
this
);
...
...
@@ -107,16 +149,14 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
int
viewId
=
view
.
getId
();
eventEmitter
.
receiveEvent
(
viewId
,
REACT_ON_LOAD_START_EVENT
,
new
WritableNativeMap
());
RequestOptions
options
=
new
RequestOptions
()
.
priority
(
priority
)
.
dontTransform
()
.
placeholder
(
TRANSPARENT_DRAWABLE
);
requestManager
Glide
.
with
(
view
.
getContext
().
getApplicationContext
())
.
load
(
glideUrl
)
.
diskCacheStrategy
(
DiskCacheStrategy
.
ALL
)
.
apply
(
options
)
.
listener
(
new
FastImageRequestListener
(
key
))
.
dontTransform
()
.
priority
(
priority
)
.
placeholder
(
TRANSPARENT_DRAWABLE
)
.
listener
(
LISTENER
)
.
into
(
view
);
}
...
...
@@ -129,7 +169,7 @@ class FastImageViewManager extends SimpleViewManager<ImageViewWithUrl> implement
@Override
public
void
onDropViewInstance
(
ImageViewWithUrl
view
)
{
// This will cancel existing requests.
requestManager
.
clear
(
view
);
Glide
.
clear
(
view
);
final
String
key
=
view
.
glideUrl
.
toString
();
OkHttpProgressGlideModule
.
forget
(
key
);
List
<
ImageViewWithUrl
>
viewsForKey
=
VIEWS_FOR_URLS
.
get
(
key
);
...
...
android/src/main/java/com/dylanvann/fastimage/FastImageViewModule.java
View file @
5cc6201a
...
...
@@ -9,7 +9,6 @@ import com.bumptech.glide.Glide;
import
com.bumptech.glide.Priority
;
import
com.bumptech.glide.load.engine.DiskCacheStrategy
;
import
com.bumptech.glide.load.model.GlideUrl
;
import
com.bumptech.glide.request.RequestOptions
;
import
com.facebook.react.bridge.ReactApplicationContext
;
import
com.facebook.react.bridge.ReactContextBaseJavaModule
;
import
com.facebook.react.bridge.ReactMethod
;
...
...
@@ -41,16 +40,12 @@ class FastImageViewModule extends ReactContextBaseJavaModule {
final
ReadableMap
source
=
sources
.
getMap
(
i
);
final
GlideUrl
glideUrl
=
FastImageViewConverter
.
glideUrl
(
source
);
final
Priority
priority
=
FastImageViewConverter
.
priority
(
source
);
RequestOptions
options
=
new
RequestOptions
()
.
placeholder
(
TRANSPARENT_DRAWABLE
)
.
diskCacheStrategy
(
DiskCacheStrategy
.
AUTOMATIC
)
.
priority
(
priority
);
Glide
.
with
(
activity
.
getApplicationContext
())
.
applyDefaultRequestOptions
(
options
)
.
load
(
glideUrl
)
.
priority
(
priority
)
.
placeholder
(
TRANSPARENT_DRAWABLE
)
.
diskCacheStrategy
(
DiskCacheStrategy
.
SOURCE
)
.
preload
();
}
}
...
...
android/src/main/java/com/dylanvann/fastimage/OkHttpProgressGlideModule.java
View file @
5cc6201a
...
...
@@ -5,11 +5,10 @@ import android.os.Handler;
import
android.os.Looper
;
import
com.bumptech.glide.Glide
;
import
com.bumptech.glide.Registry
;
import
com.bumptech.glide.annotation.GlideModule
;
import
com.bumptech.glide.GlideBuilder
;
import
com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
;
import
com.bumptech.glide.load.model.GlideUrl
;
import
com.bumptech.glide.module.
Library
GlideModule
;
import
com.bumptech.glide.module.GlideModule
;
import
java.io.IOException
;
import
java.io.InputStream
;
...
...
@@ -28,15 +27,18 @@ import okio.ForwardingSource;
import
okio.Okio
;
import
okio.Source
;
@GlideModule
public
class
OkHttpProgressGlideModule
extends
LibraryGlideModule
{
public
class
OkHttpProgressGlideModule
implements
GlideModule
{
@Override
public
void
applyOptions
(
Context
context
,
GlideBuilder
builder
)
{
}
@Override
public
void
registerComponents
(
Context
context
,
Glide
glide
,
Registry
registry
)
{
public
void
registerComponents
(
Context
context
,
Glide
glide
)
{
OkHttpClient
client
=
new
OkHttpClient
.
Builder
()
.
addInterceptor
(
createInterceptor
(
new
DispatchingProgressListener
()))
.
build
();
registry
.
replace
(
GlideUrl
.
class
,
InputStream
.
class
,
new
OkHttpUrlLoader
.
Factory
(
client
));
glide
.
register
(
GlideUrl
.
class
,
InputStream
.
class
,
new
OkHttpUrlLoader
.
Factory
(
client
));
}
private
static
Interceptor
createInterceptor
(
final
ResponseProgressListener
listener
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment