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