@@ -19,6 +19,7 @@ import com.luck.picture.lib.basic.PictureSelector
1919import com.luck.picture.lib.config.PictureMimeType
2020import com.luck.picture.lib.config.SelectMimeType
2121import com.luck.picture.lib.config.SelectModeConfig
22+ import com.luck.picture.lib.engine.ImageEngine
2223import com.luck.picture.lib.engine.PictureSelectorEngine
2324import com.luck.picture.lib.entity.LocalMedia
2425import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener
@@ -92,11 +93,13 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
9293 val isMultiple = config.selectMode == SelectMode .MULTIPLE
9394 val selectMode = if (isMultiple) SelectModeConfig .MULTIPLE else SelectModeConfig .SINGLE
9495
95-
9696 val isCrop = config.crop != null
9797
98- PictureSelector .create(activity).openGallery(chooseMode).setImageEngine(imageEngine)
99- .setSelectedData(dataList).setSelectorUIStyle(style).apply {
98+ PictureSelector .create(activity)
99+ .openGallery(chooseMode)
100+ .setImageEngine(imageEngine)
101+ .setSelectedData(dataList)
102+ .setSelectorUIStyle(style).apply {
100103 if (isCrop) {
101104 setCropOption(config.crop)
102105 // Disabled force crop engine for multiple
@@ -123,18 +126,27 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
123126 if (videoQuality != null && videoQuality != 1.0 ) {
124127 setVideoQuality(if (videoQuality > 0.5 ) 1 else 0 )
125128 }
126- }.setImageSpanCount(config.numberOfColumn?.toInt() ? : 3 ).setMaxSelectNum(maxSelect)
127- .isDirectReturnSingle(true ).isSelectZoomAnim(true ).isPageStrategy(true , 50 )
129+ }.setImageSpanCount(config.numberOfColumn?.toInt() ? : 3 )
130+ .setMaxSelectNum(maxSelect)
131+ .isDirectReturnSingle(true )
132+ .isSelectZoomAnim(true )
133+ .isPageStrategy(true , 50 )
128134 .isWithSelectVideoImage(true )
129135 .setMaxVideoSelectNum(if (maxVideo != 20 ) maxVideo else maxSelect)
130- .isMaxSelectEnabledMask(true ).isAutoVideoPlay(true )
131- .isFastSlidingSelect(allowSwipeToSelect).isPageSyncAlbumCount(true )
136+ .isMaxSelectEnabledMask(true )
137+ .isAutoVideoPlay(true )
138+ .isFastSlidingSelect(allowSwipeToSelect)
139+ .isPageSyncAlbumCount(true )
132140 // isPreview
133- .isPreviewImage(isPreview).isPreviewVideo(isPreview)
141+ .isPreviewImage(isPreview)
142+ .isPreviewVideo(isPreview)
134143 //
135- .isDisplayCamera(config.allowedCamera ? : true ).isDisplayTimeAxis(true )
136- .setSelectionMode(selectMode).isOriginalControl(config.isHiddenOriginalButton == false )
137- .setLanguage(getLanguage()).isPreviewFullScreenMode(true )
144+ .isDisplayCamera(config.allowedCamera ? : true )
145+ .isDisplayTimeAxis(true )
146+ .setSelectionMode(selectMode)
147+ .isOriginalControl(config.isHiddenOriginalButton == false )
148+ .setLanguage(getLanguage(config.language))
149+ .isPreviewFullScreenMode(true )
138150 .forResult(object : OnResultCallbackListener <LocalMedia ?> {
139151 override fun onResult (localMedia : ArrayList <LocalMedia ?>? ) {
140152 var data: Array <Result > = arrayOf()
@@ -168,18 +180,6 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
168180 resolved : (result: CropResult ) -> Unit ,
169181 rejected : (reject: Double ) -> Unit
170182 ) {
171-
172-
173- fun isImage (uri : Uri , contentResolver : ContentResolver ): Boolean {
174- val mimeType: String? = contentResolver.getType(uri)
175- return mimeType?.startsWith(" image/" ) == true
176- }
177-
178- val uri = Uri .parse(image)
179- val isImageFile = isImage(uri, appContext.contentResolver)
180-
181- if (! isImageFile) return rejected(0.0 )
182-
183183 cropOption = Options ()
184184
185185 setCropOption(
@@ -211,17 +211,12 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
211211 Uri .fromFile(file)
212212 }
213213
214-
215- else -> {
216- Uri .parse(image)
217- }
214+ else -> Uri .parse(image)
218215 }
219216
220-
221217 val destinationUri = Uri .fromFile(
222218 File (getSandboxPath(appContext), DateUtils .getCreateFileName(" CROP_" ) + " .jpeg" )
223219 )
224-
225220 val uCrop = UCrop .of<Any >(uri, destinationUri).withOptions(cropOption)
226221
227222 // set engine
@@ -267,8 +262,23 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
267262 }
268263 }
269264
270- private fun getLanguage (): Int {
271- return when (config.language) {
265+ @ReactMethod
266+ fun openPreview (media : Array <MediaPreview >, config : NitroPreviewConfig ) {
267+
268+ val imageEngine = GlideEngine .createGlideEngine()
269+
270+ var list: ArrayList <LocalMedia > = arrayListOf ()
271+
272+ PictureSelector
273+ .create(currentActivity)
274+ .openPreview()
275+ .setImageEngine(imageEngine)
276+ .setLanguage(getLanguage(config.language))
277+ .startFragmentPreview(config.index.toInt(), false , list)
278+ }
279+
280+ private fun getLanguage (language : Language ): Int {
281+ return when (language) {
272282 Language .VI -> LanguageConfig .VIETNAM // -> 🇻🇳 My country. Yeahhh
273283 Language .EN -> LanguageConfig .ENGLISH
274284 Language .ZH_HANS -> LanguageConfig .CHINESE
0 commit comments