Skip to content

Commit ba52d19

Browse files
authored
위치 권한 팝업 수정 (#147)
* 위치 권한 요청 팝업 반복 요청 해결 * 거리 필터 클릭 시 위치 권한 요청하도록 수정 * import 정리
1 parent 91d6d25 commit ba52d19

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

app/src/main/java/com/wafflestudio/siksha2/ui/main/restaurant/DailyRestaurantFragment.kt

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import android.os.Bundle
77
import android.view.*
88
import androidx.activity.result.contract.ActivityResultContracts
99
import androidx.compose.runtime.collectAsState
10-
import androidx.core.app.ActivityCompat
1110
import androidx.core.content.ContextCompat
1211
import androidx.fragment.app.Fragment
1312
import 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

Comments
 (0)