diff --git a/presentation/src/main/java/com/depromeet/presentation/home/ProfileImageUploadDialog.kt b/presentation/src/main/java/com/depromeet/presentation/home/ProfileImageUploadDialog.kt index 6c7dc37d..d25a495d 100644 --- a/presentation/src/main/java/com/depromeet/presentation/home/ProfileImageUploadDialog.kt +++ b/presentation/src/main/java/com/depromeet/presentation/home/ProfileImageUploadDialog.kt @@ -1,5 +1,6 @@ package com.depromeet.presentation.home +import android.annotation.SuppressLint import android.net.Uri import android.os.Bundle import android.view.View @@ -49,11 +50,29 @@ class ProfileImageUploadDialog() : BindingBottomSheetDialog uri?.let { - viewModel.setProfileImage(uri.toString()) - dismiss() + handleSelectedImage(uri) } } } + @SuppressLint("Recycle") + private fun handleSelectedImage(uri: Uri) { + val inputStream = requireContext().contentResolver.openInputStream(uri) + val sizeBytes = inputStream?.available() ?: 0 + val sizeMB = sizeBytes / (1024f * 1024f) + + if (sizeMB > 5) { + val fragment = UploadErrorDialog( + getString(R.string.upload_error_capacity_description), + getString(R.string.upload_error_capacity_5MB) + ) + fragment.show(parentFragmentManager, fragment.tag) + dismiss() + } else { + viewModel.setProfileImage(uri.toString()) + dismiss() + } + } + } \ No newline at end of file diff --git a/presentation/src/main/java/com/depromeet/presentation/home/UploadErrorDialog.kt b/presentation/src/main/java/com/depromeet/presentation/home/UploadErrorDialog.kt new file mode 100644 index 00000000..bf463221 --- /dev/null +++ b/presentation/src/main/java/com/depromeet/presentation/home/UploadErrorDialog.kt @@ -0,0 +1,48 @@ +package com.depromeet.presentation.home + +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.View +import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import com.depromeet.core.base.BindingDialogFragment +import com.depromeet.presentation.R +import com.depromeet.presentation.databinding.FragmentUploadErrorDialogBinding +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class UploadErrorDialog( + private val description: String, + private val discipline: String, +) : BindingDialogFragment( + layoutResId = R.layout.fragment_upload_error_dialog, + bindingInflater = FragmentUploadErrorDialogBinding::inflate +) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setStyle(DialogFragment.STYLE_NORMAL, R.style.TransparentDialogFragment) + + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + dialog?.window?.apply { + setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + val params = attributes + params.width = WindowManager.LayoutParams.MATCH_PARENT + params.height = WindowManager.LayoutParams.WRAP_CONTENT + attributes = params + } + with(binding) { + tvErrorDescription.text = description + tvErrorDiscipline.text = discipline + btErrorCheck.setOnClickListener { + dismiss() + } + } + + } +} \ No newline at end of file diff --git a/presentation/src/main/res/drawable/ic_solid.xml b/presentation/src/main/res/drawable/ic_solid.xml new file mode 100644 index 00000000..77547ad6 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_solid.xml @@ -0,0 +1,10 @@ + + + diff --git a/presentation/src/main/res/drawable/rect_gray900_fill_8.xml b/presentation/src/main/res/drawable/rect_gray900_fill_8.xml new file mode 100644 index 00000000..69b5453e --- /dev/null +++ b/presentation/src/main/res/drawable/rect_gray900_fill_8.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/fragment_upload_error_dialog.xml b/presentation/src/main/res/layout/fragment_upload_error_dialog.xml new file mode 100644 index 00000000..b9a69033 --- /dev/null +++ b/presentation/src/main/res/layout/fragment_upload_error_dialog.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index ae62d487..8bb74154 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -27,6 +27,11 @@ 닉네임은 최소 2글자에서 최대 10글자로 입력해 주세요. 정상적으로 입력 완료! + + 선택한 사진\n용량이 너무 커요 + 5MB에 맞게 다시 선택해주세요 + 확인 + 시야찾기 어떤 야구장의\n시야가 궁금하신가요? @@ -38,4 +43,5 @@ ""잠실야구장 시야보기"" + \ No newline at end of file diff --git a/presentation/src/main/res/values/themes.xml b/presentation/src/main/res/values/themes.xml index d561782c..6ffeb84c 100644 --- a/presentation/src/main/res/values/themes.xml +++ b/presentation/src/main/res/values/themes.xml @@ -24,4 +24,11 @@ true // Scrim이 있는 Modal @android:color/transparent + + \ No newline at end of file