fix(ImagePickerCropper): openDocument 제거, excludeGif가 true이고 GIF 선택시 "GIF는 지원하지 않습니다." 메시지 반환

This commit is contained in:
2025-09-18 22:02:54 +09:00
parent 0f170c6daa
commit 44e209d7b1

View File

@@ -56,12 +56,6 @@ class ImagePickerCropper(
else handlePickedUri(uri)
}
private val openDocument =
caller.registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri ->
if (uri == null) onError(CancellationException("이미지 선택을 취소했습니다."))
else handlePickedUri(uri)
}
// uCrop 결과 수신
private val cropResult =
caller.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
@@ -87,16 +81,12 @@ class ImagePickerCropper(
/** 외부에서 호출: 선택 → 크롭 시작 */
fun launch() {
if (excludeGif) {
openDocument.launch(arrayOf("image/png", "image/jpg", "image/jpeg"))
if (ActivityResultContracts.PickVisualMedia.isPhotoPickerAvailable(context)) {
pickPhoto.launch(
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
)
} else {
if (ActivityResultContracts.PickVisualMedia.isPhotoPickerAvailable(context)) {
pickPhoto.launch(
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
)
} else {
pickContent.launch("image/*")
}
pickContent.launch("image/*")
}
}
@@ -108,14 +98,19 @@ class ImagePickerCropper(
private fun handlePickedUri(source: Uri) {
if (isGifUri(source)) {
// 1) 캐시에 gif 그대로 복사
val gifFile = copyUriToCacheAsGif(source)
lastCroppedFile = gifFile
val fileUri = FileProvider.getUriForFile(
context, "${BuildConfig.APPLICATION_ID}.fileprovider", gifFile
)
// 2) 바로 반환 (크롭 생략)
onSuccess(gifFile, fileUri)
if (excludeGif) {
onError(CancellationException("GIF는 지원하지 않습니다."))
} else {
// 1) 캐시에 gif 그대로 복사
val gifFile = copyUriToCacheAsGif(source)
lastCroppedFile = gifFile
val fileUri = FileProvider.getUriForFile(
context, "${BuildConfig.APPLICATION_ID}.fileprovider", gifFile
)
// 2) 바로 반환 (크롭 생략)
onSuccess(gifFile, fileUri)
}
} else {
// 기존 그대로: uCrop 9:20 실행
startCrop(source)