@@ -5,9 +5,6 @@ import android.content.Context
55import android.graphics.Bitmap
66import android.graphics.Color
77import android.media.MediaMetadataRetriever
8- import android.os.Build
9- import android.os.Bundle
10- import androidx.annotation.RequiresApi
118import androidx.core.content.ContextCompat
129import com.facebook.react.bridge.*
1310import com.luck.picture.lib.app.IApp
@@ -20,23 +17,19 @@ import com.luck.picture.lib.entity.LocalMedia
2017import com.luck.picture.lib.entity.LocalMedia.generateLocalMedia
2118import com.luck.picture.lib.interfaces.OnResultCallbackListener
2219import com.luck.picture.lib.style.*
23- import com.luck.picture.lib.utils.StyleUtils
24- import com.reactnativemultipleimagepicker.R.color.app_color_black
25- import com.yalantis.ucrop.UCrop
2620import com.yalantis.ucrop.UCrop.Options
2721import java.io.*
2822import java.util.*
2923
3024
31- @Suppress(" INCOMPATIBLE_ENUM_COMPARISON" , " UNCHECKED_CAST" )
3225class MultipleImagePickerModule (reactContext : ReactApplicationContext ) :
3326 ReactContextBaseJavaModule (reactContext), IApp {
3427
3528 override fun getName (): String {
3629 return " MultipleImagePicker"
3730 }
3831
39- var style = PictureSelectorStyle ()
32+ private var style = PictureSelectorStyle ()
4033
4134 private var selectedAssets: List <LocalMedia > = ArrayList ()
4235 private var singleSelectedMode: Boolean = false
@@ -48,15 +41,15 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
4841 private var isExportThumbnail: Boolean = false
4942 private var maxVideo: Int = 20
5043 private var isCamera: Boolean = true
51- private var cropOption: UCrop . Options ? = null ;
52- private var primaryColor: Int = Color .BLACK ;
44+ private var cropOption: Options ? = null
45+ private var primaryColor: Int = Color .BLACK
5346
5447
5548 @ReactMethod
5649 fun openPicker (options : ReadableMap ? , promise : Promise ): Unit {
5750 PictureAppMaster .getInstance().app = this
5851 val activity = currentActivity
59- var imageEngine = GlideEngine .createGlideEngine();
52+ val imageEngine = GlideEngine .createGlideEngine()
6053
6154 // set config
6255 setConfiguration(options)
@@ -125,7 +118,7 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
125118
126119 setStyle(options) // set style for UI
127120
128- val isCrop = options.getBoolean(" isCrop" ) && singleSelectedMode == true
121+ val isCrop = options.getBoolean(" isCrop" ) && singleSelectedMode
129122
130123 if (isCrop) {
131124 setCropOptions(options)
@@ -137,7 +130,7 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
137130
138131 @SuppressLint(" ResourceAsColor" )
139132 private fun setCropOptions (libOption : ReadableMap ) {
140- val options = UCrop . Options ()
133+ val options = Options ()
141134 val mainStyle: SelectMainStyle = style.selectMainStyle
142135
143136 options.setShowCropFrame(true )
@@ -148,7 +141,7 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
148141 options.isForbidSkipMultipleCrop(true )
149142 options.setMaxScaleMultiplier(100f )
150143 options.setLogoColor(primaryColor)
151- options.setToolbarWidgetColor(app_color_black )
144+ options.setToolbarWidgetColor(Color . BLACK )
152145 options.setStatusBarColor(mainStyle.statusBarColor)
153146 options.isDarkStatusBarBlack(mainStyle.isDarkStatusBarBlack)
154147
@@ -162,22 +155,22 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
162155
163156 // ANIMATION SLIDE FROM BOTTOM
164157 val animationStyle = PictureWindowAnimationStyle ()
165- animationStyle.setActivityEnterAnimation(com.luck.picture.lib. R .anim.ps_anim_up_in)
166- animationStyle.setActivityExitAnimation(com.luck.picture.lib. R .anim.ps_anim_down_out)
158+ animationStyle.setActivityEnterAnimation(R .anim.ps_anim_up_in)
159+ animationStyle.setActivityExitAnimation(R .anim.ps_anim_down_out)
167160
168161 // TITLE BAR
169162 val titleBar = TitleBarStyle ()
170163 titleBar.titleBackgroundColor =
171164 ContextCompat .getColor(appContext, R .color.app_color_white)
172165
173- titleBar.setHideCancelButton( true );
174- titleBar.setAlbumTitleRelativeLeft( true );
166+ titleBar.isHideCancelButton = true
167+ titleBar.isAlbumTitleRelativeLeft = true
175168
176- titleBar.setTitleAlbumBackgroundResource(com.luck.picture.lib. R .drawable.ps_album_bg);
177- titleBar.setTitleDrawableRightResource(com.luck.picture.lib. R .drawable.ps_ic_grey_arrow);
178- titleBar.setPreviewTitleLeftBackResource(com.luck.picture.lib. R .drawable.ps_ic_black_back);
179- titleBar.setTitleLeftBackResource(com.luck.picture.lib. R .drawable.ps_ic_black_back);
180- titleBar.setHideCancelButton( true )
169+ titleBar.titleAlbumBackgroundResource = R .drawable.ps_album_bg
170+ titleBar.titleDrawableRightResource = R .drawable.ps_ic_grey_arrow
171+ titleBar.previewTitleLeftBackResource = R .drawable.ps_ic_black_back
172+ titleBar.titleLeftBackResource = R .drawable.ps_ic_black_back
173+ titleBar.isHideCancelButton = true
181174
182175 // BOTTOM BAR
183176 val bottomBar = BottomNavBarStyle ()
@@ -186,74 +179,50 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
186179 bottomBar.bottomPreviewSelectTextColor =
187180 ContextCompat .getColor(appContext, R .color.app_color_pri)
188181 bottomBar.bottomNarBarBackgroundColor =
189- ContextCompat .getColor(appContext, com.luck.picture.lib. R .color.ps_color_white)
182+ ContextCompat .getColor(appContext, R .color.ps_color_white)
190183 bottomBar.bottomSelectNumResources = R .drawable.num_oval_orange
191184 bottomBar.bottomEditorTextColor =
192- ContextCompat .getColor(appContext, com.luck.picture.lib. R .color.ps_color_53575e)
185+ ContextCompat .getColor(appContext, R .color.ps_color_53575e)
193186 bottomBar.bottomOriginalTextColor =
194- ContextCompat .getColor(appContext, com.luck.picture.lib. R .color.ps_color_53575e)
187+ ContextCompat .getColor(appContext, R .color.ps_color_53575e)
195188 bottomBar.bottomPreviewNormalTextColor = R .color.app_color_53575e
196- bottomBar.bottomPreviewNormalTextColor = app_color_black
197- bottomBar.setCompleteCountTips( false )
189+ bottomBar.bottomPreviewNormalTextColor = Color . BLACK
190+ bottomBar.isCompleteCountTips = false
198191
199192 // MAIN STYLE
200193 val mainStyle = SelectMainStyle ()
201194
202- mainStyle.setPreviewSelectRelativeBottom( true )
203- mainStyle.setSelectNumberStyle( if (singleSelectedMode) false else true )
204- mainStyle.setPreviewSelectNumberStyle( true );
195+ mainStyle.isPreviewSelectRelativeBottom = true
196+ mainStyle.isSelectNumberStyle = ! singleSelectedMode
197+ mainStyle.isPreviewSelectNumberStyle = true
205198 mainStyle.isSelectNumberStyle = true
206199 mainStyle.selectBackground = R .drawable.picture_selector
207200 mainStyle.mainListBackgroundColor =
208- ContextCompat .getColor(appContext, com.luck.picture.lib. R .color.ps_color_white)
201+ ContextCompat .getColor(appContext, R .color.ps_color_white)
209202 mainStyle.previewSelectBackground =
210203 R .drawable.picture_selector
211204
212205 // custom select text on top
213- mainStyle.setSelectText( doneTitle)
214- mainStyle.setCompleteSelectRelativeTop( true )
215- mainStyle.setSelectNormalText( doneTitle)
206+ mainStyle.selectText = doneTitle
207+ mainStyle.isCompleteSelectRelativeTop = true
208+ mainStyle.selectNormalText = doneTitle
216209
217210
218211 mainStyle.selectNormalTextColor =
219- ContextCompat .getColor(appContext, com.luck.picture.lib. R .color.ps_color_9b)
212+ ContextCompat .getColor(appContext, R .color.ps_color_9b)
220213 mainStyle.selectTextColor = primaryColor
221214 mainStyle.selectText = doneTitle
222215
223- mainStyle.setStatusBarColor(
224- ContextCompat .getColor(
225- appContext,
226- R .color.app_color_white
227- )
228- );
229- mainStyle.setDarkStatusBarBlack(true );
230-
231- style.setTitleBarStyle(titleBar)
232- style.setBottomBarStyle(bottomBar)
233- style.setSelectMainStyle(mainStyle)
234- style.setWindowAnimationStyle(animationStyle)
235-
236-
237- // pictureStyle.selectMainStyle.adapterImageEditorResources =
238- // if (singleSelectedMode) R.drawable.checkbox_selector else R.drawable.picture_selector
239- // numberSelectMainStyle.isSelectNumberStyle = if (singleSelectedMode) false else true
240- // //bottom style
241- // pictureStyle.bottomBarStyle.bottomOriginalText = options.getString("doneTitle")
242- // pictureStyle.isOpenCheckNumStyle = if(singleSelectedMode) false else true
243- // pictureStyle.isCompleteReplaceNum = true
244- // pictureStyle.pictureCompleteTextSize = 16
245- // pictureStyle.pictureCheckNumBgStyle = R.drawable.num_oval_orange
246- // pictureStyle.pictureCompleteTextColor = Color.parseColor("#ffffff")
247- // pictureStyle.pictureNavBarColor = Color.parseColor("#000000")
248- // pictureStyle.pictureBottomBgColor = Color.parseColor("#393a3e")
249- // //preview Style
250- // pictureStyle.picturePreviewBottomBgColor = Color.parseColor("#000000")
251- // pictureStyle.pictureUnPreviewTextColor = Color.parseColor("#ffffff")
252- // //header
253- // pictureStyle.pictureTitleDownResId = R.drawable.picture_icon_arrow_down
254- // pictureStyle.pictureCancelTextColor = Color.parseColor("#393a3e")
255- // pictureStyle.pictureStatusBarColor = Color.parseColor("#393a3e")
256- // pictureStyle.pictureTitleBarBackgroundColor = Color.parseColor("#393a3e")
216+ mainStyle.statusBarColor = ContextCompat .getColor(
217+ appContext,
218+ R .color.app_color_white
219+ )
220+ mainStyle.isDarkStatusBarBlack = true
221+
222+ style.titleBarStyle = titleBar
223+ style.bottomBarStyle = bottomBar
224+ style.selectMainStyle = mainStyle
225+ style.windowAnimationStyle = animationStyle
257226 }
258227
259228 private fun handleSelectedAssets (options : ReadableMap ? ) {
@@ -265,7 +234,7 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
265234 if (assets.size() > 0 ) {
266235 val list = mutableListOf<LocalMedia >()
267236 for (i in 0 until assets.size()) {
268- val asset: ReadableNativeMap = assets.getMap(i) as ReadableNativeMap
237+ val asset: ReadableNativeMap = assets.getMap(i)
269238 val localMedia: LocalMedia = handleSelectedAssetItem(asset)
270239 list.add(localMedia)
271240 }
@@ -285,7 +254,6 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
285254 return generateLocalMedia(appContext, path)
286255 }
287256
288- @RequiresApi(Build .VERSION_CODES .LOLLIPOP )
289257 private fun createAttachmentResponse (item : LocalMedia ): WritableMap {
290258 val media: WritableMap = WritableNativeMap ()
291259 val type: String = if (item.mimeType.startsWith(" video/" )) " video" else " image"
@@ -305,7 +273,7 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
305273 media.putString(" parentFolderName" , item.parentFolderName)
306274 if (item.isCut) {
307275 val crop = WritableNativeMap ()
308- crop.putString(" path" , item.cutPath)
276+ crop.putString(" path" , " file:// ${ item.cutPath} " )
309277 crop.putDouble(" width" , item.cropImageWidth.toDouble())
310278 crop.putDouble(" height" , item.cropImageHeight.toDouble())
311279 media.putMap(" crop" , crop)
@@ -346,22 +314,6 @@ class MultipleImagePickerModule(reactContext: ReactApplicationContext) :
346314 }
347315 }
348316
349- private fun createDirIfNotExists (path : String ): File {
350- val dir = File (path)
351- if (dir.exists()) {
352- return dir
353- }
354- try {
355- dir.mkdirs()
356- // Add .nomedia to hide the thumbnail directory from gallery
357- val noMedia = File (path, " .nomedia" )
358- noMedia.createNewFile()
359- } catch (e: IOException ) {
360- e.printStackTrace()
361- }
362- return dir
363- }
364-
365317 override fun getAppContext (): Context {
366318 return reactApplicationContext
367319 }
0 commit comments