Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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()
Expand All @@ -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
Expand All @@ -93,6 +116,7 @@ private fun SettingsScreen(
onPasswordChangeClick: () -> Unit,
onNoticesClick: () -> Unit = {},
onBlockUsersClick: () -> Unit,
onInquiryClick: () -> Unit = {},
onInformationClick: () -> Unit = {},
) {
Scaffold(
Expand Down Expand Up @@ -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
)

Expand Down Expand Up @@ -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() {
Expand Down
5 changes: 3 additions & 2 deletions presentation/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<resources>
<string name="app_name">DAYO</string>
<string name="app_logo">Dayo Logo</string>
<string name="inquiry_email">[email protected]</string>

<string name="home">홈</string>
<string name="feed">피드</string>
Expand Down Expand Up @@ -489,8 +490,8 @@
<string name="setting_logout_message">계정을 로그아웃 할까요?</string>
<string name="setting_withdraw_message">계정을 삭제할까요?</string>
<string name="setting_withdraw_explanation_message">모든 정보가 삭제되며, 복구가 불가능합니다.</string>
<string name="setting_contact_message">메일 주소 복사 완료</string>
<string name="setting_contact_explanation_message">클립보드에 저장된 메일 주소로 문의 주세요</string>
<string name="setting_contact_message">메일 주소 복사 완료!</string>
<string name="setting_contact_explanation_message">클립보드에 저장된 메일 주소로 문의해 주세요.</string>
<string name="setting_menu_change_password">비밀번호 변경</string>
<string name="setting_menu_block_user">차단 관리</string>
<string name="setting_menu_notification">알림</string>
Expand Down