Skip to content

Commit

Permalink
feat(Android): wip
Browse files Browse the repository at this point in the history
  • Loading branch information
duguyihou committed Nov 19, 2023
1 parent 38a9f18 commit f1ed5c1
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
45 changes: 45 additions & 0 deletions android/src/main/java/com/turboimage/TurboImageListener.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.turboimage

import android.widget.ImageView
import coil.request.ErrorResult
import coil.request.ImageRequest
import coil.request.SuccessResult
import com.facebook.react.bridge.WritableNativeMap
import com.facebook.react.common.MapBuilder
import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.events.RCTEventEmitter

open class TurboImageListener<T>(private val view: T) : ImageRequest.Listener where T : ImageView {
private val currentContext = view.context as ThemedReactContext
private var eventEmitter: RCTEventEmitter = (view.context as ThemedReactContext).getJSModule(
RCTEventEmitter::class.java
)

fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> {
return MapBuilder.of(
ON_ERROR, MapBuilder.of("registrationName", ON_ERROR),
ON_SUCCESS, MapBuilder.of("registrationName", ON_SUCCESS)
)
}

override fun onError(request: ImageRequest, result: ErrorResult) {

val payload = WritableNativeMap().apply {
putString("error", result.toString())
}
eventEmitter.receiveEvent(view.id, ON_ERROR, payload)
}

override fun onSuccess(request: ImageRequest, result: SuccessResult) {
val payload = WritableNativeMap().apply {
putBoolean("isSampled", result.isSampled)
putString("dataSource", result.dataSource.toString())
}
eventEmitter.receiveEvent(view.id, ON_SUCCESS, payload)
}

companion object {
const val ON_ERROR = "onError"
const val ON_SUCCESS = "onSuccess"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ abstract class TurboImageViewManagerBase<T> : SimpleViewManager<T>() where T : I
override fun createViewInstance(p0: ThemedReactContext): T {
val instance = getImageView(p0)
requestBuilder = ImageRequest.Builder(p0).target { instance.setImageDrawable(it) }
.listener(object : TurboImageListener<T>(instance) {})
return instance
}

Expand Down

0 comments on commit f1ed5c1

Please sign in to comment.