@@ -7,7 +7,6 @@ import android.os.Bundle
77import android.view.*
88import androidx.activity.result.contract.ActivityResultContracts
99import androidx.compose.runtime.collectAsState
10- import androidx.core.app.ActivityCompat
1110import androidx.core.content.ContextCompat
1211import androidx.fragment.app.Fragment
1312import androidx.fragment.app.activityViewModels
@@ -52,7 +51,9 @@ class DailyRestaurantFragment : Fragment() {
5251 private lateinit var locationRequest: LocationRequest
5352 private lateinit var locationCallback: LocationCallback
5453
55- private val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts .RequestPermission ()) { isGranted ->
54+ private val requestPermissionLauncher = registerForActivityResult(
55+ ActivityResultContracts .RequestPermission ()
56+ ) { isGranted ->
5657 if (isGranted) {
5758 // TODO: placeholder 삭제
5859 showToast(" 위치 권한이 허용되었습니다." )
@@ -427,6 +428,21 @@ class DailyRestaurantFragment : Fragment() {
427428 binding.filterDistance.setOnClickListener {
428429 val filterDialog = FilterDialogFragment (FilterMode .DISTANCE )
429430 filterDialog.show(parentFragmentManager, " FilterDialog" )
431+
432+ val permission = Manifest .permission.ACCESS_FINE_LOCATION
433+ val context = requireContext()
434+
435+ if (
436+ ContextCompat .checkSelfPermission(context, permission) != PackageManager .PERMISSION_GRANTED
437+ ) {
438+ requestPermission {
439+ val filterDialog = FilterDialogFragment (FilterMode .DISTANCE )
440+ filterDialog.show(parentFragmentManager, " FilterDialog" )
441+ }
442+ } else {
443+ val filterDialog = FilterDialogFragment (FilterMode .DISTANCE )
444+ filterDialog.show(parentFragmentManager, " FilterDialog" )
445+ }
430446 }
431447
432448 binding.filterPrice.setOnClickListener {
@@ -464,20 +480,6 @@ class DailyRestaurantFragment : Fragment() {
464480 vm.updateLocation(location)
465481 }
466482 }
467-
468- if (ActivityCompat .checkSelfPermission(
469- requireContext(),
470- Manifest .permission.ACCESS_FINE_LOCATION
471- ) != PackageManager .PERMISSION_GRANTED &&
472- ActivityCompat .checkSelfPermission(requireContext(), Manifest .permission.ACCESS_COARSE_LOCATION ) != PackageManager .PERMISSION_GRANTED
473- ) {
474- requestPermission {
475- // TODO: placeholder 삭제
476- showToast(" 위치 권한이 허용되었습니다." )
477- }
478- } else {
479- fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, requireActivity().mainLooper)
480- }
481483 }
482484
483485 private fun setUpFestival () {
@@ -508,10 +510,15 @@ class DailyRestaurantFragment : Fragment() {
508510 private fun requestPermission (onGranted : () -> Unit ) {
509511 // TODO: SDK 버전에 따른 처리 필요한지 확인
510512 val permission = Manifest .permission.ACCESS_FINE_LOCATION
511- if (ContextCompat .checkSelfPermission(requireActivity(), permission) == PackageManager .PERMISSION_GRANTED ) {
512- onGranted()
513- } else {
514- requestPermissionLauncher.launch(permission)
513+ val context = requireContext()
514+
515+ when {
516+ ContextCompat .checkSelfPermission(context, permission) == PackageManager .PERMISSION_GRANTED -> {
517+ onGranted()
518+ }
519+ else -> {
520+ requestPermissionLauncher.launch(permission)
521+ }
515522 }
516523 }
517524
0 commit comments