diff --git a/feature/signup/src/main/java/co/kr/tnt/signup/trainer/TrainerProfileSetupScreen.kt b/feature/signup/src/main/java/co/kr/tnt/signup/trainer/TrainerProfileSetupScreen.kt index 74fc4995..21f8ca2b 100644 --- a/feature/signup/src/main/java/co/kr/tnt/signup/trainer/TrainerProfileSetupScreen.kt +++ b/feature/signup/src/main/java/co/kr/tnt/signup/trainer/TrainerProfileSetupScreen.kt @@ -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 @@ -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, @@ -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( @@ -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 + }, + ) + } } }