Skip to content

Commit 65c16a9

Browse files
committed
refactor :: 이메일 정규식 처리
1 parent 245c29d commit 65c16a9

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

feature/src/main/java/team/aliens/dms/android/feature/resetpassword/AccountVerificationScreen.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import team.aliens.dms.android.core.ui.topPadding
4949
import team.aliens.dms.android.core.ui.verticalPadding
5050
import team.aliens.dms.android.feature.R
5151
import team.aliens.dms.android.feature.resetpassword.navigation.ResetPasswordNavigator
52+
import team.aliens.dms.android.shared.validator.checkIfEmailValid
5253

5354
// TODO Pop backstack
5455
@OptIn(ExperimentalMaterial3Api::class)
@@ -80,6 +81,10 @@ fun AccountVerificationScreen(
8081
message = context.getString(R.string.reset_password_account_verification_error_user_not_found),
8182
)
8283

84+
ResetPasswordSideEffect.InvalidEmailFormat -> toast.showErrorToast(
85+
message = context.getString(R.string.reset_password_account_verification_error_invalid_email_format)
86+
)
87+
8388
ResetPasswordSideEffect.SendEmailVerificationCodeSuccess -> navigator.openResetPasswordEnterEmailVerificationCode()
8489

8590
else -> { /* explicit blank */ }
@@ -190,9 +195,10 @@ fun AccountVerificationScreen(
190195
.horizontalPadding()
191196
.bottomPadding(),
192197
onClick = {
198+
193199
viewModel.postIntent(
194200
ResetPasswordIntent.SendEmailVerificationCode(
195-
uiState.email, // TODO :: 이메일 정규식 적용
201+
uiState.email,
196202
),
197203
)
198204
},

feature/src/main/java/team/aliens/dms/android/feature/resetpassword/ResetPasswordViewModel.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package team.aliens.dms.android.feature.resetpassword
22

3-
import android.util.Log
3+
import android.util.Patterns
44
import androidx.lifecycle.viewModelScope
55
import dagger.hilt.android.lifecycle.HiltViewModel
66
import kotlinx.coroutines.Dispatchers
@@ -16,6 +16,7 @@ import team.aliens.dms.android.core.ui.mvi.UiState
1616
import team.aliens.dms.android.data.auth.model.EmailVerificationType
1717
import team.aliens.dms.android.data.auth.repository.AuthRepository
1818
import team.aliens.dms.android.data.student.repository.StudentRepository
19+
import team.aliens.dms.android.shared.validator.checkIfEmailValid
1920
import team.aliens.dms.android.shared.validator.checkIfPasswordValid
2021
import java.util.UUID
2122
import javax.inject.Inject
@@ -114,6 +115,10 @@ class ResetPasswordViewModel @Inject constructor(
114115

115116
private fun sendEmailVerificationCode(email: String) =
116117
viewModelScope.launch(Dispatchers.IO) {
118+
if (!checkIfEmailValid(email)) {
119+
postSideEffect(ResetPasswordSideEffect.InvalidEmailFormat)
120+
return@launch
121+
}
117122
runCatching {
118123
authRepository.sendEmailVerificationCode(
119124
email = email,
@@ -246,4 +251,5 @@ sealed class ResetPasswordSideEffect : SideEffect() {
246251
data object EmailVerificationSessionReset : ResetPasswordSideEffect()
247252
data object EmailVerificationSessionResetFailed : ResetPasswordSideEffect()
248253
data object EmailVerificationUserNotFound : ResetPasswordSideEffect()
254+
data object InvalidEmailFormat : ResetPasswordSideEffect()
249255
}

feature/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@
378378
<string name="reset_password_account_verification_enter_account_id_invalid_format">아이디 형식이 일치하지 않습니다.</string>
379379
<string name="reset_password_account_verification_error_too_many_request">요청이 너무 많습니다 잠시 후 다시 시도해주세요</string>
380380
<string name="reset_password_account_verification_error_user_not_found">이름이나 이메일이 일치하지 않습니다.</string>
381+
<string name="reset_password_account_verification_error_invalid_email_format">이메일 형식에 맞춰 작성해주세요</string>
381382
<string name="reset_password_account_verification_enter_student_name">이름 입력</string>
382383
<string name="reset_password_account_verification_enter_email">이메일 입력</string>
383384
<string name="reset_password_set_password_password_success_changed">비밀번호가 변경되었습니다.</string>

0 commit comments

Comments
 (0)