diff --git a/presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt b/presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt index efce96dc..7b3b5e31 100644 --- a/presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt +++ b/presentation/src/main/java/daily/dayo/presentation/screen/settings/SettingsScreen.kt @@ -1,5 +1,8 @@ package daily.dayo.presentation.screen.settings +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.content.pm.PackageManager import android.os.Build import androidx.annotation.DrawableRes @@ -27,8 +30,11 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color.Companion.White @@ -53,6 +59,7 @@ import daily.dayo.presentation.theme.White_FFFFFF import daily.dayo.presentation.view.RoundImageView import daily.dayo.presentation.view.TopNavigation import daily.dayo.presentation.view.TopNavigationAlign +import daily.dayo.presentation.view.dialog.ConfirmDialog import daily.dayo.presentation.viewmodel.ProfileViewModel @Composable @@ -66,7 +73,10 @@ fun SettingsScreen( onInformationClick: () -> Unit = {}, profileViewModel: ProfileViewModel = hiltViewModel() ) { + val context = LocalContext.current val profileInfo = profileViewModel.profileInfo.observeAsState() + var showInquiryGuideDialog by remember { mutableStateOf(false) } + val inquiryEmail = stringResource(id = R.string.inquiry_email) LaunchedEffect(Unit) { profileViewModel.requestMyProfile() @@ -80,8 +90,21 @@ fun SettingsScreen( onPasswordChangeClick = onPasswordChangeClick, onNoticesClick = onNoticesClick, onBlockUsersClick = onBlockUsersClick, + onInquiryClick = { + copyInquiryEmail(context, inquiryEmail) + showInquiryGuideDialog = true + }, onInformationClick = onInformationClick, ) + + if (showInquiryGuideDialog) { + ConfirmDialog( + title = stringResource(R.string.setting_contact_message), + description = stringResource(R.string.setting_contact_explanation_message), + onClickCancel = null, + onClickConfirm = { showInquiryGuideDialog = false }, + ) + } } @Composable @@ -93,6 +116,7 @@ private fun SettingsScreen( onPasswordChangeClick: () -> Unit, onNoticesClick: () -> Unit = {}, onBlockUsersClick: () -> Unit, + onInquiryClick: () -> Unit = {}, onInformationClick: () -> Unit = {}, ) { Scaffold( @@ -134,7 +158,7 @@ private fun SettingsScreen( null, // Divider SettingItem(R.string.setting_menu_notice, R.drawable.ic_setting_notice, onClickMenu = onNoticesClick), SettingItem(R.string.setting_menu_information, R.drawable.ic_setting_information, onClickMenu = onInformationClick, description = appVersion), - SettingItem(R.string.setting_menu_contact, R.drawable.ic_setting_contact, onClickMenu = {}), + SettingItem(R.string.setting_menu_contact, R.drawable.ic_setting_contact, onClickMenu = onInquiryClick), null // Divider ) @@ -276,6 +300,15 @@ private fun SettingMenu( } } +fun copyInquiryEmail( + context: Context, + inquiryEmail: String, +) { + val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipData = ClipData.newPlainText("inquiry_email", inquiryEmail) + clipboardManager.setPrimaryClip(clipData) +} + @Preview @Composable private fun PreviewSettingsScreen() { diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index ba182b9b..32bfec87 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ DAYO Dayo Logo + dayo.jkhj@gmail.com 피드 @@ -489,8 +490,8 @@ 계정을 로그아웃 할까요? 계정을 삭제할까요? 모든 정보가 삭제되며, 복구가 불가능합니다. - 메일 주소 복사 완료 - 클립보드에 저장된 메일 주소로 문의 주세요 + 메일 주소 복사 완료! + 클립보드에 저장된 메일 주소로 문의해 주세요. 비밀번호 변경 차단 관리 알림