From bdab419f12bddb0b2f6e38d30424b5ad63f93882 Mon Sep 17 00:00:00 2001 From: LEE YOU BIN Date: Fri, 3 Jan 2025 01:08:26 +0900 Subject: [PATCH] =?UTF-8?q?[feature/#1011]=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=84=9C=EB=B2=84=ED=86=B5=EC=8B=A0=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../socialaccount/SocialAccountViewModel.kt | 14 +++++++++++++- .../official/data/auth/mapper/SignUpMapper.kt | 12 ++++++++++++ .../official/data/auth/remote/api/AuthApi.kt | 6 ++++++ .../data/auth/remote/request/SignUpRequest.kt | 16 ++++++++++++++++ .../auth/remote/response/CreateCodeResponse.kt | 14 -------------- .../auth/repository/DefaultAuthRepository.kt | 6 ++++-- .../domain/auth/model/OriginalInformation.kt | 7 +++++++ .../official/domain/auth/model/SignUpCode.kt | 8 ++++++++ .../domain/auth/repository/AuthRepository.kt | 3 ++- 9 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 data/auth/src/main/java/org/sopt/official/data/auth/mapper/SignUpMapper.kt create mode 100644 data/auth/src/main/java/org/sopt/official/data/auth/remote/request/SignUpRequest.kt delete mode 100644 data/auth/src/main/java/org/sopt/official/data/auth/remote/response/CreateCodeResponse.kt create mode 100644 domain/auth/src/main/java/org/sopt/official/domain/auth/model/OriginalInformation.kt create mode 100644 domain/auth/src/main/java/org/sopt/official/domain/auth/model/SignUpCode.kt diff --git a/app/src/main/java/org/sopt/official/feature/auth/feature/socialaccount/SocialAccountViewModel.kt b/app/src/main/java/org/sopt/official/feature/auth/feature/socialaccount/SocialAccountViewModel.kt index b6cbc685c..d1e5b71ff 100644 --- a/app/src/main/java/org/sopt/official/feature/auth/feature/socialaccount/SocialAccountViewModel.kt +++ b/app/src/main/java/org/sopt/official/feature/auth/feature/socialaccount/SocialAccountViewModel.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.launch import org.sopt.official.domain.auth.model.OriginalInformation +import org.sopt.official.domain.auth.model.SignUpCode import org.sopt.official.domain.auth.repository.AuthRepository import org.sopt.official.feature.auth.model.AuthStatus import javax.inject.Inject @@ -32,7 +33,18 @@ class SocialAccountViewModel @Inject constructor( private fun signUp() { viewModelScope.launch { - + authRepository.signUp( + SignUpCode( + name = "홍길동", + phone = "010-9121-2121", + code = "eyadxcvc.dasd.wda", + authPlatform = GOOGLE + ) + ).onSuccess { + _sideEffect.emit(SocialAccountSideEffect.ShowToast("성공!!")) + }.onFailure { + _sideEffect.emit(SocialAccountSideEffect.ShowToast("실패ㅠㅠ")) + } } } diff --git a/data/auth/src/main/java/org/sopt/official/data/auth/mapper/SignUpMapper.kt b/data/auth/src/main/java/org/sopt/official/data/auth/mapper/SignUpMapper.kt new file mode 100644 index 000000000..733bdf728 --- /dev/null +++ b/data/auth/src/main/java/org/sopt/official/data/auth/mapper/SignUpMapper.kt @@ -0,0 +1,12 @@ +package org.sopt.official.data.auth.mapper + +import org.sopt.official.data.auth.remote.request.SignUpRequest +import org.sopt.official.domain.auth.model.SignUpCode + +fun SignUpCode.toRequest(): SignUpRequest = + SignUpRequest( + name = name, + phone = phone, + code = code, + authPlatform = authPlatform + ) \ No newline at end of file diff --git a/data/auth/src/main/java/org/sopt/official/data/auth/remote/api/AuthApi.kt b/data/auth/src/main/java/org/sopt/official/data/auth/remote/api/AuthApi.kt index 03d981e4e..32767f491 100644 --- a/data/auth/src/main/java/org/sopt/official/data/auth/remote/api/AuthApi.kt +++ b/data/auth/src/main/java/org/sopt/official/data/auth/remote/api/AuthApi.kt @@ -6,6 +6,7 @@ import org.sopt.official.data.auth.remote.request.CertificateCodeRequest import org.sopt.official.data.auth.remote.request.ChangeAccountRequest import org.sopt.official.data.auth.remote.request.CreateCodeRequest import org.sopt.official.data.auth.remote.request.SignInRequest +import org.sopt.official.data.auth.remote.request.SignUpRequest import org.sopt.official.data.auth.remote.response.CertificateCodeResponse import org.sopt.official.data.auth.remote.response.SignInResponse import retrofit2.http.Body @@ -28,6 +29,11 @@ internal interface AuthApi { @Body request: SignInRequest, ): BaseAuthResponse + @POST("/api/v1/auth/signup") + suspend fun signUp( + @Body request: SignUpRequest, + ): NonDataBaseAuthResponse + @PATCH("/api/v1/social/accounts") suspend fun changeAccount( @Body request: ChangeAccountRequest diff --git a/data/auth/src/main/java/org/sopt/official/data/auth/remote/request/SignUpRequest.kt b/data/auth/src/main/java/org/sopt/official/data/auth/remote/request/SignUpRequest.kt new file mode 100644 index 000000000..9ef005367 --- /dev/null +++ b/data/auth/src/main/java/org/sopt/official/data/auth/remote/request/SignUpRequest.kt @@ -0,0 +1,16 @@ +package org.sopt.official.data.auth.remote.request + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class SignUpRequest ( + @SerialName("name") + val name: String, + @SerialName("phone") + val phone: String, + @SerialName("code") + val code: String, + @SerialName("authPlatform") + val authPlatform: String +) \ No newline at end of file diff --git a/data/auth/src/main/java/org/sopt/official/data/auth/remote/response/CreateCodeResponse.kt b/data/auth/src/main/java/org/sopt/official/data/auth/remote/response/CreateCodeResponse.kt deleted file mode 100644 index c7c60b904..000000000 --- a/data/auth/src/main/java/org/sopt/official/data/auth/remote/response/CreateCodeResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.official.data.auth.remote.response - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class CreateCodeResponse( - @SerialName("success") - val success: Boolean, - @SerialName("message") - val message: String, - @SerialName("data") - val data :String? -) \ No newline at end of file diff --git a/data/auth/src/main/java/org/sopt/official/data/auth/repository/DefaultAuthRepository.kt b/data/auth/src/main/java/org/sopt/official/data/auth/repository/DefaultAuthRepository.kt index 9f8a0997e..c73ecd58d 100644 --- a/data/auth/src/main/java/org/sopt/official/data/auth/repository/DefaultAuthRepository.kt +++ b/data/auth/src/main/java/org/sopt/official/data/auth/repository/DefaultAuthRepository.kt @@ -8,6 +8,7 @@ import org.sopt.official.domain.auth.model.InitialInformation import org.sopt.official.domain.auth.model.OriginalInformation import org.sopt.official.domain.auth.model.SignInCode import org.sopt.official.domain.auth.model.SignInResult +import org.sopt.official.domain.auth.model.SignUpCode import org.sopt.official.domain.auth.model.VerificationResult import org.sopt.official.domain.auth.repository.AuthRepository import javax.inject.Inject @@ -27,10 +28,11 @@ internal class DefaultAuthRepository @Inject constructor( authApi.signIn(request.toRequest()).data.toDomain() } - override suspend fun signUp(): Result { - TODO("Not yet implemented") + override suspend fun signUp(request: SignUpCode): Result = runCatching { + authApi.signUp(request.toRequest()) } + override suspend fun changeAccount(request: OriginalInformation): Result = runCatching { authApi.changeAccount(request.toRequest()) } diff --git a/domain/auth/src/main/java/org/sopt/official/domain/auth/model/OriginalInformation.kt b/domain/auth/src/main/java/org/sopt/official/domain/auth/model/OriginalInformation.kt new file mode 100644 index 000000000..9655c88bc --- /dev/null +++ b/domain/auth/src/main/java/org/sopt/official/domain/auth/model/OriginalInformation.kt @@ -0,0 +1,7 @@ +package org.sopt.official.domain.auth.model + +data class OriginalInformation( + val phone: String, + val authPlatform: String, + val code: String, +) \ No newline at end of file diff --git a/domain/auth/src/main/java/org/sopt/official/domain/auth/model/SignUpCode.kt b/domain/auth/src/main/java/org/sopt/official/domain/auth/model/SignUpCode.kt new file mode 100644 index 000000000..f0136042e --- /dev/null +++ b/domain/auth/src/main/java/org/sopt/official/domain/auth/model/SignUpCode.kt @@ -0,0 +1,8 @@ +package org.sopt.official.domain.auth.model + +data class SignUpCode( + val name: String, + val phone: String, + val code: String, + val authPlatform: String +) \ No newline at end of file diff --git a/domain/auth/src/main/java/org/sopt/official/domain/auth/repository/AuthRepository.kt b/domain/auth/src/main/java/org/sopt/official/domain/auth/repository/AuthRepository.kt index da6de10d1..568f1e9af 100644 --- a/domain/auth/src/main/java/org/sopt/official/domain/auth/repository/AuthRepository.kt +++ b/domain/auth/src/main/java/org/sopt/official/domain/auth/repository/AuthRepository.kt @@ -5,6 +5,7 @@ import org.sopt.official.domain.auth.model.InitialInformation import org.sopt.official.domain.auth.model.OriginalInformation import org.sopt.official.domain.auth.model.SignInCode import org.sopt.official.domain.auth.model.SignInResult +import org.sopt.official.domain.auth.model.SignUpCode import org.sopt.official.domain.auth.model.VerificationResult interface AuthRepository { @@ -14,7 +15,7 @@ interface AuthRepository { suspend fun signIn(request: SignInCode): Result - suspend fun signUp(): Result + suspend fun signUp(request: SignUpCode): Result suspend fun changeAccount(request: OriginalInformation): Result } \ No newline at end of file