Skip to content

Commit

Permalink
icerockdev#34 code style
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexey Nesterov committed May 20, 2024
1 parent 399fb6b commit bfeda11
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,43 +38,42 @@ internal class CameraPickerDelegate :
)
}

fun pick(
maxWidth: Int,
maxHeight: Int,
override fun createCallback(
callback: (Result<Bitmap>) -> Unit,
outputUri: Uri,
) {
super.pick(callback)

this.callback = CameraPickerCallbackData(
mediaOptions: MediaOptions?
): CameraPickerCallbackData {
val cameraPickerMediaOptions = mediaOptions as? CameraPickerMediaOptions
val outputUri = cameraPickerMediaOptions?.outputUri ?: Uri.EMPTY
val maxWidth = cameraPickerMediaOptions?.maxWidth ?: 0
val maxHeight = cameraPickerMediaOptions?.maxHeight ?: 0
return CameraPickerCallbackData(
callback,
outputUri,
maxWidth,
maxHeight,
)
}

override fun launchActivityResult(mediaOptions: MediaOptions?) {
val cameraPickerMediaOptions = mediaOptions as? CameraPickerMediaOptions
val outputUri = cameraPickerMediaOptions?.outputUri ?: Uri.EMPTY
pickerLauncherHolder.value?.launch(
outputUri
)
}

override fun createCallback(
callback: (Result<Bitmap>) -> Unit,
): CameraPickerCallbackData = CameraPickerCallbackData(
callback,
Uri.EMPTY,
0,
0,
)

override fun launchActivityResult() = Unit

class CameraPickerCallbackData(
override val callback: (Result<Bitmap>) -> Unit,
val outputUri: Uri,
val maxWidth: Int,
val maxHeight: Int,
) : CallbackData<Bitmap>()
) : CallbackData<Bitmap>

class CameraPickerMediaOptions(
val outputUri: Uri,
val maxWidth: Int,
val maxHeight: Int,
) : MediaOptions

companion object {
private const val PICK_CAMERA_IMAGE_KEY = "PickCameraImageKey"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,10 @@ internal class FilePickerDelegate :

override fun createCallback(
callback: (Result<FileMedia>) -> Unit,
mediaOptions: MediaOptions?
): FilePickerCallbackData = FilePickerCallbackData(callback)

override fun launchActivityResult() {
override fun launchActivityResult(mediaOptions: MediaOptions?) {
pickerLauncherHolder.value?.launch(
arrayOf(
"*/*",
Expand All @@ -74,7 +75,7 @@ internal class FilePickerDelegate :

class FilePickerCallbackData(
override val callback: (Result<FileMedia>) -> Unit
) : CallbackData<FileMedia>()
) : CallbackData<FileMedia>

companion object {
private const val PICK_FILE_KEY = "PickFileKey"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,39 +38,36 @@ internal class GalleryPickerDelegate :
)
}

fun pick(
maxWidth: Int,
maxHeight: Int,
override fun createCallback(
callback: (Result<Bitmap>) -> Unit,
) {
super.pick(callback)

this.callback = GalleryPickerCallbackData(
mediaOptions: MediaOptions?
): GalleryPickerCallbackData {
val galleryPickerMediaOptions = mediaOptions as? GalleryPickerMediaOptions
val maxWidth = galleryPickerMediaOptions?.maxWidth ?: 0
val maxHeight = galleryPickerMediaOptions?.maxHeight ?: 0
return GalleryPickerCallbackData(
callback,
maxWidth,
maxHeight,
)
}

override fun launchActivityResult(mediaOptions: MediaOptions?) {
pickerLauncherHolder.value?.launch(
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
)
}

override fun createCallback(
callback: (Result<Bitmap>) -> Unit,
): GalleryPickerCallbackData = GalleryPickerCallbackData(
callback,
0,
0,
)

override fun launchActivityResult() = Unit

class GalleryPickerCallbackData(
override val callback: (Result<Bitmap>) -> Unit,
val maxWidth: Int,
val maxHeight: Int,
) : CallbackData<Bitmap>()
) : CallbackData<Bitmap>

class GalleryPickerMediaOptions(
val maxWidth: Int,
val maxHeight: Int,
) : MediaOptions

companion object {
private const val PICK_GALLERY_IMAGE_KEY = "PickGalleryImageKey"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,20 @@ internal class MediaPickerControllerImpl(
val action: (Result<android.graphics.Bitmap>) -> Unit = { continuation.resumeWith(it) }
when (source) {
MediaSource.GALLERY -> galleryPickerDelegate.pick(
maxWidth,
maxHeight,
action,
callback = action,
mediaOptions = GalleryPickerDelegate.GalleryPickerMediaOptions(
maxWidth = maxWidth,
maxHeight = maxHeight,
)
)

MediaSource.CAMERA -> cameraPickerDelegate.pick(
maxWidth,
maxHeight,
action,
outputUri,
callback = action,
mediaOptions = CameraPickerDelegate.CameraPickerMediaOptions(
outputUri = outputUri,
maxWidth = maxWidth,
maxHeight = maxHeight,
)
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,18 @@ internal class MediaPickerDelegate :

override fun createCallback(
callback: (Result<Media>) -> Unit,
mediaOptions: MediaOptions?
): MediaPickerCallbackData = MediaPickerCallbackData(callback)

override fun launchActivityResult() {
override fun launchActivityResult(mediaOptions: MediaOptions?) {
pickerLauncherHolder.value?.launch(
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageAndVideo)
)
}

class MediaPickerCallbackData(
override val callback: (Result<Media>) -> Unit,
) : CallbackData<Media>()
) : CallbackData<Media>

companion object {
private const val PICK_MEDIA_KEY = "PickMediaKey"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,22 +52,28 @@ internal abstract class PickerDelegate<C : PickerDelegate.CallbackData<D>, I, D>

fun pick(
callback: (Result<D>) -> Unit,
mediaOptions: MediaOptions? = null,
) {
this.callback?.let {
it.callback.invoke(Result.failure(IllegalStateException("Callback should be null")))
this.callback = null
}

this.callback = createCallback(callback)
this.callback = createCallback(callback, mediaOptions)

launchActivityResult()
launchActivityResult(mediaOptions)
}

abstract fun createCallback(callback: (Result<D>) -> Unit): C
abstract fun createCallback(
callback: (Result<D>) -> Unit,
mediaOptions: MediaOptions?,
): C

abstract fun launchActivityResult()
abstract fun launchActivityResult(mediaOptions: MediaOptions?)

abstract class CallbackData<D> {
abstract val callback: (Result<D>) -> Unit
interface CallbackData<D> {
val callback: (Result<D>) -> Unit
}

interface MediaOptions
}

0 comments on commit bfeda11

Please sign in to comment.