From 8b2317e0cceb07f1cf6e91b509811e6510365864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=A7=84=EC=84=B1?= Date: Fri, 4 Oct 2024 15:33:53 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20#23=20feat=20:=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=83=88=ED=87=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/model/request/UserSimpleInfoQuery.kt | 6 ++++++ .../java/com/masshow/data/remote/AuthApi.kt | 8 +++++++ .../masshow/data/repository/AuthRepository.kt | 5 +++++ .../data/repository/AuthRepositoryImpl.kt | 7 ++++++- .../ui/main/mypage/MyPageViewModel.kt | 21 ++++++++++++++++++- 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 data/src/main/java/com/masshow/data/model/request/UserSimpleInfoQuery.kt diff --git a/data/src/main/java/com/masshow/data/model/request/UserSimpleInfoQuery.kt b/data/src/main/java/com/masshow/data/model/request/UserSimpleInfoQuery.kt new file mode 100644 index 0000000..9772908 --- /dev/null +++ b/data/src/main/java/com/masshow/data/model/request/UserSimpleInfoQuery.kt @@ -0,0 +1,6 @@ +package com.masshow.data.model.request + +data class UserSimpleInfoQuery( + val userId: Long, + val nickname: String +) diff --git a/data/src/main/java/com/masshow/data/remote/AuthApi.kt b/data/src/main/java/com/masshow/data/remote/AuthApi.kt index a4a4d95..711f9d5 100644 --- a/data/src/main/java/com/masshow/data/remote/AuthApi.kt +++ b/data/src/main/java/com/masshow/data/remote/AuthApi.kt @@ -2,11 +2,14 @@ package com.masshow.data.remote import com.masshow.data.model.request.LoginRequest import com.masshow.data.model.request.SignupRequest +import com.masshow.data.model.request.UserSimpleInfoQuery import com.masshow.data.model.response.BaseResponse import com.masshow.data.model.response.LoginResponse import retrofit2.Response import retrofit2.http.Body +import retrofit2.http.DELETE import retrofit2.http.POST +import retrofit2.http.Query interface AuthApi { @@ -19,4 +22,9 @@ interface AuthApi { suspend fun signup( @Body body: SignupRequest ): Response> + + @DELETE("/user/account") + suspend fun withdrawal( + @Query("userSimpleInfo") userSimpleInfo : UserSimpleInfoQuery + ): Response> } \ No newline at end of file diff --git a/data/src/main/java/com/masshow/data/repository/AuthRepository.kt b/data/src/main/java/com/masshow/data/repository/AuthRepository.kt index fb33d42..e737a19 100644 --- a/data/src/main/java/com/masshow/data/repository/AuthRepository.kt +++ b/data/src/main/java/com/masshow/data/repository/AuthRepository.kt @@ -3,6 +3,7 @@ package com.masshow.data.repository import com.masshow.data.model.BaseState import com.masshow.data.model.request.LoginRequest import com.masshow.data.model.request.SignupRequest +import com.masshow.data.model.request.UserSimpleInfoQuery import com.masshow.data.model.response.LoginResponse interface AuthRepository { @@ -15,6 +16,10 @@ interface AuthRepository { body: SignupRequest ): BaseState + suspend fun withdrawal( + query: UserSimpleInfoQuery + ): BaseState + suspend fun getAccessToken(): String? suspend fun getRefreshToken(): String? suspend fun getUserId(): Long? diff --git a/data/src/main/java/com/masshow/data/repository/AuthRepositoryImpl.kt b/data/src/main/java/com/masshow/data/repository/AuthRepositoryImpl.kt index fecc9d4..ad89fe4 100644 --- a/data/src/main/java/com/masshow/data/repository/AuthRepositoryImpl.kt +++ b/data/src/main/java/com/masshow/data/repository/AuthRepositoryImpl.kt @@ -11,6 +11,7 @@ import com.masshow.data.Constants import com.masshow.data.model.BaseState import com.masshow.data.model.request.LoginRequest import com.masshow.data.model.request.SignupRequest +import com.masshow.data.model.request.UserSimpleInfoQuery import com.masshow.data.model.response.LoginResponse import com.masshow.data.model.runRemote import com.masshow.data.remote.AuthApi @@ -38,6 +39,10 @@ class AuthRepositoryImpl @Inject constructor( api.signup(body) } + override suspend fun withdrawal(query: UserSimpleInfoQuery): BaseState = runRemote { + api.withdrawal(query) + } + override suspend fun getAccessToken(): String? { return dataStore.data.map { prefs -> prefs[ACCESS_TOKEN_KEY] @@ -111,7 +116,7 @@ class AuthRepositoryImpl @Inject constructor( } override suspend fun clear() { - dataStore.edit{ prefs -> + dataStore.edit { prefs -> prefs.clear() } } diff --git a/presentation/src/main/java/com/masshow/presentation/ui/main/mypage/MyPageViewModel.kt b/presentation/src/main/java/com/masshow/presentation/ui/main/mypage/MyPageViewModel.kt index 5a09e68..4436fdd 100644 --- a/presentation/src/main/java/com/masshow/presentation/ui/main/mypage/MyPageViewModel.kt +++ b/presentation/src/main/java/com/masshow/presentation/ui/main/mypage/MyPageViewModel.kt @@ -2,6 +2,8 @@ package com.masshow.presentation.ui.main.mypage import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.masshow.data.model.BaseState +import com.masshow.data.model.request.UserSimpleInfoQuery import com.masshow.data.repository.AuthRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow @@ -33,7 +35,24 @@ class MyPageViewModel @Inject constructor( } fun withdrawal() { - + viewModelScope.launch { + authRepository.getUserId()?.let { id -> + authRepository.getNick()?.let { nick -> + authRepository.withdrawal(UserSimpleInfoQuery(id, nick)).let { + when (it) { + is BaseState.Success -> { + _event.emit(MyPageEvent.ShowToastMessage("회원 탈퇴 성공")) + _event.emit(MyPageEvent.NavigateToLogin) + } + + is BaseState.Error -> { + _event.emit(MyPageEvent.ShowToastMessage(it.message)) + } + } + } + } + } + } } fun navigateToBack() {