Skip to content

Commit d7f2ace

Browse files
committed
fix: events on android
1 parent b727281 commit d7f2ace

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

android/src/main/java/com/dylanvann/fastimage/FastImageViewWithUrl.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,15 @@
1313
import com.bumptech.glide.RequestManager;
1414
import com.bumptech.glide.load.model.GlideUrl;
1515
import com.bumptech.glide.request.Request;
16+
import com.dylanvann.fastimage.events.OnErrorEvent;
17+
import com.dylanvann.fastimage.events.OnLoadStartEvent;
18+
import com.dylanvann.fastimage.events.OnProgressEvent;
1619
import com.facebook.react.bridge.ReadableMap;
1720
import com.facebook.react.bridge.WritableMap;
1821
import com.facebook.react.bridge.WritableNativeMap;
1922
import com.facebook.react.uimanager.ThemedReactContext;
23+
import com.facebook.react.uimanager.UIManagerHelper;
24+
import com.facebook.react.uimanager.events.EventDispatcher;
2025
import com.facebook.react.uimanager.events.RCTEventEmitter;
2126

2227
import java.util.ArrayList;
@@ -81,11 +86,13 @@ public void onAfterUpdate(
8186

8287
if (imageSource != null && imageSource.getUri().toString().length() == 0) {
8388
ThemedReactContext context = (ThemedReactContext) getContext();
84-
RCTEventEmitter eventEmitter = context.getJSModule(RCTEventEmitter.class);
8589
int viewId = getId();
86-
WritableMap event = new WritableNativeMap();
87-
event.putString("message", "Invalid source prop:" + mSource);
88-
eventEmitter.receiveEvent(viewId, REACT_ON_ERROR_EVENT, event);
90+
EventDispatcher eventDispatcher =
91+
UIManagerHelper.getEventDispatcherForReactTag(context, viewId);
92+
if (eventDispatcher == null) {
93+
return;
94+
}
95+
eventDispatcher.dispatchEvent(new OnErrorEvent(viewId));
8996

9097
// Cancel existing requests.
9198
clearView(requestManager);
@@ -121,12 +128,13 @@ public void onAfterUpdate(
121128
ThemedReactContext context = (ThemedReactContext) getContext();
122129
if (imageSource != null) {
123130
// This is an orphan even without a load/loadend when only loading a placeholder
124-
RCTEventEmitter eventEmitter = context.getJSModule(RCTEventEmitter.class);
125-
int viewId = this.getId();
126-
127-
eventEmitter.receiveEvent(viewId,
128-
FastImageViewManager.REACT_ON_LOAD_START_EVENT,
129-
new WritableNativeMap());
131+
int viewId = getId();
132+
EventDispatcher eventDispatcher =
133+
UIManagerHelper.getEventDispatcherForReactTag(context, viewId);
134+
if (eventDispatcher == null) {
135+
return;
136+
}
137+
eventDispatcher.dispatchEvent(new OnLoadStartEvent(viewId, 0, 0));
130138
}
131139

132140
if (requestManager != null) {

0 commit comments

Comments
 (0)