Skip to content

Commit

Permalink
[TNT-116] feat: 트레이너 프로필 설정 화면 내 권한 부여 여부 확인 로직 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
hoyahozz committed Jan 21, 2025
1 parent 9189036 commit 8372cdc
Showing 1 changed file with 41 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -28,14 +30,25 @@ import co.kr.tnt.designsystem.component.TnTTopBar
import co.kr.tnt.designsystem.component.button.TnTBottomButton
import co.kr.tnt.designsystem.theme.TnTTheme
import co.kr.tnt.signup.common.component.ProfileImageSection
import co.kr.tnt.ui.extensions.moveToAppSetting
import co.kr.tnt.ui.permission.PermissionRequestDialog
import co.kr.tnt.ui.permission.TnTPermission
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberMultiplePermissionsState

@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun TrainerProfileSetupScreen() {
val context = LocalContext.current

// TODO 상태 관리 따로 빼기
val maxLength = 15
var text by remember { mutableStateOf("") }
val isWarning by remember { derivedStateOf { text.length > maxLength } }

var showPermissionRequestDialog by rememberSaveable { mutableStateOf(false) }
val mediaPermissions = rememberMultiplePermissionsState(TnTPermission.MEDIA_ACCESS.values)

Scaffold(
topBar = { TnTTopBar(onBackClick = {}) },
containerColor = TnTTheme.colors.commonColors.Common0,
Expand All @@ -58,7 +71,14 @@ fun TrainerProfileSetupScreen() {
ProfileImageSection(
modifier = Modifier.fillMaxWidth(),
defaultImage = R.drawable.img_default_profile_trainer,
onImageSelected = { },
onImageSelected = onImageSelected@{
if (TnTPermission.MEDIA_ACCESS.isAllGranted(mediaPermissions)) {
// TODO 이미지 피커 이동
return@onImageSelected
}

showPermissionRequestDialog = true
},
)
Spacer(Modifier.padding(top = 60.dp))
TnTLabeledTextField(
Expand All @@ -85,6 +105,26 @@ fun TrainerProfileSetupScreen() {
onClick = { },
)
}

if (showPermissionRequestDialog) {
PermissionRequestDialog(
permission = TnTPermission.MEDIA_ACCESS,
isPermanentlyDenied = mediaPermissions.shouldShowRationale,
onOkButtonClick = onOkButtonClick@{ isPermanentlyDenied ->
showPermissionRequestDialog = false

if (isPermanentlyDenied.not()) {
mediaPermissions.launchMultiplePermissionRequest()
return@onOkButtonClick
}

context.moveToAppSetting()
},
onDismissRequest = {
showPermissionRequestDialog = false
},
)
}
}
}

Expand Down

0 comments on commit 8372cdc

Please sign in to comment.