@@ -21,7 +21,15 @@ import android.provider.MediaStore
21
21
import android.text.TextUtils
22
22
import android.util.Base64
23
23
import androidx.exifinterface.media.ExifInterface
24
+ import com.facebook.common.executors.CallerThreadExecutor
24
25
import com.facebook.common.logging.FLog
26
+ import com.facebook.datasource.BaseDataSubscriber
27
+ import com.facebook.datasource.DataSource
28
+ import com.facebook.datasource.DataSubscriber
29
+ import com.facebook.drawee.backends.pipeline.Fresco.getImagePipeline
30
+ import com.facebook.imagepipeline.common.Priority
31
+ import com.facebook.imagepipeline.request.ImageRequest
32
+ import com.facebook.imagepipeline.request.ImageRequestBuilder
25
33
import com.facebook.infer.annotation.Assertions
26
34
import com.facebook.react.bridge.Arguments
27
35
import com.facebook.react.bridge.JSApplicationIllegalArgumentException
@@ -31,6 +39,7 @@ import com.facebook.react.bridge.ReadableMap
31
39
import com.facebook.react.bridge.ReadableType
32
40
import com.facebook.react.bridge.WritableMap
33
41
import com.facebook.react.common.ReactConstants
42
+ import com.facebook.react.modules.fresco.ReactNetworkImageRequest
34
43
import java.io.ByteArrayInputStream
35
44
import java.io.File
36
45
import java.io.FileInputStream
@@ -461,6 +470,42 @@ class ImageEditorModuleImpl(private val reactContext: ReactApplicationContext) {
461
470
)
462
471
463
472
// Utils
473
+ private fun prefetchImage (uri : String , headers : ReadableMap ) {
474
+ val uri = Uri .parse(uri)
475
+ val imageRequestBuilder = ImageRequestBuilder .newBuilderWithSource(uri)
476
+ val request: ImageRequest =
477
+ ReactNetworkImageRequest .fromBuilderWithHeaders(imageRequestBuilder, headers)
478
+
479
+ val prefetchSource: DataSource <Void > =
480
+ getImagePipeline().prefetchToDiskCache(request, null , Priority .HIGH )
481
+ val prefetchSubscriber: DataSubscriber <Void > =
482
+ object : BaseDataSubscriber <Void >() {
483
+ override fun onNewResultImpl (dataSource : DataSource <Void >) {
484
+ if (! dataSource.isFinished()) {
485
+ return
486
+ }
487
+ try {
488
+ val ref =
489
+ getImagePipeline()
490
+ .getCachedImage(getImagePipeline().getCacheKey(request, null ))
491
+ val image = ref!! .get()
492
+ // ???
493
+ } catch (e: java.lang.Exception ) {} finally {
494
+ dataSource.close()
495
+ }
496
+ }
497
+
498
+ override fun onFailureImpl (dataSource : DataSource <Void ?>) {
499
+ try {
500
+ // Error
501
+ } finally {
502
+ dataSource.close()
503
+ }
504
+ }
505
+ }
506
+ prefetchSource.subscribe(prefetchSubscriber, CallerThreadExecutor .getInstance())
507
+ }
508
+
464
509
private fun getResultMap (
465
510
resizedImage : File ,
466
511
image : Bitmap ,
0 commit comments