@@ -0,0 +1,2463 @@
+package com.dylanvann.fastimage;%0A%0Aimport android.graphics.drawable.Drawable;%0A%0Aimport com.bumptech.glide.load.DataSource;%0Aimport com.bumptech.glide.load.engine.GlideException;%0Aimport com.bumptech.glide.request.RequestListener;%0Aimport com.bumptech.glide.request.target.ImageViewTarget;%0Aimport com.bumptech.glide.request.target.Target;%0Aimport com.facebook.react.bridge.WritableNativeMap;%0Aimport com.facebook.react.uimanager.ThemedReactContext;%0Aimport com.facebook.react.uimanager.events.RCTEventEmitter;%0A%0Apublic class FastImageRequestListener implements RequestListener%3CDrawable%3E %7B%0A    public static final String REACT_ON_ERROR_EVENT = %22onFastImageError%22;%0A    public static final String REACT_ON_LOAD_EVENT = %22onFastImageLoad%22;%0A    public static final String REACT_ON_LOAD_END_EVENT = %22onFastImageLoadEnd%22;%0A    private static String key = null;%0A%0A    public FastImageRequestListener(String key) %7B%0A        this.key = key;%0A    %7D%0A%0A    @Override%0A    public boolean onLoadFailed(@android.support.annotation.Nullable GlideException e, Object model, Target%3CDrawable%3E target, boolean isFirstResource) %7B%0A        OkHttpProgressGlideModule.forget(key);%0A        if (!(target instanceof ImageViewTarget)) %7B%0A            return false;%0A        %7D%0A        ImageViewWithUrl view = (ImageViewWithUrl) ((ImageViewTarget) target).getView();%0A        ThemedReactContext context = (ThemedReactContext) view.getContext();%0A        RCTEventEmitter eventEmitter = context.getJSModule(RCTEventEmitter.class);%0A        int viewId = view.getId();%0A        eventEmitter.receiveEvent(viewId, REACT_ON_ERROR_EVENT, new WritableNativeMap());%0A        eventEmitter.receiveEvent(viewId, REACT_ON_LOAD_END_EVENT, new WritableNativeMap());%0A        return false;%0A    %7D%0A%0A    @Override%0A    public boolean onResourceReady(Drawable resource, Object model, Target%3CDrawable%3E target, DataSource dataSource, boolean isFirstResource) %7B%0A        if (!(target instanceof ImageViewTarget)) %7B%0A            return false;%0A        %7D%0A        ImageViewWithUrl view = (ImageViewWithUrl) ((ImageViewTarget) target).getView();%0A        ThemedReactContext context = (ThemedReactContext) view.getContext();%0A        RCTEventEmitter eventEmitter = context.getJSModule(RCTEventEmitter.class);%0A        int viewId = view.getId();%0A        eventEmitter.receiveEvent(viewId, REACT_ON_LOAD_EVENT, new WritableNativeMap());%0A        eventEmitter.receiveEvent(viewId, REACT_ON_LOAD_END_EVENT, new WritableNativeMap());%0A        return false;%0A    %7D%0A%7D%0A

Add a custom request listener class