diff --git a/app/src/main/java/com/wafflestudio/siksha2/ui/common/ImageBottomDialog.kt b/app/src/main/java/com/wafflestudio/siksha2/ui/common/ImageBottomDialog.kt index b1c1a0435..7c59875c0 100644 --- a/app/src/main/java/com/wafflestudio/siksha2/ui/common/ImageBottomDialog.kt +++ b/app/src/main/java/com/wafflestudio/siksha2/ui/common/ImageBottomDialog.kt @@ -11,10 +11,15 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.wafflestudio.siksha2.R import com.wafflestudio.siksha2.databinding.DialogProfileImageBinding -class ImageBottomDialog( - private val onGallerySelected: () -> Unit, - private val onDefaultImageSelected: () -> Unit -) : BottomSheetDialogFragment() { +class ImageBottomDialog : BottomSheetDialogFragment() { + + interface Listener { + fun onGallerySelected() + fun onDefaultImageSelected() + } + + private val listener: Listener? + get() = parentFragment as? Listener ?: activity as? Listener override fun onCreateView( inflater: LayoutInflater, @@ -24,12 +29,12 @@ class ImageBottomDialog( val binding = DialogProfileImageBinding.inflate(inflater, container, false) binding.albumRow.setOnClickListener { - onGallerySelected() + listener?.onGallerySelected() dismiss() } binding.defaultImageRow.setOnClickListener { - onDefaultImageSelected() + listener?.onDefaultImageSelected() dismiss() } diff --git a/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/DailyRestaurantFragment.kt b/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/DailyRestaurantFragment.kt index 4f90d3247..d21cc55c5 100644 --- a/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/DailyRestaurantFragment.kt +++ b/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/DailyRestaurantFragment.kt @@ -341,12 +341,12 @@ class DailyRestaurantFragment : Fragment() { } binding.menuFilter.setOnClickListener { - val filterDialog = FilterDialogFragment(FilterMode.FULL) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.FULL) filterDialog.show(parentFragmentManager, "FilterDialog") } binding.filterDistance.setOnClickListener { - val filterDialog = FilterDialogFragment(FilterMode.DISTANCE) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.DISTANCE) filterDialog.show(parentFragmentManager, "FilterDialog") val permission = Manifest.permission.ACCESS_FINE_LOCATION @@ -356,17 +356,17 @@ class DailyRestaurantFragment : Fragment() { ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED ) { requestPermission { - val filterDialog = FilterDialogFragment(FilterMode.DISTANCE) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.DISTANCE) filterDialog.show(parentFragmentManager, "FilterDialog") } } else { - val filterDialog = FilterDialogFragment(FilterMode.DISTANCE) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.DISTANCE) filterDialog.show(parentFragmentManager, "FilterDialog") } } binding.filterPrice.setOnClickListener { - val filterDialog = FilterDialogFragment(FilterMode.PRICE) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.PRICE) filterDialog.show(parentFragmentManager, "FilterDialog") } @@ -379,12 +379,12 @@ class DailyRestaurantFragment : Fragment() { } binding.filterRating.setOnClickListener { - val filterDialog = FilterDialogFragment(FilterMode.RATING) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.RATING) filterDialog.show(parentFragmentManager, "FilterDialog") } binding.filterCategory.setOnClickListener { - val filterDialog = FilterDialogFragment(FilterMode.CATEGORY) + val filterDialog = FilterDialogFragment.newInstance(FilterMode.CATEGORY) filterDialog.show(parentFragmentManager, "FilterDialog") } diff --git a/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/FilterDialogFragment.kt b/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/FilterDialogFragment.kt index 716a28870..9436b99e1 100644 --- a/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/FilterDialogFragment.kt +++ b/app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/FilterDialogFragment.kt @@ -35,9 +35,23 @@ import java.util.Locale import javax.inject.Inject @AndroidEntryPoint -class FilterDialogFragment( - private val mode: FilterMode -) : DialogFragment() { +class FilterDialogFragment() : DialogFragment() { + companion object { + private const val DEFAULT_MODE = "FULL" + + fun newInstance(type: FilterMode): FilterDialogFragment { + return FilterDialogFragment().apply { + arguments = Bundle().apply { + putString(DEFAULT_MODE, type.name) + } + } + } + } + + private val mode: FilterMode by lazy { + enumValueOf(requireArguments().getString(DEFAULT_MODE)!!) + } + @Inject lateinit var mixpanelManager: MixpanelManager diff --git a/app/src/main/java/com/wafflestudio/siksha2/ui/main/setting/userAccount/UserProfileFragment.kt b/app/src/main/java/com/wafflestudio/siksha2/ui/main/setting/userAccount/UserProfileFragment.kt index 8a41b81e7..4ca090165 100644 --- a/app/src/main/java/com/wafflestudio/siksha2/ui/main/setting/userAccount/UserProfileFragment.kt +++ b/app/src/main/java/com/wafflestudio/siksha2/ui/main/setting/userAccount/UserProfileFragment.kt @@ -29,7 +29,7 @@ import kotlinx.coroutines.launch import timber.log.Timber import kotlin.properties.Delegates -class UserProfileFragment : Fragment() { +class UserProfileFragment : Fragment(), ImageBottomDialog.Listener { private lateinit var binding: FragmentUserProfileBinding private val settingViewModel: SettingViewModel by activityViewModels() @@ -138,10 +138,7 @@ class UserProfileFragment : Fragment() { } private fun showImagePickerBottomDialog() { - val bottomSheetFragment = ImageBottomDialog( - onGallerySelected = { changeToGalleryImage() }, - onDefaultImageSelected = { changeToDefaultImage() } - ) + val bottomSheetFragment = ImageBottomDialog() bottomSheetFragment.show(childFragmentManager, bottomSheetFragment.tag) } @@ -170,12 +167,12 @@ class UserProfileFragment : Fragment() { imm.hideSoftInputFromWindow(binding.root.windowToken, 0) } - private fun changeToGalleryImage() { + override fun onGallerySelected() { pickImage.launch("image/*") imageChanged = true } - private fun changeToDefaultImage() { + override fun onDefaultImageSelected() { settingViewModel.updateImageUri(null) imageView.apply { setImageResource(R.drawable.ic_rice_bowl)