Dialog.kt
@Composable
fun InquiryDialog(viewModel: MainViewModel, onChangeState: () -> Unit) {
var inquiryContent by remember {
mutableStateOf("")
}
AlertDialog(
onDismissRequest = { onChangeState() },
title = { Text(text = "문의", modifier = Modifier.fillMaxWidth(), textAlign = TextAlign.Center) },
text = {
Column {
``` Spacer(modifier = Modifier.height(15.dp))
Row(verticalAlignment = Alignment.CenterVertically) {
Text(text = "문의 내용", modifier = Modifier.padding(bottom = 5.dp, end = 7.dp))
TextField(value = inquiryContent, onValueChange = { inquiryContent = it })
}
}
},
dismissButton = {
TextButton(onClick = { onChangeState() }) {
Text(text = "취소")
}
},
confirmButton = {
TextButton(
onClick = {
onChangeState()
viewModel.sendEmail(inquiryContent)
}) {
Text(text = "문의")
}
}
)
}
MainViewModel.kt
class MainViewModel: ViewModel() {
private val _event = MutableSharedFlow<MainEvent>()
val event = _event.asSharedFlow()
var emailContent = MutableStateFlow("")
fun sendEmail(content: String = viewModelScope.launch {
emailContent.value = content
_event.emit(MainEvent.SendEmail) }
sealed class MainEvent{
object SendEmail : MainEvent()
object ToStartActivity : MainEvent()
}
MainActivity
class MainActivity : ComponentActivity() {
private val viewModel by viewModels<MainViewModel>()
private val auth = FirebaseAuth.getInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
launch {
viewModel.event.collect { event ->
when (event) {
MainViewModel.MainEvent.SendEmail -> sendEmail(viewModel.emailContent.value, viewModel.userEmail.value)
}
}
}
}
}
private fun sendEmail(content: String){
val email = auth.currentUser?.email
val managerEmail = "abc@gmail.com"
val uri = Uri.parse("mailto:$managerEmail")
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra(Intent.EXTRA_SUBJECT, "문의")
intent.putExtra(Intent.EXTRA_TEXT, "문의 내용 : $content")
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
startActivity(intent)
}