Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature/#38] : 다이얼로그 추가 #40

Merged
merged 9 commits into from
Jan 24, 2025

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -63,25 +63,24 @@ fun NoostakDialog(
modifier = Modifier.height(
when (dialogType) {
DialogType.LOGOUT -> 41.dp
DialogType.WITHDRAWAL -> 30.dp
DialogType.APPOINTMENT, DialogType.WITHDRAWAL -> 30.dp
else -> 24.dp
}
)
)
Text(
text = stringResource(dialogType.content),
textAlign = TextAlign.Center,
style = if (dialogType == DialogType.LOGOUT || dialogType == DialogType.WITHDRAWAL) {
NoostakTheme.typography.b4Regular
} else {
NoostakTheme.typography.c3Regular
style = when (dialogType) {
DialogType.LOGOUT, DialogType.WITHDRAWAL, DialogType.APPOINTMENT -> NoostakTheme.typography.b4Regular
else -> NoostakTheme.typography.c3Regular
}
)
Spacer(
modifier = Modifier.height(
when (dialogType) {
DialogType.LOGOUT -> 36.dp
DialogType.WITHDRAWAL -> 26.dp
DialogType.APPOINTMENT, DialogType.WITHDRAWAL -> 26.dp
else -> 20.dp
}
)
Expand Down Expand Up @@ -154,6 +153,6 @@ fun NoostakDialog(
@Composable
fun NoostakDialogPreview() {
NoostakAndroidTheme {
NoostakDialog(dialogType = DialogType.LOGOUT, onClick = {}, onDismissRequest = {})
NoostakDialog(dialogType = DialogType.APPOINTMENT, onClick = {}, onDismissRequest = {})
}
}
5 changes: 5 additions & 0 deletions core/src/main/java/com/sopt/core/type/DialogType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,10 @@ enum class DialogType(
content = R.string.text_dialog_type_withdrawal_content,
dismissText = R.string.text_dialog_type_dismiss_cancel,
confirmText = R.string.text_dialog_type_confirm_withdrawal
),
APPOINTMENT(
content = R.string.text_dialog_type_appointment_content,
dismissText = R.string.text_dialog_type_appointment_dismiss,
confirmText = R.string.text_dialog_type_appointment_confirm
)
}
3 changes: 3 additions & 0 deletions core/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,8 @@
<string name="text_dialog_type_confirm_withdrawal">탈퇴하기</string>
<string name="text_dialog_type_login_kakao_content">네트워크 문제로\n카카오톡 로그인을 연결하지 못했습니다.\n다시 시도하시겠습니까?</string>
<string name="text_dialog_type_login_google_content">네트워크 문제로\nGoogle 로그인을 연결하지 못했습니다.\n다시 시도하시겠습니까?</string>
<string name="text_dialog_type_appointment_content">아직 등록된 일정이 없어요.\n일정을 등록하러 갈까요?</string>
<string name="text_dialog_type_appointment_dismiss">나중에 등록하기</string>
<string name="text_dialog_type_appointment_confirm">일정 등록하기</string>

</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sopt.core.designsystem.component.dialog.AppointmentDialog
import com.sopt.core.designsystem.component.dialog.NoostakDialog
import com.sopt.core.designsystem.component.topappbar.NoostakTopAppBar
import com.sopt.core.designsystem.theme.NoostakAndroidTheme
import com.sopt.core.designsystem.theme.NoostakTheme
import com.sopt.core.extension.noRippleClickable
import com.sopt.core.extension.showIf
import com.sopt.core.type.DialogType
import com.sopt.domain.entity.AppointmentEntity
import com.sopt.domain.entity.PeriodEntity
import com.sopt.domain.entity.TimeTableEntity
Expand Down Expand Up @@ -100,22 +101,20 @@ fun AppointmentRoute(
}

if (showDialog) {
AppointmentDialog(
onDismissRequest = {
NoostakDialog(
dialogType = DialogType.APPOINTMENT,
onClick = {
appointmentViewModel.apply {
showDialog(false)
navigateUp()
navigateToAppointmentCheck(groupId, appointmentsId, appointmentName)
}
},
onConfirmButtonClick = {
onDismissRequest = {
appointmentViewModel.apply {
showDialog(false)
navigateToAppointmentCheck(groupId, appointmentsId, appointmentName)
navigateUp()
}
},
description = stringResource(R.string.dialog_appointment_description),
dismissText = stringResource(R.string.dialog_appointment_dismiss),
confirmButtonText = stringResource(R.string.dialog_appointment_confirm)
}
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sopt.core.designsystem.component.dialog.NoostakDialog
import com.sopt.core.designsystem.theme.NoostakAndroidTheme
import com.sopt.core.designsystem.theme.NoostakTheme
import com.sopt.core.extension.toast
import com.sopt.core.type.DialogType
import com.sopt.presentation.R
import com.sopt.presentation.auth.component.LoginButton

Expand All @@ -37,28 +39,37 @@ fun LoginRoute(
loginViewModel: LoginViewModel = hiltViewModel()
) {
val context = LocalContext.current

val showDialog by loginViewModel.showDialog.collectAsStateWithLifecycle()
val dialogDescription by loginViewModel.dialogDescription.collectAsStateWithLifecycle()

LaunchedEffect(loginViewModel.sideEffects) {
loginViewModel.sideEffects.collect { sideEffect ->
when (sideEffect) {
is LoginSideEffect.NavigateToHome -> navigateToHome()
is LoginSideEffect.NavigateSignUp -> navigateToSignUp(sideEffect.authId)
is LoginSideEffect.ShowToast -> context.toast(sideEffect.message)
is LoginSideEffect.ShowDialog -> loginViewModel.showDialog(
sideEffect.dialogType,
true
)
}
}
}

if (showDialog) {
LoginFailureDialog(
onRetryRequest = { loginViewModel.googleLogin(context) },
onDismissRequest = { loginViewModel.showFailLoginDialog(false) },
description = stringResource(R.string.dialog_login_description, dialogDescription),
retryText = stringResource(R.string.dialog_login_retry),
dismissText = stringResource(R.string.dialog_login_dismiss)
)
showDialog.let { (dialogType, isVisible) ->
if (isVisible) {
NoostakDialog(
dialogType = dialogType,
onClick = {
loginViewModel.showDialog(dialogType, false)
when (dialogType) {
DialogType.LOGIN_KAKAO -> loginViewModel.kakaoLogin(context)
DialogType.LOGIN_GOOGLE -> loginViewModel.googleLogin(context)
else -> Unit
}
},
onDismissRequest = { loginViewModel.showDialog(dialogType, false) }
)
}
}

LoginScreen(
Expand All @@ -77,9 +88,9 @@ fun LoginScreen(
Column(
modifier = Modifier
.fillMaxSize()
.padding(dimensionResource(R.dimen.horizontal_padding))
.statusBarsPadding()
.navigationBarsPadding(),
.navigationBarsPadding()
.padding(dimensionResource(R.dimen.horizontal_padding)),
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.weight(1f))
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.sopt.presentation.auth.login

import androidx.annotation.StringRes
import com.sopt.core.type.DialogType

sealed class LoginSideEffect {
data object NavigateToHome : LoginSideEffect()
Expand All @@ -9,4 +10,6 @@ sealed class LoginSideEffect {
@StringRes val message: Int,
val args: String? = null
) : LoginSideEffect()

data class ShowDialog(val dialogType: DialogType) : LoginSideEffect()
}
Loading
Loading