Skip to content

Commit e50038b

Browse files
committed
⏪ fix: Lost code on Preview Android
1 parent 9359353 commit e50038b

File tree

1 file changed

+52
-12
lines changed

1 file changed

+52
-12
lines changed

android/src/main/java/com/margelo/nitro/multipleimagepicker/MultipleImagePickerImp.kt

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package com.margelo.nitro.multipleimagepicker
22

33
import android.app.Activity
4-
import android.content.ContentResolver
54
import android.content.Context
65
import android.content.Intent
76
import android.graphics.Color
87
import android.net.Uri
98
import androidx.core.content.ContextCompat
10-
import com.facebook.react.bridge.ActivityEventListener
119
import com.facebook.react.bridge.BaseActivityEventListener
1210
import com.facebook.react.bridge.ColorPropConverter
1311
import com.facebook.react.bridge.ReactApplicationContext
@@ -19,9 +17,9 @@ import com.luck.picture.lib.basic.PictureSelector
1917
import com.luck.picture.lib.config.PictureMimeType
2018
import com.luck.picture.lib.config.SelectMimeType
2119
import com.luck.picture.lib.config.SelectModeConfig
22-
import com.luck.picture.lib.engine.ImageEngine
2320
import com.luck.picture.lib.engine.PictureSelectorEngine
2421
import com.luck.picture.lib.entity.LocalMedia
22+
import com.luck.picture.lib.interfaces.OnCustomLoadingListener
2523
import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener
2624
import com.luck.picture.lib.interfaces.OnResultCallbackListener
2725
import com.luck.picture.lib.language.LanguageConfig
@@ -32,6 +30,7 @@ import com.luck.picture.lib.style.SelectMainStyle
3230
import com.luck.picture.lib.style.TitleBarStyle
3331
import com.luck.picture.lib.utils.DateUtils
3432
import com.luck.picture.lib.utils.DensityUtil
33+
import com.luck.picture.lib.utils.MediaUtils
3534
import com.yalantis.ucrop.UCrop
3635
import com.yalantis.ucrop.UCrop.Options
3736
import com.yalantis.ucrop.UCrop.REQUEST_CROP
@@ -99,7 +98,8 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
9998
.openGallery(chooseMode)
10099
.setImageEngine(imageEngine)
101100
.setSelectedData(dataList)
102-
.setSelectorUIStyle(style).apply {
101+
.setSelectorUIStyle(style)
102+
.apply {
103103
if (isCrop) {
104104
setCropOption(config.crop)
105105
// Disabled force crop engine for multiple
@@ -126,7 +126,8 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
126126
if (videoQuality != null && videoQuality != 1.0) {
127127
setVideoQuality(if (videoQuality > 0.5) 1 else 0)
128128
}
129-
}.setImageSpanCount(config.numberOfColumn?.toInt() ?: 3)
129+
}
130+
.setImageSpanCount(config.numberOfColumn?.toInt() ?: 3)
130131
.setMaxSelectNum(maxSelect)
131132
.isDirectReturnSingle(true)
132133
.isSelectZoomAnim(true)
@@ -263,20 +264,61 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
263264
}
264265

265266
@ReactMethod
266-
fun openPreview(media: Array<MediaPreview>, config: NitroPreviewConfig) {
267-
267+
fun openPreview(media: Array<MediaPreview>, index: Int, config: NitroPreviewConfig) {
268268
val imageEngine = GlideEngine.createGlideEngine()
269269

270-
var list: ArrayList<LocalMedia> = arrayListOf()
270+
val assets: ArrayList<LocalMedia> = arrayListOf()
271+
272+
val previewStyle = PictureSelectorStyle()
273+
val titleBarStyle = TitleBarStyle()
274+
275+
previewStyle.windowAnimationStyle.setActivityEnterAnimation(R.anim.anim_modal_in)
276+
previewStyle.windowAnimationStyle.setActivityExitAnimation(com.luck.picture.lib.R.anim.ps_anim_modal_out)
277+
previewStyle.selectMainStyle.previewBackgroundColor = Color.BLACK
278+
279+
titleBarStyle.previewTitleBackgroundColor = Color.BLACK
280+
previewStyle.titleBarStyle = titleBarStyle
281+
282+
media.forEach { mediaItem ->
283+
var asset: LocalMedia? = null
284+
285+
mediaItem.path?.let { path ->
286+
// network asset
287+
if (path.startsWith("https://") || path.startsWith("http://")) {
288+
val localMedia = LocalMedia.create()
289+
localMedia.path = path
290+
localMedia.mimeType =
291+
if (mediaItem.type == ResultType.VIDEO) "video/mp4" else MediaUtils.getMimeTypeFromMediaHttpUrl(
292+
path
293+
) ?: "image/jpg"
294+
asset = localMedia
295+
} else {
296+
asset = LocalMedia.generateLocalMedia(appContext, path)
297+
}
298+
}
299+
300+
asset?.let { assets.add(it) }
301+
}
271302

272303
PictureSelector
273304
.create(currentActivity)
274305
.openPreview()
275306
.setImageEngine(imageEngine)
276307
.setLanguage(getLanguage(config.language))
277-
.startFragmentPreview(config.index.toInt(), false, list)
308+
.setSelectorUIStyle(previewStyle)
309+
.isPreviewFullScreenMode(true)
310+
.isAutoVideoPlay(true)
311+
.setVideoPlayerEngine(ExoPlayerEngine())
312+
.isVideoPauseResumePlay(true)
313+
.setCustomLoadingListener(getCustomLoadingListener())
314+
.startActivityPreview(index, false, assets)
315+
}
316+
317+
private fun getCustomLoadingListener(): OnCustomLoadingListener {
318+
return OnCustomLoadingListener { context -> LoadingDialog(context) }
278319
}
279320

321+
280322
private fun getLanguage(language: Language): Int {
281323
return when (language) {
282324
Language.VI -> LanguageConfig.VIETNAM // -> 🇻🇳 My country. Yeahhh
@@ -343,9 +385,7 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
343385
0,
344386
*ratioList.take(5).toTypedArray()
345387
)
346-
347388
}
348-
349389
}
350390
}
351391

@@ -515,4 +555,4 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
515555
override fun getPictureSelectorEngine(): PictureSelectorEngine {
516556
return PictureSelectorEngineImp()
517557
}
518-
}
558+
}

0 commit comments

Comments
 (0)