@@ -19,6 +19,7 @@ import com.luck.picture.lib.basic.PictureSelector
19
19
import com.luck.picture.lib.config.PictureMimeType
20
20
import com.luck.picture.lib.config.SelectMimeType
21
21
import com.luck.picture.lib.config.SelectModeConfig
22
+ import com.luck.picture.lib.engine.ImageEngine
22
23
import com.luck.picture.lib.engine.PictureSelectorEngine
23
24
import com.luck.picture.lib.entity.LocalMedia
24
25
import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener
@@ -92,11 +93,13 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
92
93
val isMultiple = config.selectMode == SelectMode .MULTIPLE
93
94
val selectMode = if (isMultiple) SelectModeConfig .MULTIPLE else SelectModeConfig .SINGLE
94
95
95
-
96
96
val isCrop = config.crop != null
97
97
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 {
100
103
if (isCrop) {
101
104
setCropOption(config.crop)
102
105
// Disabled force crop engine for multiple
@@ -123,18 +126,27 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
123
126
if (videoQuality != null && videoQuality != 1.0 ) {
124
127
setVideoQuality(if (videoQuality > 0.5 ) 1 else 0 )
125
128
}
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 )
128
134
.isWithSelectVideoImage(true )
129
135
.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 )
132
140
// isPreview
133
- .isPreviewImage(isPreview).isPreviewVideo(isPreview)
141
+ .isPreviewImage(isPreview)
142
+ .isPreviewVideo(isPreview)
134
143
//
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 )
138
150
.forResult(object : OnResultCallbackListener <LocalMedia ?> {
139
151
override fun onResult (localMedia : ArrayList <LocalMedia ?>? ) {
140
152
var data: Array <Result > = arrayOf()
@@ -168,18 +180,6 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
168
180
resolved : (result: CropResult ) -> Unit ,
169
181
rejected : (reject: Double ) -> Unit
170
182
) {
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
-
183
183
cropOption = Options ()
184
184
185
185
setCropOption(
@@ -211,17 +211,12 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
211
211
Uri .fromFile(file)
212
212
}
213
213
214
-
215
- else -> {
216
- Uri .parse(image)
217
- }
214
+ else -> Uri .parse(image)
218
215
}
219
216
220
-
221
217
val destinationUri = Uri .fromFile(
222
218
File (getSandboxPath(appContext), DateUtils .getCreateFileName(" CROP_" ) + " .jpeg" )
223
219
)
224
-
225
220
val uCrop = UCrop .of<Any >(uri, destinationUri).withOptions(cropOption)
226
221
227
222
// set engine
@@ -267,8 +262,23 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
267
262
}
268
263
}
269
264
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) {
272
282
Language .VI -> LanguageConfig .VIETNAM // -> 🇻🇳 My country. Yeahhh
273
283
Language .EN -> LanguageConfig .ENGLISH
274
284
Language .ZH_HANS -> LanguageConfig .CHINESE
0 commit comments