From 68fa7a80d55a1f6ac73ec6de9d6ca8d0bfacfdd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Fri, 22 Sep 2023 14:10:07 +0900 Subject: [PATCH 01/12] =?UTF-8?q?Header=20=EC=97=90=20access=20token=20?= =?UTF-8?q?=EC=9D=84=20hasAuthorization=20=EB=B6=84=EA=B8=B0=20=EC=97=86?= =?UTF-8?q?=EC=9D=B4=20=EB=84=A3=EC=96=B4=EC=A3=BC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kids/baba/mobile/data/api/AlbumApi.kt | 20 ------------- .../java/kids/baba/mobile/data/api/BabyApi.kt | 6 +--- .../kids/baba/mobile/data/api/MyPageApi.kt | 30 ++----------------- .../datasource/album/AlbumRemoteDataSource.kt | 5 ++-- .../album/AlbumRemoteDataSourceImpl.kt | 12 ++------ .../auth/AuthRemoteDataSourceImpl.kt | 2 +- .../member/MemberRemoteDataSourceImpl.kt | 8 +++-- .../kids/baba/mobile/data/di/ApiModule.kt | 7 +---- .../kids/baba/mobile/data/di/NetworkModule.kt | 17 ++++++----- .../mobile/data/network/SafeApiHelperImpl.kt | 1 - .../data/repository/AlbumRepositoryImpl.kt | 3 +- .../domain/repository/AlbumRepository.kt | 1 - .../mobile/domain/usecase/LoginUseCase.kt | 2 ++ .../domain/usecase/PostBabyAlbumUseCase.kt | 3 +- 14 files changed, 30 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/api/AlbumApi.kt b/app/src/main/java/kids/baba/mobile/data/api/AlbumApi.kt index ea4c32e3..9b163d65 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/AlbumApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/AlbumApi.kt @@ -1,14 +1,6 @@ package kids.baba.mobile.data.api -import kids.baba.mobile.core.constant.PrefsKey -import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.* -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.POST -import retrofit2.http.Path -import retrofit2.http.Query import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.Response @@ -16,11 +8,9 @@ import retrofit2.http.* interface AlbumApi { - //성장 앨범 메인 @GET("baby/{babyId}/album") suspend fun getAlbum( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") id: String, @Query("year") year: Int, @Query("month") month: Int @@ -28,7 +18,6 @@ interface AlbumApi { @GET("baby/{babyId}/album/{albumId}") suspend fun gatOneAlbum( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") babyId: String, @Path("contentId") contentId: Int ): Response @@ -37,8 +26,6 @@ interface AlbumApi { @Multipart @POST("baby/{babyId}/album") suspend fun postAlbum( - @Header("Authorization") - accessToken: String, @Path("babyId") id: String, @Part photo: MultipartBody.Part, @PartMap bodyDataHashMap: HashMap @@ -46,21 +33,18 @@ interface AlbumApi { @DELETE("baby/{babyId}/album/{contentId}") suspend fun deleteAlbum( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") babyId: String, @Path("contentId") contentId: Int ): Response @POST("baby/{babyId}/album/{contentId}/like") suspend fun likeAlbum( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") id: String, @Path("contentId") contentId: Int ): Response @POST("baby/{babyId}/album/{contentId}/comment") suspend fun addComment( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") id: String, @Path("contentId") contentId: Int, @Body commentInput: CommentInput @@ -68,7 +52,6 @@ interface AlbumApi { @DELETE("baby/{babyId}/album/{contentId}/comment/{commentId}") suspend fun deleteComment( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") id: String, @Path("contentId") contentId: Int, @Path("commentId") commentId: String @@ -76,21 +59,18 @@ interface AlbumApi { @GET("baby/{babyId}/album/{contentId}/comments") suspend fun getComments( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("contentId") contentId: Int, @Path("babyId") id: String ): Response @GET("baby/{babyId}/album/{contentId}/likes") suspend fun getLikeDetail( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("contentId") contentId: Int, @Path("babyId") id: String ): Response @GET("baby/{babyId}/album/all") suspend fun getAllAlbum( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") id: String ): Response diff --git a/app/src/main/java/kids/baba/mobile/data/api/BabyApi.kt b/app/src/main/java/kids/baba/mobile/data/api/BabyApi.kt index 4bacfae5..0ab7e059 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/BabyApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/BabyApi.kt @@ -1,12 +1,9 @@ package kids.baba.mobile.data.api -import kids.baba.mobile.core.constant.PrefsKey -import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.BabiesInfoResponse import kids.baba.mobile.domain.model.BabyResponse import retrofit2.Response import retrofit2.http.GET -import retrofit2.http.Header import retrofit2.http.Query interface BabyApi { @@ -18,7 +15,6 @@ interface BabyApi { //아기 리스트 가져오기 @GET("baby") - suspend fun getBaby(@Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY)): Response - + suspend fun getBaby(): Response } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/api/MyPageApi.kt b/app/src/main/java/kids/baba/mobile/data/api/MyPageApi.kt index e1728e8f..4e83d72b 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/MyPageApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/MyPageApi.kt @@ -1,85 +1,64 @@ package kids.baba.mobile.data.api -import kids.baba.mobile.core.constant.PrefsKey -import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.* import retrofit2.Response -import retrofit2.http.Body -import retrofit2.http.DELETE -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.PATCH -import retrofit2.http.POST -import retrofit2.http.PUT -import retrofit2.http.Path -import retrofit2.http.Query +import retrofit2.http.* interface MyPageApi { @GET("members/my-page") suspend fun loadMyPageGroup( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) ): Response @GET("members/baby-page/{babyId}") suspend fun loadBabyProfile( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") babyId: String ): Response @POST("members/groups") suspend fun addGroup( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Body myPageGroup: MyPageGroup ): Response @PUT("members") suspend fun editProfile( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Body profile: Profile ): Response @PATCH("baby/{babyId}") suspend fun editBabyName( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") babyId: String, @Body babyEdit: BabyEdit ): Response @POST("baby") suspend fun addMyBaby( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Body baby: MyBaby ): Response @POST("baby/code") suspend fun addBabyWithInviteCode( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Body inviteCode: InviteCode ): Response @DELETE("baby/{babyId}") suspend fun deleteBaby( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("babyId") babyId: String ): Response @PATCH("members/groups") suspend fun patchGroup( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Query("groupName") groupName: String, @Body group: GroupInfo ): Response @DELETE("members/groups") suspend fun deleteGroup( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Query("groupName") groupName: String ): Response @PATCH("members/groups/{groupMemberId}") suspend fun patchMember( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("groupMemberId") memberId: String, @Body relationName: GroupMemberInfo ): Response @@ -87,19 +66,16 @@ interface MyPageApi { //TODO FIX @DELETE("members/groups/{groupMemberId}") suspend fun deleteGroupMember( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Path("groupMemberId") memberId: String ): Response - @GET("baby/invitation") suspend fun getInvitationInfo( - @Query("code") inviteCode: String): Response - + @Query("code") inviteCode: String + ): Response @POST("baby/invite-code") suspend fun makeInviteCode( - @Header("Authorization") token: String = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY), @Body relationInfo: RelationInfo ): Response diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt index c6b0759c..5ebcdc51 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt @@ -7,10 +7,9 @@ import okhttp3.RequestBody interface AlbumRemoteDataSource { suspend fun getAlbum(id: String, year: Int, month: Int): Result> - suspend fun getOneAlbum(babyId:String, contentId: Int): Result + suspend fun getOneAlbum(babyId: String, contentId: Int): Result suspend fun postAlbum( - accessToken: String, id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap @@ -24,7 +23,7 @@ interface AlbumRemoteDataSource { suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): Result - suspend fun deleteComment(id: String, contentId: Int, commentId: String) : Result + suspend fun deleteComment(id: String, contentId: Int, commentId: String): Result suspend fun getComment(id: String, contentId: Int): Result> diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt index ccec7def..76711f94 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt @@ -3,12 +3,7 @@ package kids.baba.mobile.data.datasource.album import kids.baba.mobile.core.error.EntityTooLargeException import kids.baba.mobile.data.api.AlbumApi import kids.baba.mobile.data.network.SafeApiHelper -import kids.baba.mobile.domain.model.Album -import kids.baba.mobile.domain.model.Comment -import kids.baba.mobile.domain.model.CommentInput -import kids.baba.mobile.domain.model.LikeDetailResponse -import kids.baba.mobile.domain.model.PostAlbumResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.* import okhttp3.MultipartBody import okhttp3.RequestBody import javax.inject.Inject @@ -39,19 +34,18 @@ class AlbumRemoteDataSourceImpl @Inject constructor( remoteFetch = { api.gatOneAlbum(babyId = babyId, contentId = contentId) }, - mapping = {it} + mapping = { it } ) override suspend fun postAlbum( - accessToken: String, id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap ): Result { val result = safeApiHelper.getSafe( remoteFetch = { - api.postAlbum(accessToken, id, photo, bodyDataHashMap) + api.postAlbum(id, photo, bodyDataHashMap) }, mapping = { it diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt index 58bea33a..8112d880 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt @@ -42,6 +42,6 @@ class AuthRemoteDataSourceImpl @Inject constructor( remoteFetch = { api.getSignToken(signTokenRequest) }, - mapping = {it.signToken} + mapping = { it.signToken } ) } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt index 5c7e6a2a..06e89185 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt @@ -11,7 +11,9 @@ class MemberRemoteDataSourceImpl @Inject constructor( private val safeApiHelper: SafeApiHelper ) : MemberRemoteDataSource { override suspend fun getMe(accessToken: String) = safeApiHelper.getSafe( - remoteFetch = { memberApi.getMe(accessToken) }, + remoteFetch = { + memberApi.getMe(accessToken) + }, mapping = { it } ) @@ -28,7 +30,7 @@ class MemberRemoteDataSourceImpl @Inject constructor( signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode ) = safeApiHelper.getSafe( - remoteFetch = {memberApi.signUpWithInviteCode(signToken, signUpRequestWithInviteCode)}, - mapping = {it} + remoteFetch = { memberApi.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) }, + mapping = { it } ) } diff --git a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt index 66529b33..0c979ca7 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt @@ -5,12 +5,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import kids.baba.mobile.BuildConfig -import kids.baba.mobile.data.api.AlbumApi -import kids.baba.mobile.data.api.AuthApi -import kids.baba.mobile.data.api.BabyApi -import kids.baba.mobile.data.api.FileApi -import kids.baba.mobile.data.api.MemberApi -import kids.baba.mobile.data.api.MyPageApi +import kids.baba.mobile.data.api.* import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index 4a417e44..5c5d86b0 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -96,14 +96,13 @@ object NetworkModule { @Singleton @Provides - fun providesAuthorizationInterceptor() = Interceptor { chain -> + fun provideAuthorizationInterceptor() = Interceptor { chain -> val request = chain.request().newBuilder() - val hasAuthorization = chain.request().headers.names().contains("Authorization") + val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) + request.header("Authorization", "Bearer $accessToken") - if (hasAuthorization) { - val accessToken = chain.request().header("Authorization") - request.header("Authorization", "Bearer $accessToken") - } + Log.e("AuthorizationInterceptor", "request.build: ${request.build()}") + // 가로챈 요청을 다시 보내기 chain.proceed(request.build()) } @@ -116,10 +115,14 @@ object NetworkModule { val tag = "TokenAuthenticator" val isPathRefresh = response.request.url.toUrl().toString() == BuildConfig.BASE_URL + "auth/refresh" + if (response.code == 401 && !isPathRefresh) { try { + Log.e("NetworkModule", "provideTokenAuthenticator called \n 토큰 갱신 시도") val refreshToken = EncryptedPrefs.getString(PrefsKey.REFRESH_TOKEN_KEY) val tokenRefreshRequest = TokenRefreshRequest(refreshToken) + + // 토큰 갱신 val resp = authApi.tokenRefresh(tokenRefreshRequest).execute() EncryptedPrefs.clearPrefs() @@ -146,6 +149,6 @@ object NetworkModule { @Singleton @Provides - fun provideSafeApi() : SafeApiHelper = SafeApiHelperImpl() + fun provideSafeApi(): SafeApiHelper = SafeApiHelperImpl() } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index 95cc2a68..791781dc 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -1,6 +1,5 @@ package kids.baba.mobile.data.network -import android.util.Log import com.google.gson.Gson import kids.baba.mobile.core.error.NullBodyException import kids.baba.mobile.core.error.UnKnownException diff --git a/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt index 7db9211d..6465b46f 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt @@ -22,11 +22,10 @@ class AlbumRepositoryImpl @Inject constructor(private val dataSource: AlbumRemot override suspend fun getOneAlbum(babyId: String, contentId: Int) = dataSource.getOneAlbum(babyId, contentId) override suspend fun postAlbum( - accessToken: String, id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap - ) = dataSource.postAlbum(accessToken, id, photo, bodyDataHashMap) + ) = dataSource.postAlbum(id, photo, bodyDataHashMap) override suspend fun deleteAlbum(babyId: String, contentId: Int) = dataSource.deleteAlbum(babyId, contentId) diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt index 589e6f43..37678a71 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt @@ -15,7 +15,6 @@ interface AlbumRepository { suspend fun getOneAlbum(babyId: String, contentId: Int): Result suspend fun postAlbum( - accessToken: String, id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt index ceed09e2..be43365a 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt @@ -1,5 +1,6 @@ package kids.baba.mobile.domain.usecase +import android.util.Log import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.Result @@ -24,6 +25,7 @@ class LoginUseCase @Inject constructor( suspend fun kakaoLogin() = kakaoLogin.login() private fun setJWTToken(token: TokenResponse) { + Log.e("Login", "setJWTToken") EncryptedPrefs.putString(PrefsKey.ACCESS_TOKEN_KEY, token.accessToken) EncryptedPrefs.putString(PrefsKey.REFRESH_TOKEN_KEY, token.refreshToken) } diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt index 78321923..cd97c63f 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt @@ -17,9 +17,8 @@ class PostBabyAlbumUseCase @Inject constructor(private val albumRepository: Albu ): Result { val babyId = run { EncryptedPrefs.getBaby(PrefsKey.BABY_KEY).babyId } - val accessToken = run { EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) } - return albumRepository.postAlbum(accessToken = accessToken, id = babyId, photo, bodyDataHashMap) + return albumRepository.postAlbum(id = babyId, photo, bodyDataHashMap) } } \ No newline at end of file From 8594821e22832a6e15f28828bb02d4587c86af95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Sun, 24 Sep 2023 21:35:29 +0900 Subject: [PATCH 02/12] =?UTF-8?q?api=20call=20->=20401=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20->=20refresh=20->=20**=20=EC=9D=B4=ED=9B=84?= =?UTF-8?q?=EA=B0=B1=EC=8B=A0=ED=95=9C=20=ED=86=A0=ED=81=B0=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=8F=99=EC=9D=BC=ED=95=9C=20api=20=EC=9E=AC?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=ED=95=98=EB=8A=94=20=EB=8F=99=EC=9E=91=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kids/baba/mobile/data/di/NetworkModule.kt | 3 +++ .../kids/baba/mobile/data/network/SafeApiHelper.kt | 2 +- .../baba/mobile/data/network/SafeApiHelperImpl.kt | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index 5c5d86b0..ba9a5256 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -115,6 +115,9 @@ object NetworkModule { val tag = "TokenAuthenticator" val isPathRefresh = response.request.url.toUrl().toString() == BuildConfig.BASE_URL + "auth/refresh" + Log.e(tag, "isPathRefresh: $isPathRefresh " + + "\n url: ${response.request.url.toUrl()} " + + "\n response: $response") if (response.code == 401 && !isPathRefresh) { try { diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt index 84d8a3ee..5ecc913d 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt @@ -6,7 +6,7 @@ import retrofit2.Response interface SafeApiHelper { suspend fun getSafe( remoteFetch: suspend () -> Response, - mapping: (RequestType) -> (ResultType) + mapping: (RequestType) -> (ResultType), ): Result } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index 791781dc..37206fb5 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -1,5 +1,6 @@ package kids.baba.mobile.data.network +import android.util.Log import com.google.gson.Gson import kids.baba.mobile.core.error.NullBodyException import kids.baba.mobile.core.error.UnKnownException @@ -20,6 +21,7 @@ class SafeApiHelperImpl @Inject constructor( lateinit var result: Result runCatching { remoteFetch() } .onSuccess { + Log.e("SafeApiHelper", "Successful: $it") if (it.isSuccessful) { val body = it.body() result = if (body != null) { @@ -49,6 +51,16 @@ class SafeApiHelperImpl @Inject constructor( else -> Result.Unexpected(it) } } + + if (result is Result.Failure) { + if ((result as Result.Failure).code == 401) { + Log.e("SafeApiHelper", "한번 더 call") + + return getSafe(remoteFetch, mapping) + } + } + + Log.e("SafeApiHelper", "마지막 Response: $result ") return result } } \ No newline at end of file From 60c33ed8a4b8991fca71e6dbb9d742ec817dcb5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 25 Sep 2023 10:49:15 +0900 Subject: [PATCH 03/12] =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=83=81=20?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EB=B6=84=EA=B8=B0?= =?UTF-8?q?=EB=AC=B8=EC=9D=B4=20=EC=9E=88=EC=96=B4=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/error/InvalidAccessTokenException.kt | 5 ++++ .../kids/baba/mobile/data/di/NetworkModule.kt | 8 +++---- .../mobile/data/network/SafeApiHelperImpl.kt | 23 +++++++++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/kids/baba/mobile/core/error/InvalidAccessTokenException.kt diff --git a/app/src/main/java/kids/baba/mobile/core/error/InvalidAccessTokenException.kt b/app/src/main/java/kids/baba/mobile/core/error/InvalidAccessTokenException.kt new file mode 100644 index 00000000..5cbbfd6e --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/core/error/InvalidAccessTokenException.kt @@ -0,0 +1,5 @@ +package kids.baba.mobile.core.error + +import java.lang.Exception + +class InvalidAccessTokenException: Exception() \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index ba9a5256..4d94705d 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -113,13 +113,13 @@ object NetworkModule { authApi: AuthApi ) = Authenticator { _, response -> val tag = "TokenAuthenticator" - val isPathRefresh = - response.request.url.toUrl().toString() == BuildConfig.BASE_URL + "auth/refresh" - Log.e(tag, "isPathRefresh: $isPathRefresh " + +// val isPathRefresh = +// response.request.url.toUrl().toString() == BuildConfig.BASE_URL + "auth/refresh" + Log.e(tag, /*"isPathRefresh: $isPathRefresh " +*/ "\n url: ${response.request.url.toUrl()} " + "\n response: $response") - if (response.code == 401 && !isPathRefresh) { + if (response.code == 401 /*&& !isPathRefresh*/) { try { Log.e("NetworkModule", "provideTokenAuthenticator called \n 토큰 갱신 시도") val refreshToken = EncryptedPrefs.getString(PrefsKey.REFRESH_TOKEN_KEY) diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index 37206fb5..b6e29adb 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -2,6 +2,7 @@ package kids.baba.mobile.data.network import android.util.Log import com.google.gson.Gson +import kids.baba.mobile.core.error.InvalidAccessTokenException import kids.baba.mobile.core.error.NullBodyException import kids.baba.mobile.core.error.UnKnownException import kids.baba.mobile.domain.model.ErrorResponse @@ -9,6 +10,7 @@ import kids.baba.mobile.domain.model.Result import retrofit2.Response import java.io.IOException import javax.inject.Inject +import kotlin.properties.Delegates class SafeApiHelperImpl @Inject constructor( ) : SafeApiHelper { @@ -19,6 +21,7 @@ class SafeApiHelperImpl @Inject constructor( ): Result { lateinit var result: Result + runCatching { remoteFetch() } .onSuccess { Log.e("SafeApiHelper", "Successful: $it") @@ -42,7 +45,13 @@ class SafeApiHelperImpl @Inject constructor( if (errorMessage.isNullOrBlank()) { errorMessage = "Unknown Error" } - result = Result.Failure(it.code(), errorMessage, UnKnownException()) + + result = if (it.code() == 401) { + Result.Failure(it.code(), errorMessage, InvalidAccessTokenException()) + } else { + Result.Failure(it.code(), errorMessage, UnKnownException()) + } + } } .onFailure { @@ -52,10 +61,20 @@ class SafeApiHelperImpl @Inject constructor( } } +/* if (result is Result.Failure) { if ((result as Result.Failure).code == 401) { - Log.e("SafeApiHelper", "한번 더 call") + Log.e("SafeApiHelper", "한번 더 call " + + "\n result: $result") + return getSafe(remoteFetch, mapping) + } + } +*/ + if (result is Result.Failure) { + if ((result as Result.Failure).throwable is InvalidAccessTokenException) { + Log.e("SafeApiHelper", "한번 더 call " + + "\n result: $result") return getSafe(remoteFetch, mapping) } } From a3d4ea91b9345bb735baf3c93d99fb88d9cd80ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 25 Sep 2023 14:33:11 +0900 Subject: [PATCH 04/12] =?UTF-8?q?=EA=B8=B0=EC=A1=B4=20api=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=EC=9D=98=20=EA=B2=B0=EA=B3=BC=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20Result=20->=20BabaResult=20=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD,=20SafeApiHelperImpl=20=EC=9D=98=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/album/AlbumRemoteDataSource.kt | 20 ++-- .../album/AlbumRemoteDataSourceImpl.kt | 20 ++-- .../datasource/auth/AuthRemoteDataSource.kt | 8 +- .../auth/AuthRemoteDataSourceImpl.kt | 8 +- .../datasource/baby/BabyRemoteDataSource.kt | 6 +- .../baby/BabyRemoteDataSourceImpl.kt | 4 +- .../datasource/file/FileRemoteDataSource.kt | 4 +- .../member/MemberRemoteDataSource.kt | 8 +- .../mypage/MyPageRemoteDataSource.kt | 29 +++--- .../mypage/MyPageRemoteDataSourceImpl.kt | 84 ++++++++--------- .../baba/mobile/data/network/SafeApiHelper.kt | 4 +- .../mobile/data/network/SafeApiHelperImpl.kt | 92 +++++++++---------- .../data/repository/AlbumRepositoryImpl.kt | 14 +-- .../data/repository/BabyRepositoryImpl.kt | 4 +- .../data/repository/FileRepositoryImpl.kt | 16 ++-- .../data/repository/MyPageRepositoryImpl.kt | 11 +-- .../baba/mobile/domain/model/ApiResult.kt | 16 ++++ .../kids/baba/mobile/domain/model/Result.kt | 16 ---- .../domain/repository/AlbumRepository.kt | 22 ++--- .../domain/repository/AuthRepository.kt | 8 +- .../domain/repository/BabyRepository.kt | 6 +- .../domain/repository/FileRepository.kt | 4 +- .../domain/repository/MemberRepository.kt | 8 +- .../domain/repository/MyPageRepository.kt | 29 +++--- .../mobile/domain/usecase/GetMemberUseCase.kt | 12 +-- .../mobile/domain/usecase/LoginUseCase.kt | 6 +- .../domain/usecase/PostBabyAlbumUseCase.kt | 4 +- .../mobile/domain/usecase/SignUpUseCase.kt | 10 +- .../viewmodel/AddBabyViewModel.kt | 6 +- .../viewmodel/AddGroupViewModel.kt | 6 +- .../viewmodel/AlbumConfigViewModel.kt | 10 +- .../viewmodel/AlbumDetailViewModel.kt | 22 ++--- .../viewmodel/BabyDetailViewModel.kt | 10 +- .../BabyEditProfileBottomSheetViewModel.kt | 6 +- .../viewmodel/BabyListViewModel.kt | 6 +- .../EditGroupBottomSheetViewModel.kt | 10 +- .../EditMemberProfileBottomSheetViewModel.kt | 6 +- .../viewmodel/EditMemberViewModel.kt | 12 +-- .../viewmodel/GatheringAlbumViewModel.kt | 6 +- .../viewmodel/GrowthAlbumViewModel.kt | 14 +-- .../viewmodel/InputBabiesInfoViewModel.kt | 10 +- .../viewmodel/InputInviteCodeViewModel.kt | 6 +- .../presentation/viewmodel/IntroViewModel.kt | 12 +-- .../viewmodel/InviteMemberResultViewModel.kt | 10 +- .../viewmodel/InviteMemberViewModel.kt | 10 +- .../viewmodel/InviteResultViewModel.kt | 6 +- .../presentation/viewmodel/LoginViewModel.kt | 12 +-- .../presentation/viewmodel/MyPageViewModel.kt | 14 +-- .../viewmodel/SelectCardViewModel.kt | 8 +- .../viewmodel/TermsAgreeViewModel.kt | 10 +- 50 files changed, 339 insertions(+), 346 deletions(-) create mode 100644 app/src/main/java/kids/baba/mobile/domain/model/ApiResult.kt delete mode 100644 app/src/main/java/kids/baba/mobile/domain/model/Result.kt diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt index 5ebcdc51..343b33e9 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSource.kt @@ -5,29 +5,29 @@ import okhttp3.MultipartBody import okhttp3.RequestBody interface AlbumRemoteDataSource { - suspend fun getAlbum(id: String, year: Int, month: Int): Result> + suspend fun getAlbum(id: String, year: Int, month: Int): ApiResult> - suspend fun getOneAlbum(babyId: String, contentId: Int): Result + suspend fun getOneAlbum(babyId: String, contentId: Int): ApiResult suspend fun postAlbum( id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap - ): Result + ): ApiResult - suspend fun likeAlbum(id: String, contentId: Int): Result + suspend fun likeAlbum(id: String, contentId: Int): ApiResult suspend fun deleteAlbum( babyId: String, contentId: Int - ): Result + ): ApiResult - suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): Result + suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): ApiResult - suspend fun deleteComment(id: String, contentId: Int, commentId: String): Result + suspend fun deleteComment(id: String, contentId: Int, commentId: String): ApiResult - suspend fun getComment(id: String, contentId: Int): Result> + suspend fun getComment(id: String, contentId: Int): ApiResult> - suspend fun getLikeDetail(id: String, contentId: Int): Result + suspend fun getLikeDetail(id: String, contentId: Int): ApiResult - suspend fun getAllAlbum(id: String): Result> + suspend fun getAllAlbum(id: String): ApiResult> } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt index 76711f94..ae702d48 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/album/AlbumRemoteDataSourceImpl.kt @@ -17,7 +17,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( id: String, year: Int, month: Int, - ): Result> { + ): ApiResult> { val result = safeApiHelper.getSafe( remoteFetch = { api.getAlbum(id = id, year = year, month = month) @@ -29,7 +29,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( return result } - override suspend fun getOneAlbum(babyId: String, contentId: Int): Result = + override suspend fun getOneAlbum(babyId: String, contentId: Int): ApiResult = safeApiHelper.getSafe( remoteFetch = { api.gatOneAlbum(babyId = babyId, contentId = contentId) @@ -42,7 +42,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap - ): Result { + ): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.postAlbum(id, photo, bodyDataHashMap) @@ -51,9 +51,9 @@ class AlbumRemoteDataSourceImpl @Inject constructor( it } ) - return if (result is Result.Failure) { + return if (result is ApiResult.Failure) { if (result.code == 413) { - Result.Failure(result.code, result.message, EntityTooLargeException()) + ApiResult.Failure(result.code, result.message, EntityTooLargeException()) } else { result } @@ -62,7 +62,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( } } - override suspend fun likeAlbum(id: String, contentId: Int): Result { + override suspend fun likeAlbum(id: String, contentId: Int): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.likeAlbum(id = id, contentId = contentId) @@ -86,7 +86,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( id: String, contentId: Int, commentInput: CommentInput - ): Result = + ): ApiResult = safeApiHelper.getSafe( remoteFetch = { api.addComment(id = id, contentId = contentId, commentInput = commentInput) @@ -98,7 +98,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( id: String, contentId: Int, commentId: String - ): Result = + ): ApiResult = safeApiHelper.getSafe( remoteFetch = { api.deleteComment(id = id, contentId = contentId, commentId = commentId) @@ -106,7 +106,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( mapping = {} ) - override suspend fun getComment(id: String, contentId: Int): Result> = + override suspend fun getComment(id: String, contentId: Int): ApiResult> = safeApiHelper.getSafe( remoteFetch = { api.getComments(id = id, contentId = contentId) @@ -116,7 +116,7 @@ class AlbumRemoteDataSourceImpl @Inject constructor( } ) - override suspend fun getLikeDetail(id: String, contentId: Int): Result = + override suspend fun getLikeDetail(id: String, contentId: Int): ApiResult = safeApiHelper.getSafe( remoteFetch = { api.getLikeDetail(id = id, contentId = contentId) diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSource.kt index 6681f50b..4fa9a2d8 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSource.kt @@ -1,14 +1,14 @@ package kids.baba.mobile.data.datasource.auth -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignTokenRequest import kids.baba.mobile.domain.model.TermsData import kids.baba.mobile.domain.model.TokenResponse interface AuthRemoteDataSource { - suspend fun login(socialToken: String): Result + suspend fun login(socialToken: String): ApiResult - suspend fun getTerms(socialToken: String): Result> + suspend fun getTerms(socialToken: String): ApiResult> - suspend fun getSignToken(signTokenRequest: SignTokenRequest): Result + suspend fun getSignToken(signTokenRequest: SignTokenRequest): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt index 8112d880..03c189c1 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/auth/AuthRemoteDataSourceImpl.kt @@ -4,7 +4,7 @@ import kids.baba.mobile.core.error.UserNotFoundException import kids.baba.mobile.data.api.AuthApi import kids.baba.mobile.data.network.SafeApiHelper import kids.baba.mobile.domain.model.LoginRequest -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignTokenRequest import kids.baba.mobile.domain.model.TokenResponse import javax.inject.Inject @@ -13,7 +13,7 @@ class AuthRemoteDataSourceImpl @Inject constructor( private val api: AuthApi, private val safeApiHelper: SafeApiHelper ) : AuthRemoteDataSource { - override suspend fun login(socialToken: String): Result { + override suspend fun login(socialToken: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.login(LoginRequest(socialToken)) @@ -22,8 +22,8 @@ class AuthRemoteDataSourceImpl @Inject constructor( it } ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, UserNotFoundException("신규 로그인")) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, UserNotFoundException("신규 로그인")) } else { result } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSource.kt index 87dd5fd1..2224464d 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSource.kt @@ -2,9 +2,9 @@ package kids.baba.mobile.data.datasource.baby import kids.baba.mobile.domain.model.BabiesInfoResponse import kids.baba.mobile.domain.model.BabyResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult interface BabyRemoteDataSource { - suspend fun getBabiesInfo(inviteCode: String): Result - suspend fun getBaby(): Result + suspend fun getBabiesInfo(inviteCode: String): ApiResult + suspend fun getBaby(): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSourceImpl.kt index 032952dd..7d5bced8 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/baby/BabyRemoteDataSourceImpl.kt @@ -3,7 +3,7 @@ package kids.baba.mobile.data.datasource.baby import kids.baba.mobile.data.api.BabyApi import kids.baba.mobile.data.network.SafeApiHelper import kids.baba.mobile.domain.model.BabyResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import javax.inject.Inject class BabyRemoteDataSourceImpl @Inject constructor( @@ -15,7 +15,7 @@ class BabyRemoteDataSourceImpl @Inject constructor( mapping = {it} ) - override suspend fun getBaby() : Result{ + override suspend fun getBaby() : ApiResult{ val result = safeApiHelper.getSafe( remoteFetch = { babyApi.getBaby() diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/file/FileRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/file/FileRemoteDataSource.kt index 5eae11a8..0800a60b 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/file/FileRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/file/FileRemoteDataSource.kt @@ -1,8 +1,8 @@ package kids.baba.mobile.data.datasource.file -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import okhttp3.ResponseBody interface FileRemoteDataSource { - suspend fun downloadFile(fileUrl: String): Result + suspend fun downloadFile(fileUrl: String): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt index cb9a001c..c09181c3 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt @@ -1,15 +1,15 @@ package kids.baba.mobile.data.datasource.member import kids.baba.mobile.domain.model.MemberModel -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.model.TokenResponse interface MemberRemoteDataSource { - suspend fun getMe(accessToken: String): Result + suspend fun getMe(accessToken: String): ApiResult - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result + suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): ApiResult - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result + suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSource.kt index 96a20ba7..178f3207 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSource.kt @@ -1,36 +1,35 @@ package kids.baba.mobile.data.datasource.mypage import kids.baba.mobile.domain.model.* -import kotlinx.coroutines.flow.Flow interface MyPageRemoteDataSource { - suspend fun loadMyPageGroup(): Result + suspend fun loadMyPageGroup(): ApiResult - suspend fun loadBabyProfile(babyId: String): Result + suspend fun loadBabyProfile(babyId: String): ApiResult - suspend fun addGroup(myPageGroup: MyPageGroup): Result + suspend fun addGroup(myPageGroup: MyPageGroup): ApiResult - suspend fun editProfile(profile: Profile): Result + suspend fun editProfile(profile: Profile): ApiResult - suspend fun editBabyName(babyId: String, name: String): Result + suspend fun editBabyName(babyId: String, name: String): ApiResult - suspend fun addMyBaby(baby: MyBaby): Result + suspend fun addMyBaby(baby: MyBaby): ApiResult - suspend fun addBabyWithInviteCode(inviteCode: InviteCode): Result + suspend fun addBabyWithInviteCode(inviteCode: InviteCode): ApiResult - suspend fun deleteBaby(babyId: String): Result + suspend fun deleteBaby(babyId: String): ApiResult - suspend fun patchGroup(groupName: String, group: GroupInfo): Result + suspend fun patchGroup(groupName: String, group: GroupInfo): ApiResult - suspend fun deleteGroup(groupName: String): Result + suspend fun deleteGroup(groupName: String): ApiResult - suspend fun patchMember(memberId: String, relation: GroupMemberInfo): Result + suspend fun patchMember(memberId: String, relation: GroupMemberInfo): ApiResult - suspend fun deleteGroupMember(memberId: String): Result + suspend fun deleteGroupMember(memberId: String): ApiResult - suspend fun getInvitationInfo(inviteCode: String): Result + suspend fun getInvitationInfo(inviteCode: String): ApiResult - suspend fun makeInviteCode(relationInfo: RelationInfo): Result + suspend fun makeInviteCode(relationInfo: RelationInfo): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt index 9ba7fa6c..4c9b65d2 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt @@ -10,7 +10,7 @@ class MyPageRemoteDataSourceImpl @Inject constructor( private val api: MyPageApi, private val safeApiHelper: SafeApiHelper ) : MyPageRemoteDataSource { - override suspend fun loadMyPageGroup(): Result { + override suspend fun loadMyPageGroup(): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.loadMyPageGroup() @@ -19,15 +19,15 @@ class MyPageRemoteDataSourceImpl @Inject constructor( it } ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } // return if (result is Result.Success) flow { emit(result.data) } else flow {} } - override suspend fun loadBabyProfile(babyId: String): Result { + override suspend fun loadBabyProfile(babyId: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.loadBabyProfile(babyId = babyId) @@ -37,84 +37,84 @@ class MyPageRemoteDataSourceImpl @Inject constructor( } ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun addGroup(myPageGroup: MyPageGroup): Result { + override suspend fun addGroup(myPageGroup: MyPageGroup): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.addGroup(myPageGroup = myPageGroup) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun editProfile(profile: Profile): Result { + override suspend fun editProfile(profile: Profile): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.editProfile(profile = profile) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun editBabyName(babyId: String, name: String): Result { + override suspend fun editBabyName(babyId: String, name: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.editBabyName(babyId = babyId, babyEdit = BabyEdit(name)) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun addMyBaby(baby: MyBaby): Result { + override suspend fun addMyBaby(baby: MyBaby): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.addMyBaby(baby = baby) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun addBabyWithInviteCode(inviteCode: InviteCode): Result { + override suspend fun addBabyWithInviteCode(inviteCode: InviteCode): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.addBabyWithInviteCode(inviteCode = inviteCode) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun deleteBaby(babyId: String): Result { + override suspend fun deleteBaby(babyId: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.deleteBaby(babyId = babyId) @@ -122,70 +122,70 @@ class MyPageRemoteDataSourceImpl @Inject constructor( mapping = {} ) Log.e("deleteBaby", result.toString()) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun patchGroup(groupName: String, group: GroupInfo): Result { + override suspend fun patchGroup(groupName: String, group: GroupInfo): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.patchGroup(groupName = groupName, group = group) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun deleteGroup(groupName: String): Result { + override suspend fun deleteGroup(groupName: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.deleteGroup(groupName = groupName) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun patchMember(memberId: String, relation: GroupMemberInfo): Result { + override suspend fun patchMember(memberId: String, relation: GroupMemberInfo): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.patchMember(memberId = memberId, relationName = relation) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun deleteGroupMember(memberId: String): Result { + override suspend fun deleteGroupMember(memberId: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.deleteGroupMember(memberId = memberId) }, mapping = {} ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun getInvitationInfo(inviteCode: String): Result { + override suspend fun getInvitationInfo(inviteCode: String): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.getInvitationInfo(inviteCode = inviteCode) @@ -194,14 +194,14 @@ class MyPageRemoteDataSourceImpl @Inject constructor( it } ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } } - override suspend fun makeInviteCode(relationInfo: RelationInfo): Result { + override suspend fun makeInviteCode(relationInfo: RelationInfo): ApiResult { val result = safeApiHelper.getSafe( remoteFetch = { api.makeInviteCode(relationInfo = relationInfo) @@ -210,8 +210,8 @@ class MyPageRemoteDataSourceImpl @Inject constructor( it } ) - return if (result is Result.Failure) { - Result.Failure(result.code, result.message, Exception(result.message)) + return if (result is ApiResult.Failure) { + ApiResult.Failure(result.code, result.message, Exception(result.message)) } else { result } diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt index 5ecc913d..0f891b5b 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt @@ -1,12 +1,12 @@ package kids.baba.mobile.data.network -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import retrofit2.Response interface SafeApiHelper { suspend fun getSafe( remoteFetch: suspend () -> Response, mapping: (RequestType) -> (ResultType), - ): Result + ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index b6e29adb..6e30ba87 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -6,11 +6,10 @@ import kids.baba.mobile.core.error.InvalidAccessTokenException import kids.baba.mobile.core.error.NullBodyException import kids.baba.mobile.core.error.UnKnownException import kids.baba.mobile.domain.model.ErrorResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import retrofit2.Response import java.io.IOException import javax.inject.Inject -import kotlin.properties.Delegates class SafeApiHelperImpl @Inject constructor( ) : SafeApiHelper { @@ -18,68 +17,65 @@ class SafeApiHelperImpl @Inject constructor( override suspend fun getSafe( remoteFetch: suspend () -> Response, mapping: (RequestType) -> ResultType - ): Result { + ): ApiResult { - lateinit var result: Result + lateinit var apiResult: ApiResult runCatching { remoteFetch() } .onSuccess { - Log.e("SafeApiHelper", "Successful: $it") if (it.isSuccessful) { val body = it.body() - result = if (body != null) { - Result.Success(mapping(body)) - } else { - Result.Unexpected(NullBodyException("Body가 null임")) - } + apiResult = successApiResult(body, mapping) } else { - var errorMessage = try { - gson.fromJson( - it.errorBody()?.string(), - ErrorResponse::class.java - )?.message - } catch (e: Exception) { - null - } - - if (errorMessage.isNullOrBlank()) { - errorMessage = "Unknown Error" - } - - result = if (it.code() == 401) { - Result.Failure(it.code(), errorMessage, InvalidAccessTokenException()) - } else { - Result.Failure(it.code(), errorMessage, UnKnownException()) - } - + val errorMessage = setErrorMessage(it) + apiResult = errorCodeApiResult(it, errorMessage) } } .onFailure { - result = when (it) { - is IOException -> Result.NetworkError(it) - else -> Result.Unexpected(it) + apiResult = when (it) { + is IOException -> ApiResult.NetworkError(it) + else -> ApiResult.Unexpected(it) } } -/* - if (result is Result.Failure) { - if ((result as Result.Failure).code == 401) { - Log.e("SafeApiHelper", "한번 더 call " + - "\n result: $result") - return getSafe(remoteFetch, mapping) - } + if ((apiResult as? ApiResult.Failure)?.throwable is InvalidAccessTokenException) { + return getSafe(remoteFetch, mapping) } -*/ - if (result is Result.Failure) { - if ((result as Result.Failure).throwable is InvalidAccessTokenException) { - Log.e("SafeApiHelper", "한번 더 call " + - "\n result: $result") - return getSafe(remoteFetch, mapping) - } + return apiResult + } + + private fun successApiResult( + body: RequestType?, + mapping: (RequestType) -> ResultType + ) = if (body != null) { + ApiResult.Success(mapping(body)) + } else { + ApiResult.Unexpected(NullBodyException("Body가 null임")) + } + + private fun errorCodeApiResult( + it: Response, + errorMessage: String? + ) = if (it.code() == 401) { + ApiResult.Failure(it.code(), errorMessage, InvalidAccessTokenException()) + } else { + ApiResult.Failure(it.code(), errorMessage, UnKnownException()) + } + + private fun setErrorMessage(it: Response): String { + var errorMessage = try { + gson.fromJson( + it.errorBody()?.string(), + ErrorResponse::class.java + )?.message + } catch (e: Exception) { + null } - Log.e("SafeApiHelper", "마지막 Response: $result ") - return result + if (errorMessage.isNullOrBlank()) { + errorMessage = "Unknown Error" + } + return errorMessage } } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt index 6465b46f..670752d1 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/AlbumRepositoryImpl.kt @@ -5,7 +5,7 @@ import kids.baba.mobile.domain.model.Album import kids.baba.mobile.domain.model.Comment import kids.baba.mobile.domain.model.CommentInput import kids.baba.mobile.domain.model.LikeDetailResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.repository.AlbumRepository import okhttp3.MultipartBody import okhttp3.RequestBody @@ -17,7 +17,7 @@ class AlbumRepositoryImpl @Inject constructor(private val dataSource: AlbumRemot id: String, year: Int, month: Int, - ): Result> = dataSource.getAlbum(id, year, month) + ): ApiResult> = dataSource.getAlbum(id, year, month) override suspend fun getOneAlbum(babyId: String, contentId: Int) = dataSource.getOneAlbum(babyId, contentId) @@ -30,20 +30,20 @@ class AlbumRepositoryImpl @Inject constructor(private val dataSource: AlbumRemot override suspend fun deleteAlbum(babyId: String, contentId: Int) = dataSource.deleteAlbum(babyId, contentId) - override suspend fun likeAlbum(id: String, contentId: Int): Result = + override suspend fun likeAlbum(id: String, contentId: Int): ApiResult = dataSource.likeAlbum(id, contentId) - override suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): Result = + override suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): ApiResult = dataSource.addComment(id, contentId, commentInput) - override suspend fun deleteComment(id: String, contentId: Int, commentId: String) : Result = + override suspend fun deleteComment(id: String, contentId: Int, commentId: String) : ApiResult = dataSource.deleteComment(id = id, contentId = contentId, commentId = commentId) - override suspend fun getComment(id: String, contentId: Int): Result> = + override suspend fun getComment(id: String, contentId: Int): ApiResult> = dataSource.getComment(id = id, contentId = contentId) - override suspend fun getLikeDetail(id: String, contentId: Int): Result = + override suspend fun getLikeDetail(id: String, contentId: Int): ApiResult = dataSource.getLikeDetail(id = id, contentId = contentId) override suspend fun getAllAlbum(id: String) = dataSource.getAllAlbum(id) diff --git a/app/src/main/java/kids/baba/mobile/data/repository/BabyRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/BabyRepositoryImpl.kt index ee162adb..ed5619e0 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/BabyRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/BabyRepositoryImpl.kt @@ -2,14 +2,14 @@ package kids.baba.mobile.data.repository import kids.baba.mobile.data.datasource.baby.BabyRemoteDataSource import kids.baba.mobile.domain.model.BabyResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.repository.BabyRepository import javax.inject.Inject class BabyRepositoryImpl @Inject constructor( private val babyRemoteDataSource: BabyRemoteDataSource ) : BabyRepository { - override suspend fun getBaby(): Result = babyRemoteDataSource.getBaby() + override suspend fun getBaby(): ApiResult = babyRemoteDataSource.getBaby() override suspend fun getBabiesInfo(inviteCode: String) = babyRemoteDataSource.getBabiesInfo(inviteCode) diff --git a/app/src/main/java/kids/baba/mobile/data/repository/FileRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/FileRepositoryImpl.kt index 00e9e859..72da0114 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/FileRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/FileRepositoryImpl.kt @@ -3,7 +3,7 @@ package kids.baba.mobile.data.repository import android.net.Uri import kids.baba.mobile.data.datasource.file.FileLocalDataSource import kids.baba.mobile.data.datasource.file.FileRemoteDataSource -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.repository.FileRepository import javax.inject.Inject @@ -11,23 +11,23 @@ class FileRepositoryImpl @Inject constructor( private val fileRemoteDataSource: FileRemoteDataSource, private val fileLocalDataSource: FileLocalDataSource ) : FileRepository { - override suspend fun saveFile(fileUrl: String, fileName: String): Result { + override suspend fun saveFile(fileUrl: String, fileName: String): ApiResult { return when (val remoteResult = fileRemoteDataSource.downloadFile(fileUrl)) { - is Result.Success -> { + is ApiResult.Success -> { val localResult = fileLocalDataSource.saveFile(remoteResult.data, fileName) val uri = localResult.getOrNull() if (uri == null) { - Result.Unexpected(localResult.exceptionOrNull() ?: Throwable()) + ApiResult.Unexpected(localResult.exceptionOrNull() ?: Throwable()) } else { - Result.Success(uri) + ApiResult.Success(uri) } } - is Result.NetworkError -> Result.NetworkError(remoteResult.throwable) - is Result.Unexpected -> Result.Unexpected(remoteResult.throwable) - is Result.Failure -> Result.Failure( + is ApiResult.NetworkError -> ApiResult.NetworkError(remoteResult.throwable) + is ApiResult.Unexpected -> ApiResult.Unexpected(remoteResult.throwable) + is ApiResult.Failure -> ApiResult.Failure( remoteResult.code, remoteResult.message, remoteResult.throwable diff --git a/app/src/main/java/kids/baba/mobile/data/repository/MyPageRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/MyPageRepositoryImpl.kt index 2f56273e..0e598821 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/MyPageRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/MyPageRepositoryImpl.kt @@ -3,12 +3,11 @@ package kids.baba.mobile.data.repository import kids.baba.mobile.data.datasource.mypage.MyPageRemoteDataSource import kids.baba.mobile.domain.model.* import kids.baba.mobile.domain.repository.MyPageRepository -import kotlinx.coroutines.flow.Flow import javax.inject.Inject class MyPageRepositoryImpl @Inject constructor(private val dataSource: MyPageRemoteDataSource) : MyPageRepository { - override suspend fun loadMyPageGroup(): Result = dataSource.loadMyPageGroup() + override suspend fun loadMyPageGroup(): ApiResult = dataSource.loadMyPageGroup() override suspend fun loadBabyProfile(babyId: String) = dataSource.loadBabyProfile(babyId = babyId) @@ -17,14 +16,14 @@ class MyPageRepositoryImpl @Inject constructor(private val dataSource: MyPageRem dataSource.addGroup(myPageGroup = myPageGroup) - override suspend fun editProfile(profile: Profile): Result { + override suspend fun editProfile(profile: Profile): ApiResult { return dataSource.editProfile(profile = profile) } override suspend fun editBabyName(babyId: String, name: String) = dataSource.editBabyName(babyId = babyId, name = name) - override suspend fun addMyBaby(baby: MyBaby): Result { + override suspend fun addMyBaby(baby: MyBaby): ApiResult { return dataSource.addMyBaby(baby = baby) } @@ -46,10 +45,10 @@ class MyPageRepositoryImpl @Inject constructor(private val dataSource: MyPageRem dataSource.deleteGroupMember(memberId = memberId) - override suspend fun getInvitationInfo(inviteCode: String): Result = + override suspend fun getInvitationInfo(inviteCode: String): ApiResult = dataSource.getInvitationInfo(inviteCode = inviteCode) - override suspend fun makeInviteCode(relationInfo: RelationInfo): Result = + override suspend fun makeInviteCode(relationInfo: RelationInfo): ApiResult = dataSource.makeInviteCode(relationInfo = relationInfo) } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/model/ApiResult.kt b/app/src/main/java/kids/baba/mobile/domain/model/ApiResult.kt new file mode 100644 index 00000000..99577f99 --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/domain/model/ApiResult.kt @@ -0,0 +1,16 @@ +package kids.baba.mobile.domain.model + +sealed class ApiResult{ + data class Success(val data: T): ApiResult() + data class Failure(val code: Int, val message: String?, val throwable: Throwable) : ApiResult() + data class NetworkError(val throwable: Throwable) : ApiResult() + data class Unexpected(val throwable: Throwable) : ApiResult() +} + +fun ApiResult.getThrowableOrNull() : Throwable? = + when(this) { + is ApiResult.Success -> null + is ApiResult.Failure -> throwable + is ApiResult.NetworkError -> throwable + is ApiResult.Unexpected -> throwable + } diff --git a/app/src/main/java/kids/baba/mobile/domain/model/Result.kt b/app/src/main/java/kids/baba/mobile/domain/model/Result.kt deleted file mode 100644 index 194d2f8b..00000000 --- a/app/src/main/java/kids/baba/mobile/domain/model/Result.kt +++ /dev/null @@ -1,16 +0,0 @@ -package kids.baba.mobile.domain.model - -sealed class Result{ - data class Success(val data: T): Result() - data class Failure(val code: Int, val message: String?, val throwable: Throwable) : Result() - data class NetworkError(val throwable: Throwable) : Result() - data class Unexpected(val throwable: Throwable) : Result() -} - -fun Result.getThrowableOrNull() : Throwable? = - when(this) { - is Result.Success -> null - is Result.Failure -> throwable - is Result.NetworkError -> throwable - is Result.Unexpected -> throwable - } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt index 37678a71..55a99d57 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/AlbumRepository.kt @@ -5,36 +5,36 @@ import kids.baba.mobile.domain.model.Comment import kids.baba.mobile.domain.model.CommentInput import kids.baba.mobile.domain.model.LikeDetailResponse import kids.baba.mobile.domain.model.PostAlbumResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import okhttp3.MultipartBody import okhttp3.RequestBody interface AlbumRepository { - suspend fun getAlbum(id: String, year: Int, month: Int): Result> + suspend fun getAlbum(id: String, year: Int, month: Int): ApiResult> - suspend fun getOneAlbum(babyId: String, contentId: Int): Result + suspend fun getOneAlbum(babyId: String, contentId: Int): ApiResult suspend fun postAlbum( id: String, photo: MultipartBody.Part, bodyDataHashMap: HashMap - ): Result + ): ApiResult suspend fun deleteAlbum( babyId: String, contentId: Int - ): Result + ): ApiResult - suspend fun likeAlbum(id: String, contentId: Int): Result + suspend fun likeAlbum(id: String, contentId: Int): ApiResult - suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): Result + suspend fun addComment(id: String, contentId: Int, commentInput: CommentInput): ApiResult - suspend fun deleteComment(id: String, contentId: Int, commentId: String) : Result + suspend fun deleteComment(id: String, contentId: Int, commentId: String) : ApiResult - suspend fun getComment(id: String, contentId: Int): Result> + suspend fun getComment(id: String, contentId: Int): ApiResult> - suspend fun getLikeDetail(id: String, contentId: Int): Result + suspend fun getLikeDetail(id: String, contentId: Int): ApiResult - suspend fun getAllAlbum(id: String): Result> + suspend fun getAllAlbum(id: String): ApiResult> } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/AuthRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/AuthRepository.kt index b7fe2963..0e076c5d 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/AuthRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/AuthRepository.kt @@ -1,14 +1,14 @@ package kids.baba.mobile.domain.repository -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignTokenRequest import kids.baba.mobile.domain.model.TermsData import kids.baba.mobile.domain.model.TokenResponse interface AuthRepository { - suspend fun login(socialToken: String): Result + suspend fun login(socialToken: String): ApiResult - suspend fun getTerms(socialToken: String): Result> + suspend fun getTerms(socialToken: String): ApiResult> - suspend fun getSignToken(signTokenRequest: SignTokenRequest): Result + suspend fun getSignToken(signTokenRequest: SignTokenRequest): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/BabyRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/BabyRepository.kt index 0b15b890..f5dd5010 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/BabyRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/BabyRepository.kt @@ -2,9 +2,9 @@ package kids.baba.mobile.domain.repository import kids.baba.mobile.domain.model.BabiesInfoResponse import kids.baba.mobile.domain.model.BabyResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult interface BabyRepository { - suspend fun getBaby() : Result - suspend fun getBabiesInfo(inviteCode: String): Result + suspend fun getBaby() : ApiResult + suspend fun getBabiesInfo(inviteCode: String): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/FileRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/FileRepository.kt index ff64e81b..4e397dde 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/FileRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/FileRepository.kt @@ -1,8 +1,8 @@ package kids.baba.mobile.domain.repository import android.net.Uri -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult interface FileRepository { - suspend fun saveFile(fileUrl: String, fileName: String) : Result + suspend fun saveFile(fileUrl: String, fileName: String) : ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt index fd0a0ef1..ce7d604e 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt @@ -1,15 +1,15 @@ package kids.baba.mobile.domain.repository import kids.baba.mobile.domain.model.MemberModel -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.model.TokenResponse interface MemberRepository { - suspend fun getMe(accessToken: String): Result + suspend fun getMe(accessToken: String): ApiResult - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result + suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): ApiResult - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result + suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/MyPageRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/MyPageRepository.kt index c220d880..dc83b8e8 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/MyPageRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/MyPageRepository.kt @@ -1,34 +1,33 @@ package kids.baba.mobile.domain.repository import kids.baba.mobile.domain.model.* -import kotlinx.coroutines.flow.Flow interface MyPageRepository { - suspend fun loadMyPageGroup(): Result + suspend fun loadMyPageGroup(): ApiResult - suspend fun loadBabyProfile(babyId: String): Result + suspend fun loadBabyProfile(babyId: String): ApiResult - suspend fun addGroup(myPageGroup: MyPageGroup): Result + suspend fun addGroup(myPageGroup: MyPageGroup): ApiResult - suspend fun editProfile(profile: Profile): Result + suspend fun editProfile(profile: Profile): ApiResult - suspend fun editBabyName(babyId: String, name: String): Result + suspend fun editBabyName(babyId: String, name: String): ApiResult - suspend fun addMyBaby(baby: MyBaby): Result + suspend fun addMyBaby(baby: MyBaby): ApiResult - suspend fun addBabyWithInviteCode(inviteCode: InviteCode): Result + suspend fun addBabyWithInviteCode(inviteCode: InviteCode): ApiResult - suspend fun deleteBaby(babyId: String): Result + suspend fun deleteBaby(babyId: String): ApiResult - suspend fun patchGroup(groupName: String, group: GroupInfo): Result + suspend fun patchGroup(groupName: String, group: GroupInfo): ApiResult - suspend fun deleteGroup(groupName: String): Result + suspend fun deleteGroup(groupName: String): ApiResult - suspend fun patchMember(memberId: String, relation: GroupMemberInfo): Result + suspend fun patchMember(memberId: String, relation: GroupMemberInfo): ApiResult - suspend fun deleteGroupMember(memberId: String): Result + suspend fun deleteGroupMember(memberId: String): ApiResult - suspend fun getInvitationInfo(inviteCode: String): Result + suspend fun getInvitationInfo(inviteCode: String): ApiResult - suspend fun makeInviteCode(relationInfo: RelationInfo): Result + suspend fun makeInviteCode(relationInfo: RelationInfo): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt index cedbf03a..6bd24d83 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt @@ -5,32 +5,32 @@ import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.error.TokenEmptyException import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.MemberModel -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.repository.MemberRepository import javax.inject.Inject class GetMemberUseCase @Inject constructor(private val memberRepository: MemberRepository) { private val tag = "GetMemberUseCase" - suspend fun getMe(): Result { + suspend fun getMe(): ApiResult { val member = runCatching { EncryptedPrefs.getMember(PrefsKey.MEMBER_KEY) }.getOrNull() return if (member == null) { getMeNoPref() } else { - Result.Success(member) + ApiResult.Success(member) } } - suspend fun getMeNoPref() : Result { + suspend fun getMeNoPref() : ApiResult { val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) return if (accessToken.isEmpty()) { val msg = "accessToken이 존재하지 않음." Log.e(tag, msg) - Result.Unexpected(TokenEmptyException(msg)) + ApiResult.Unexpected(TokenEmptyException(msg)) } else { val result = memberRepository.getMe(accessToken) - if(result is Result.Success){ + if(result is ApiResult.Success){ EncryptedPrefs.putMember(PrefsKey.MEMBER_KEY, result.data) } result diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt index be43365a..66905ad4 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/LoginUseCase.kt @@ -3,7 +3,7 @@ package kids.baba.mobile.domain.usecase import android.util.Log import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.TokenResponse import kids.baba.mobile.domain.repository.AuthRepository import kids.baba.mobile.domain.repository.KakaoLogin @@ -14,9 +14,9 @@ class LoginUseCase @Inject constructor( private val kakaoLogin: KakaoLogin ) { - suspend fun babaLogin(socialToken: String): Result { + suspend fun babaLogin(socialToken: String): ApiResult { val result = authRepository.login(socialToken) - if (result is Result.Success) { + if (result is ApiResult.Success) { setJWTToken(result.data) } return result diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt index cd97c63f..a56bba5d 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/PostBabyAlbumUseCase.kt @@ -3,7 +3,7 @@ package kids.baba.mobile.domain.usecase import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.PostAlbumResponse -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.repository.AlbumRepository import okhttp3.MultipartBody import okhttp3.RequestBody @@ -14,7 +14,7 @@ class PostBabyAlbumUseCase @Inject constructor(private val albumRepository: Albu suspend fun postAlbum( photo: MultipartBody.Part, bodyDataHashMap: HashMap - ): Result { + ): ApiResult { val babyId = run { EncryptedPrefs.getBaby(PrefsKey.BABY_KEY).babyId } diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index 296a5fed..cb3d849a 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -2,7 +2,7 @@ package kids.baba.mobile.domain.usecase import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.model.TokenResponse @@ -12,17 +12,17 @@ import javax.inject.Inject class SignUpUseCase @Inject constructor( private val memberRepository: MemberRepository ) { - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result{ + suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): ApiResult{ val result = memberRepository.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) - if ( result is Result.Success){ + if ( result is ApiResult.Success){ setJWTToken(result.data) } return result } - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result{ + suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): ApiResult{ val result = memberRepository.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) - if ( result is Result.Success){ + if ( result is ApiResult.Success){ setJWTToken(result.data) } return result diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddBabyViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddBabyViewModel.kt index a0891fb2..33d362e4 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddBabyViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddBabyViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.MyBaby -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AddOneMyBabyUseCase import kids.baba.mobile.presentation.binding.ComposableInputViewData import kids.baba.mobile.presentation.binding.ComposableInputWithDescViewData @@ -86,8 +86,8 @@ class AddBabyViewModel @Inject constructor( birthday = birthDay.value ) )) { - is Result.Success -> _eventFlow.emit(AddBabyEvent.SuccessAddBaby) - is Result.NetworkError -> _eventFlow.emit(AddBabyEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _eventFlow.emit(AddBabyEvent.SuccessAddBaby) + is ApiResult.NetworkError -> _eventFlow.emit(AddBabyEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AddBabyEvent.ShowSnackBar(R.string.already_have_same_name_or_format_error)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddGroupViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddGroupViewModel.kt index ae562ab1..52453f43 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddGroupViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AddGroupViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.MyPageGroup -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AddOneGroupUseCase import kids.baba.mobile.presentation.binding.ComposableInputWithDescViewData import kids.baba.mobile.presentation.binding.ComposableTopViewData @@ -57,8 +57,8 @@ class AddGroupViewModel @Inject constructor( groupColor = color.value ) )) { - is Result.Success -> _eventFlow.emit(AddGroupEvent.SuccessAddGroup) - is Result.NetworkError -> _eventFlow.emit(AddGroupEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _eventFlow.emit(AddGroupEvent.SuccessAddGroup) + is ApiResult.NetworkError -> _eventFlow.emit(AddGroupEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AddGroupEvent.ShowSnackBar(R.string.already_have_same_group_or_format_error)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumConfigViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumConfigViewModel.kt index 945caf23..abbd55b9 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumConfigViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumConfigViewModel.kt @@ -8,7 +8,7 @@ import kids.baba.mobile.BuildConfig import kids.baba.mobile.R import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AlbumDeleteUseCase import kids.baba.mobile.domain.usecase.DownloadPhotoUseCase import kids.baba.mobile.presentation.event.AlbumConfigEvent @@ -41,8 +41,8 @@ class AlbumConfigViewModel @Inject constructor( val contentId = album.value.contentId if (contentId != null) { when (albumDeleteUseCase(baby.babyId, contentId)) { - is Result.Success -> _eventFlow.emit(AlbumConfigEvent.DeleteAlbum) - is Result.NetworkError -> _eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _eventFlow.emit(AlbumConfigEvent.DeleteAlbum) + is ApiResult.NetworkError -> _eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_album_delete_failed)) } } @@ -56,8 +56,8 @@ class AlbumConfigViewModel @Inject constructor( withContext(Dispatchers.IO){ val fileUrl = album.value.photo.substringAfter(BuildConfig.BASE_PHOTO_URL) when(val result = downloadPhotoUseCase(fileUrl, "${baby.name}_${album.value.date}")){ - is Result.Success -> _eventFlow.emit(AlbumConfigEvent.ShowDownSuccessNotification(result.data)) - is Result.NetworkError ->_eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _eventFlow.emit(AlbumConfigEvent.ShowDownSuccessNotification(result.data)) + is ApiResult.NetworkError ->_eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumConfigEvent.ShowSnackBar(R.string.baba_photo_download_failed)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumDetailViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumDetailViewModel.kt index 22b91535..505a5f16 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumDetailViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/AlbumDetailViewModel.kt @@ -8,7 +8,7 @@ import kids.baba.mobile.R import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.CommentInput -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AddCommentUseCase import kids.baba.mobile.domain.usecase.DeleteCommentUseCase import kids.baba.mobile.domain.usecase.GetCommentsUseCase @@ -77,8 +77,8 @@ class AlbumDetailViewModel @Inject constructor( private fun initModel() { viewModelScope.launch { when(val result = getMemberUseCase.getMe()){ - is Result.Success -> _member.value = result.data.toPresentation() - is Result.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _member.value = result.data.toPresentation() + is ApiResult.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_get_member_failed)) } } @@ -92,7 +92,7 @@ class AlbumDetailViewModel @Inject constructor( val likeDetailResult = getLikeDetailUseCase(baby.babyId, contentId) val commentsResult = getCommentsUseCase(baby.babyId, contentId) when { - likeDetailResult is Result.Success && commentsResult is Result.Success -> { + likeDetailResult is ApiResult.Success && commentsResult is ApiResult.Success -> { val likeDetail = likeDetailResult.data val comments = commentsResult.data _albumDetailUiState.update { uiState -> @@ -106,7 +106,7 @@ class AlbumDetailViewModel @Inject constructor( } } - likeDetailResult is Result.NetworkError || commentsResult is Result.NetworkError -> { + likeDetailResult is ApiResult.NetworkError || commentsResult is ApiResult.NetworkError -> { _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) } @@ -124,13 +124,13 @@ class AlbumDetailViewModel @Inject constructor( val commentInput = CommentInput(tag = commentTag.value?.memberId ?: "", comment = comment.value) when (addCommentUseCase(baby.babyId, contentId, commentInput)) { - is Result.Success -> { + is ApiResult.Success -> { getAlbumDetailData() comment.value = "" addSuccess() } - is Result.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_add_comment_failed)) } } @@ -151,8 +151,8 @@ class AlbumDetailViewModel @Inject constructor( val contentId = albumDetailUiState.value.albumDetail.album.contentId if (contentId != null) { when (deleteCommentUseCase(baby.babyId, contentId, commentId)) { - is Result.Success -> getAlbumDetailData() - is Result.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> getAlbumDetailData() + is ApiResult.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_delete_comment_failed)) } } @@ -162,7 +162,7 @@ class AlbumDetailViewModel @Inject constructor( val contentId = albumDetailUiState.value.albumDetail.album.contentId if (contentId != null) { when (val result = likeAlbumUseCase(baby.babyId, contentId)) { - is Result.Success -> { + is ApiResult.Success -> { getAlbumDetailData() _albumDetailUiState.update { uiState -> uiState.copy( @@ -173,7 +173,7 @@ class AlbumDetailViewModel @Inject constructor( } } - is Result.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(AlbumDetailEvent.ShowSnackBar(R.string.baba_like_album_failed)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyDetailViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyDetailViewModel.kt index b51e802a..7de89ccd 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyDetailViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyDetailViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.DeleteOneBabyUseCase import kids.baba.mobile.domain.usecase.GetBabyProfileUseCase import kids.baba.mobile.presentation.event.BabyDetailEvent @@ -48,7 +48,7 @@ class BabyDetailViewModel @Inject constructor( private fun load(babyId: String) = viewModelScope.launch { when (val result = getBabyProfileUseCase.get(babyId)) { - is Result.Success -> { + is ApiResult.Success -> { val familyGroup = result.data.familyGroup val myGroup = result.data.myGroup _isMyGroupEmpty.value = myGroup == null @@ -67,7 +67,7 @@ class BabyDetailViewModel @Inject constructor( } } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(BabyDetailEvent.ShowSnackBar(R.string.baba_network_failed)) } @@ -82,9 +82,9 @@ class BabyDetailViewModel @Inject constructor( fun delete() = viewModelScope.launch { when (deleteOneBabyUseCase(babyId = baby.value?.babyId ?: "")) { - is Result.Success -> _eventFlow.emit(BabyDetailEvent.SuccessDeleteBaby) + is ApiResult.Success -> _eventFlow.emit(BabyDetailEvent.SuccessDeleteBaby) - is Result.NetworkError -> _eventFlow.emit(BabyDetailEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(BabyDetailEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(BabyDetailEvent.ShowSnackBar(R.string.fail_delete_baby_errer)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyEditProfileBottomSheetViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyEditProfileBottomSheetViewModel.kt index ec62c240..8a986579 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyEditProfileBottomSheetViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyEditProfileBottomSheetViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.EditBabyNameUseCase import kids.baba.mobile.presentation.binding.ComposableNameViewData import kids.baba.mobile.presentation.event.BabyEditEvent @@ -46,9 +46,9 @@ class BabyEditProfileBottomSheetViewModel @Inject constructor( babyId = baby.value?.babyId ?: "", name = nameViewState.value )) { - is Result.Success -> _eventFlow.emit(BabyEditEvent.SuccessBabyEdit(babyName = nameViewState.value)) + is ApiResult.Success -> _eventFlow.emit(BabyEditEvent.SuccessBabyEdit(babyName = nameViewState.value)) - is Result.NetworkError -> _eventFlow.emit(BabyEditEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(BabyEditEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(BabyEditEvent.ShowSnackBar(R.string.already_have_same_name_or_format_error)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyListViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyListViewModel.kt index ec7c0e3d..c63837f9 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyListViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/BabyListViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetBabiesUseCase import kids.baba.mobile.presentation.event.BabyListEvent import kids.baba.mobile.presentation.mapper.toPresentation @@ -38,7 +38,7 @@ class BabyListViewModel @Inject constructor( val selectedBabyId: String? = savedStateHandle[SELECTED_BABY_ID_KEY] viewModelScope.launch { when (val result = getBabiesUseCase()) { - is Result.Success -> { + is ApiResult.Success -> { val babies = result.data.toPresentation() _babyList.value = babies.myBaby + babies.othersBaby @@ -61,7 +61,7 @@ class BabyListViewModel @Inject constructor( } } - is Result.NetworkError -> _eventFlow.emit(BabyListEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(BabyListEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(BabyListEvent.ShowSnackBar(R.string.baba_get_babies_failed)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditGroupBottomSheetViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditGroupBottomSheetViewModel.kt index 6c9e4c73..4bd537fe 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditGroupBottomSheetViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditGroupBottomSheetViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.GroupInfo -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.DeleteOneGroupUseCase import kids.baba.mobile.domain.usecase.PatchOneGroupUseCase import kids.baba.mobile.presentation.binding.ComposableAddButtonViewData @@ -81,9 +81,9 @@ class EditGroupBottomSheetViewModel @Inject constructor( when (deleteOneGroupUseCase.delete( groupName = groupName )) { - is Result.Success -> _eventFlow.emit(EditGroupSheetEvent.SuccessDeleteGroup) + is ApiResult.Success -> _eventFlow.emit(EditGroupSheetEvent.SuccessDeleteGroup) - is Result.NetworkError -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.invalid_delete_group_error)) } @@ -99,9 +99,9 @@ class EditGroupBottomSheetViewModel @Inject constructor( ), groupName = groupName )) { - is Result.Success -> _eventFlow.emit(EditGroupSheetEvent.SuccessPatchGroupRelation) + is ApiResult.Success -> _eventFlow.emit(EditGroupSheetEvent.SuccessPatchGroupRelation) - is Result.NetworkError -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(EditGroupSheetEvent.ShowSnackBar(R.string.already_have_same_group_or_format_error)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberProfileBottomSheetViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberProfileBottomSheetViewModel.kt index f6dfe1d1..53f80afa 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberProfileBottomSheetViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberProfileBottomSheetViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.Profile -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.EditProfileUseCase import kids.baba.mobile.presentation.binding.ComposableInputViewData import kids.baba.mobile.presentation.binding.ComposableNameViewData @@ -89,10 +89,10 @@ class EditMemberProfileBottomSheetViewModel @Inject constructor( iconColor = colorState.value ) )) { - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(EditMemberProfileEvent.SuccessEditMemberProfile) } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(EditMemberProfileEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberViewModel.kt index c58cfd0c..be5074c4 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/EditMemberViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.GroupMemberInfo -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.DeleteOneGroupMemberUseCase import kids.baba.mobile.domain.usecase.GetMemberUseCase import kids.baba.mobile.domain.usecase.PatchOneMemberRelationUseCase @@ -57,9 +57,9 @@ class EditMemberViewModel @Inject constructor( memberId = member?.memberId ?: "", relation = GroupMemberInfo(relationName = relationWithBaby.value) )) { - is Result.Success -> _eventFlow.emit(EditGroupMemberEvent.SuccessPatchMemberRelation) + is ApiResult.Success -> _eventFlow.emit(EditGroupMemberEvent.SuccessPatchMemberRelation) - is Result.NetworkError -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.invalid_format_error)) @@ -70,14 +70,14 @@ class EditMemberViewModel @Inject constructor( onDeleteButtonClickEventListener = { viewModelScope.launch { when (val myInfo = getMemberUseCase.getMe()) { - is Result.Success -> { + is ApiResult.Success -> { if (member?.memberId == myInfo.data.memberId) { _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.cannot_delete_myself)) return@launch } when (deleteOneGroupMemberUseCase.delete(memberId = member?.memberId ?: "")) { - is Result.Success -> _eventFlow.emit(EditGroupMemberEvent.SuccessDeleteMember) - is Result.NetworkError -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _eventFlow.emit(EditGroupMemberEvent.SuccessDeleteMember) + is ApiResult.NetworkError -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(EditGroupMemberEvent.ShowSnackBar(R.string.invalid_delete_member_error)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GatheringAlbumViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GatheringAlbumViewModel.kt index 1a8b4242..54b5843e 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GatheringAlbumViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GatheringAlbumViewModel.kt @@ -6,7 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetAllAlbumsUseCase import kids.baba.mobile.presentation.event.GatheringAlbumEvent import kids.baba.mobile.presentation.mapper.toPresentation @@ -162,13 +162,13 @@ class GatheringAlbumViewModel @Inject constructor( val tempList: MutableList = mutableListOf() when (val result = getAllAlbumsUseCase(id = baby.babyId)) { - is Result.Success -> { + is ApiResult.Success -> { result.data.forEach { tempList.add(it.toPresentation(baby.isMyBaby)) // false is meaningless value } _allAlbumListState.value = tempList } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(GatheringAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GrowthAlbumViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GrowthAlbumViewModel.kt index 67c384e7..4f832bab 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GrowthAlbumViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/GrowthAlbumViewModel.kt @@ -6,7 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetAlbumsFromBabyIdUseCase import kids.baba.mobile.domain.usecase.GetBabiesUseCase import kids.baba.mobile.domain.usecase.LikeAlbumUseCase @@ -52,7 +52,7 @@ class GrowthAlbumViewModel @Inject constructor( } when (val result = getAlbumsFromBabyIdUseCase.getMonthAlbum(selectedBaby.babyId, nowYear, nowMonth)) { - is Result.Success -> { + is ApiResult.Success -> { val albumList = result.data albumList.forEach { val day = it.date.dayOfMonth @@ -68,7 +68,7 @@ class GrowthAlbumViewModel @Inject constructor( } } - is Result.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_get_album_failed)) } } @@ -123,7 +123,7 @@ class GrowthAlbumViewModel @Inject constructor( fun initBabyAndAlbum(date: LocalDate) = viewModelScope.launch { val babyId = runCatching { EncryptedPrefs.getBaby(PrefsKey.BABY_KEY).babyId }.getOrNull() when (val result = getBabiesUseCase()) { - is Result.Success -> { + is ApiResult.Success -> { val myBaby = result.data.myBaby val others = result.data.others @@ -143,7 +143,7 @@ class GrowthAlbumViewModel @Inject constructor( } } - is Result.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_get_babies_failed)) } } @@ -154,7 +154,7 @@ class GrowthAlbumViewModel @Inject constructor( growthAlbumState.value.selectedBaby.babyId, album.contentId )) { - is Result.Success -> { + is ApiResult.Success -> { var selectedAlbum = growthAlbumState.value.selectedAlbum val growthAlbumList = growthAlbumState.value.growthAlbumList.map { if (it == album) { @@ -172,7 +172,7 @@ class GrowthAlbumViewModel @Inject constructor( } } - is Result.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(GrowthAlbumEvent.ShowSnackBar(R.string.baba_like_album_failed)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt index 3fc416ae..3372985d 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.model.getThrowableOrNull @@ -310,7 +310,7 @@ class InputBabiesInfoViewModel @Inject constructor( ) viewModelScope.launch { when(val result = getBabiesInfoByInviteCodeUseCase(inviteCode)){ - is Result.Success -> { + is ApiResult.Success -> { val sj = StringJoiner(", ") val babiesList = result.data.babies val relationName = result.data.relationName @@ -335,7 +335,7 @@ class InputBabiesInfoViewModel @Inject constructor( ) setUiState(InputBabiesInfoUiState.GetBabiesInfoByInviteCode) } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { addChat( ChatItem.BabaFirstChatItem( getStringResource(R.string.baba_network_failed) @@ -367,7 +367,7 @@ class InputBabiesInfoViewModel @Inject constructor( babiesList.value ) )) { - is Result.Success -> { + is ApiResult.Success -> { setUiState(InputBabiesInfoUiState.SignUpSuccess(userProfile.name)) } else -> { @@ -392,7 +392,7 @@ class InputBabiesInfoViewModel @Inject constructor( userProfile.iconName ) )) { - is Result.Success -> { + is ApiResult.Success -> { setUiState(InputBabiesInfoUiState.SignUpSuccess(userProfile.name)) } else -> { diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputInviteCodeViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputInviteCodeViewModel.kt index 98dd5ad5..5c5a3922 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputInviteCodeViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputInviteCodeViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.InviteCode -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AddOneBabyWithInviteCodeUseCase import kids.baba.mobile.presentation.binding.ComposableInputViewData import kids.baba.mobile.presentation.binding.ComposableTopViewData @@ -57,7 +57,7 @@ class InputInviteCodeViewModel @Inject constructor( when (addOneBabyWithInviteCodeUseCase.add( inviteCode = InviteCode(inviteCodeState.value) )) { - is Result.Success -> _eventFlow.emit( + is ApiResult.Success -> _eventFlow.emit( BabyInviteCodeEvent.SuccessAddBabyWithInviteCode( inviteCode = InviteCode( inviteCodeState.value @@ -65,7 +65,7 @@ class InputInviteCodeViewModel @Inject constructor( ) ) - is Result.NetworkError -> _eventFlow.emit(BabyInviteCodeEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(BabyInviteCodeEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(BabyInviteCodeEvent.ShowSnackBar(R.string.invalid_invite_code)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt index e7cf5415..79ae7199 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt @@ -3,7 +3,7 @@ package kids.baba.mobile.presentation.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetMemberUseCase import kids.baba.mobile.presentation.event.DeepLinkEvent import kids.baba.mobile.presentation.event.IntroEvent @@ -24,13 +24,13 @@ class IntroViewModel @Inject constructor( private val _deepLinkEvent = MutableEventFlow() val deepLinkEvent = _deepLinkEvent.asEventFlow() - suspend fun checkLogin() = getMemberUseCase.getMe() is Result.Success + suspend fun checkLogin() = getMemberUseCase.getMe() is ApiResult.Success fun handleDeeplink() = viewModelScope.launch { when (getMemberUseCase.getMe()) { - is Result.Success -> _deepLinkEvent.emit(DeepLinkEvent.GoToInviteResultPage) - is Result.Unexpected -> _deepLinkEvent.emit(DeepLinkEvent.RequestLogin) - is Result.Failure -> _deepLinkEvent.emit(DeepLinkEvent.Failure) - is Result.NetworkError -> _deepLinkEvent.emit(DeepLinkEvent.NetworkError) + is ApiResult.Success -> _deepLinkEvent.emit(DeepLinkEvent.GoToInviteResultPage) + is ApiResult.Unexpected -> _deepLinkEvent.emit(DeepLinkEvent.RequestLogin) + is ApiResult.Failure -> _deepLinkEvent.emit(DeepLinkEvent.Failure) + is ApiResult.NetworkError -> _deepLinkEvent.emit(DeepLinkEvent.NetworkError) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberResultViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberResultViewModel.kt index 3a5bbbf4..80ac4876 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberResultViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberResultViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.InviteCode -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.AddOneBabyWithInviteCodeUseCase import kids.baba.mobile.domain.usecase.GetBabiesInfoByInviteCodeUseCase import kids.baba.mobile.presentation.binding.ComposableTopViewData @@ -40,7 +40,7 @@ class InviteMemberResultViewModel @Inject constructor( private fun getInviteResult() = viewModelScope.launch { when (val babiesData = getBabiesInfoByInviteCodeUseCase(inviteCode.value)) { - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(InviteResultEvent.SuccessGetInvitationInfo(babiesData.data)) uiModel.update { it.copy( @@ -49,7 +49,7 @@ class InviteMemberResultViewModel @Inject constructor( ) } } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(InviteResultEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { @@ -62,10 +62,10 @@ class InviteMemberResultViewModel @Inject constructor( addOneBabyWithInviteCodeUseCase.add(InviteCode(inviteCode = inviteCode.value)) when (val result = addOneBabyWithInviteCodeUseCase.add(InviteCode(inviteCode = inviteCode.value))) { - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(InviteResultEvent.SuccessAddMember) } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(InviteResultEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberViewModel.kt index 01a839f2..a509f5dc 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteMemberViewModel.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.domain.model.RelationInfo -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.MakeInviteCodeUseCase import kids.baba.mobile.presentation.binding.ComposableDescView import kids.baba.mobile.presentation.binding.ComposableInputWithDescViewData @@ -67,9 +67,9 @@ class InviteMemberViewModel @Inject constructor( relationName = relationState.value ) )) { - is Result.Success -> _eventFlow.emit(InviteMemberEvent.CopyInviteCode(inviteCode.data)) + is ApiResult.Success -> _eventFlow.emit(InviteMemberEvent.CopyInviteCode(inviteCode.data)) - is Result.NetworkError -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.cannot_generate_invite_code)) } @@ -86,9 +86,9 @@ class InviteMemberViewModel @Inject constructor( relationName = relationState.value ) )) { - is Result.Success -> _eventFlow.emit(InviteMemberEvent.InviteWithKakao(inviteCode.data)) + is ApiResult.Success -> _eventFlow.emit(InviteMemberEvent.InviteWithKakao(inviteCode.data)) - is Result.NetworkError -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(InviteMemberEvent.ShowSnackBar(R.string.cannot_generate_invite_code)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteResultViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteResultViewModel.kt index fda59a75..17ef2939 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteResultViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InviteResultViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetInvitationInfoUseCase import kids.baba.mobile.presentation.binding.ComposableTopViewData import kids.baba.mobile.presentation.event.InviteResultEvent @@ -32,7 +32,7 @@ class InviteResultViewModel @Inject constructor( init { viewModelScope.launch { when (val result = getInvitationInfoUseCase(inviteCode = inviteCodeStr)) { - is Result.Success -> { + is ApiResult.Success -> { uiModel.update { it.copy( addBabyNameDesc = result.data.babies[0].babyName, @@ -47,7 +47,7 @@ class InviteResultViewModel @Inject constructor( } _eventFlow.emit(InviteResultEvent.SuccessGetInvitation) } - is Result.NetworkError -> _eventFlow.emit(InviteResultEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(InviteResultEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(InviteResultEvent.ShowSnackBar(R.string.invalid_invite_code)) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/LoginViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/LoginViewModel.kt index 1326f4fb..9af49e63 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/LoginViewModel.kt @@ -6,7 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.core.error.UserNotFoundException import kids.baba.mobile.core.error.kakao.KakaoLoginCanceledException -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetMemberUseCase import kids.baba.mobile.domain.usecase.LoginUseCase import kids.baba.mobile.presentation.event.LoginEvent @@ -41,17 +41,17 @@ class LoginViewModel @Inject constructor( private suspend fun loginToBaba(socialToken: String) { when (val result = loginUseCase.babaLogin(socialToken)) { - is Result.Success -> { + is ApiResult.Success -> { when(val memberResult = getMemberUseCase.getMe()){ - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(LoginEvent.MoveToWelcome(memberResult.data.name)) } - is Result.NetworkError -> _eventFlow.emit(LoginEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(LoginEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(LoginEvent.ShowSnackBar(R.string.baba_get_member_failed)) } } - is Result.Failure -> { + is ApiResult.Failure -> { if (result.throwable is UserNotFoundException) { _eventFlow.emit(LoginEvent.MoveToAgree(socialToken)) } else { @@ -59,7 +59,7 @@ class LoginViewModel @Inject constructor( } } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(LoginEvent.ShowSnackBar(R.string.baba_network_failed)) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/MyPageViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/MyPageViewModel.kt index 82071fe1..9c831d22 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/MyPageViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/MyPageViewModel.kt @@ -7,7 +7,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.core.constant.PrefsKey.BABY_GROUP_TITLE_KEY import kids.baba.mobile.core.utils.EncryptedPrefs -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.getThrowableOrNull import kids.baba.mobile.domain.usecase.GetBabiesUseCase import kids.baba.mobile.domain.usecase.GetMemberUseCase @@ -46,10 +46,10 @@ class MyPageViewModel @Inject constructor( fun loadGroups() = viewModelScope.launch { when (val result = getMyPageGroupUseCase.get()) { - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(MyPageEvent.LoadGroups(result.data.groups.toUiModel())) } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { @@ -60,11 +60,11 @@ class MyPageViewModel @Inject constructor( fun loadBabies() = viewModelScope.launch { when (val result = getBabiesUseCase()) { - is Result.Success -> { + is ApiResult.Success -> { val babies = result.data _eventFlow.emit(MyPageEvent.LoadBabies((babies.myBaby + babies.others).map { it.toPresentation() })) } - is Result.NetworkError -> _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.load_baby_error_message)) @@ -73,11 +73,11 @@ class MyPageViewModel @Inject constructor( fun getMyInfo() = viewModelScope.launch { when (val result = getMemberUseCase.getMeNoPref()) { - is Result.Success -> { + is ApiResult.Success -> { _myInfoState.value = result.data.toPresentation() _eventFlow.emit(MyPageEvent.LoadMyInfo(result.data.toPresentation())) } - is Result.NetworkError -> _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.NetworkError -> _eventFlow.emit(MyPageEvent.ShowSnackBar(R.string.baba_network_failed)) else -> { val throwable = result.getThrowableOrNull() diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/SelectCardViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/SelectCardViewModel.kt index fa885500..c8d6a8ba 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/SelectCardViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/SelectCardViewModel.kt @@ -8,7 +8,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R import kids.baba.mobile.core.error.EntityTooLargeException import kids.baba.mobile.domain.model.MediaData -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.PostBabyAlbumUseCase import kids.baba.mobile.presentation.event.PostAlbumEvent import kids.baba.mobile.presentation.extension.FileUtil @@ -81,17 +81,17 @@ class SelectCardViewModel @Inject constructor( requestHashMap["cardStyle"] = defaultCardUiModelArray[cardPosition.value].name.toPlainRequestBody() when (val result = postBabyAlbumUseCase.postAlbum(photoFile, requestHashMap)) { - is Result.Success -> { + is ApiResult.Success -> { _eventFlow.emit(PostAlbumEvent.MoveToMain) } - is Result.Failure -> { + is ApiResult.Failure -> { if (result.throwable is EntityTooLargeException) { _eventFlow.emit(PostAlbumEvent.ShowSnackBar(R.string.post_album_entity_too_large)) } else { _eventFlow.emit(PostAlbumEvent.ShowSnackBar(R.string.post_album_failed)) } } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(PostAlbumEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> { diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt index 3066197d..80e6bbca 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R -import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetSignTokenUseCase import kids.baba.mobile.domain.usecase.GetTermsListUseCase import kids.baba.mobile.presentation.event.TermsAgreeEvent @@ -48,8 +48,8 @@ class TermsAgreeViewModel @Inject constructor( private fun getTerms() { viewModelScope.launch { when (val result = getTermsListUseCase(socialToken)) { - is Result.Success -> _termsList.value = result.data.map { it.toPresentation() } - is Result.NetworkError -> _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_network_failed)) + is ApiResult.Success -> _termsList.value = result.data.map { it.toPresentation() } + is ApiResult.NetworkError -> _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_network_failed)) else -> _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_terms_loading_failed)) } } @@ -87,10 +87,10 @@ class TermsAgreeViewModel @Inject constructor( } ) when (result) { - is Result.Success -> { + is ApiResult.Success -> { _signToken.value = result.data } - is Result.NetworkError -> { + is ApiResult.NetworkError -> { _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_network_failed)) } else -> _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_terms_agree_failed)) From 2243c24f90557ecd79f2df9b5227c63406183019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 25 Sep 2023 15:17:00 +0900 Subject: [PATCH 05/12] =?UTF-8?q?AuthClient=20=EC=99=80=20AuthorizationInt?= =?UTF-8?q?erceptor=20=EC=9D=98=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0,=20TokenAuthenticator=20=EC=9D=98=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20=EB=B6=84=EA=B8=B0=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0,=20BabaRetrofit=20=EA=B3=BC=20RefreshTokenRetrofit=20?= =?UTF-8?q?=EC=9D=98=20=EC=A4=91=EB=B3=B5=20=EC=BD=94=EB=93=9C=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kids/baba/mobile/data/di/ApiModule.kt | 28 +++++++++++-------- .../kids/baba/mobile/data/di/NetworkModule.kt | 20 ++----------- .../mobile/data/network/SafeApiHelperImpl.kt | 3 +- 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt index 0c979ca7..de57d1a0 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt @@ -35,11 +35,7 @@ object ApiModule { @NetworkModule.BabaClient okHttpClient: OkHttpClient, gsonConverterFactory: GsonConverterFactory - ): Retrofit = Retrofit.Builder() - .baseUrl(BuildConfig.BASE_URL) - .client(okHttpClient) - .addConverterFactory(gsonConverterFactory) - .build() + ): Retrofit = buildBaseRetrofit(okHttpClient, gsonConverterFactory) @AuthRetrofit @Singleton @@ -48,22 +44,30 @@ object ApiModule { @NetworkModule.AuthClient okHttpClient: OkHttpClient, gsonConverterFactory: GsonConverterFactory - ): Retrofit = Retrofit.Builder() - .baseUrl(BuildConfig.BASE_URL) - .client(okHttpClient) - .addConverterFactory(gsonConverterFactory) - .build() + ): Retrofit = buildBaseRetrofit(okHttpClient, gsonConverterFactory) @FileRetrofit @Singleton @Provides fun provideFileDownRetrofit( gsonConverterFactory: GsonConverterFactory - ): Retrofit = Retrofit.Builder() - .baseUrl(BuildConfig.BASE_PHOTO_URL) + ): Retrofit = buildFileDownRetrofit(gsonConverterFactory) + + private fun buildBaseRetrofit( + okHttpClient: OkHttpClient, + gsonConverterFactory: GsonConverterFactory + ) = Retrofit.Builder() + .baseUrl(BuildConfig.BASE_URL) + .client(okHttpClient) .addConverterFactory(gsonConverterFactory) .build() + private fun buildFileDownRetrofit(gsonConverterFactory: GsonConverterFactory) = + Retrofit.Builder() + .baseUrl(BuildConfig.BASE_PHOTO_URL) + .addConverterFactory(gsonConverterFactory) + .build() + @Singleton @Provides diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index 4d94705d..8c4b693c 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -8,7 +8,6 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent -import kids.baba.mobile.BuildConfig import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.error.TokenEmptyException import kids.baba.mobile.core.error.TokenRefreshFailedException @@ -81,15 +80,12 @@ object NetworkModule { @AuthClient @Singleton @Provides - fun provideAuthClient( - authorizationInterceptor: Interceptor - ): OkHttpClient { + fun provideAuthClient(): OkHttpClient { val builder = OkHttpClient.Builder() val loggingInterceptor = HttpLoggingInterceptor() loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY builder.apply { addInterceptor(loggingInterceptor) - addInterceptor(authorizationInterceptor) } return builder.build() } @@ -100,9 +96,6 @@ object NetworkModule { val request = chain.request().newBuilder() val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) request.header("Authorization", "Bearer $accessToken") - - Log.e("AuthorizationInterceptor", "request.build: ${request.build()}") - // 가로챈 요청을 다시 보내기 chain.proceed(request.build()) } @@ -113,19 +106,10 @@ object NetworkModule { authApi: AuthApi ) = Authenticator { _, response -> val tag = "TokenAuthenticator" -// val isPathRefresh = -// response.request.url.toUrl().toString() == BuildConfig.BASE_URL + "auth/refresh" - Log.e(tag, /*"isPathRefresh: $isPathRefresh " +*/ - "\n url: ${response.request.url.toUrl()} " + - "\n response: $response") - - if (response.code == 401 /*&& !isPathRefresh*/) { + if (response.code == 401) { try { - Log.e("NetworkModule", "provideTokenAuthenticator called \n 토큰 갱신 시도") val refreshToken = EncryptedPrefs.getString(PrefsKey.REFRESH_TOKEN_KEY) val tokenRefreshRequest = TokenRefreshRequest(refreshToken) - - // 토큰 갱신 val resp = authApi.tokenRefresh(tokenRefreshRequest).execute() EncryptedPrefs.clearPrefs() diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index 6e30ba87..b58fdd74 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -1,12 +1,11 @@ package kids.baba.mobile.data.network -import android.util.Log import com.google.gson.Gson import kids.baba.mobile.core.error.InvalidAccessTokenException import kids.baba.mobile.core.error.NullBodyException import kids.baba.mobile.core.error.UnKnownException -import kids.baba.mobile.domain.model.ErrorResponse import kids.baba.mobile.domain.model.ApiResult +import kids.baba.mobile.domain.model.ErrorResponse import retrofit2.Response import java.io.IOException import javax.inject.Inject From 72eac3fd1f15e2641565e5b37551c64331e2bc46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 2 Oct 2023 15:04:07 +0900 Subject: [PATCH 06/12] =?UTF-8?q?SignUp=20Api,=20Repository,=20DataSource?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kids/baba/mobile/data/api/MemberApi.kt | 1 + .../kids/baba/mobile/data/api/SignUpApi.kt | 27 +++++++++++++++++ .../member/MemberRemoteDataSource.kt | 1 + .../member/MemberRemoteDataSourceImpl.kt | 3 +- .../signup/SignUpRemoteDataSource.kt | 18 ++++++++++++ .../signup/SignUpRemoteDataSourceImpl.kt | 29 +++++++++++++++++++ .../kids/baba/mobile/data/di/ApiModule.kt | 6 ++++ .../baba/mobile/data/di/DataSourceModule.kt | 5 ++++ .../baba/mobile/data/di/RepositoryModule.kt | 3 ++ .../data/repository/MemberRepositoryImpl.kt | 1 + .../data/repository/SignUpRepositoryImpl.kt | 22 ++++++++++++++ .../domain/repository/MemberRepository.kt | 1 + .../domain/repository/SignUpRepository.kt | 18 ++++++++++++ .../mobile/domain/usecase/SignUpUseCase.kt | 22 +++++++++----- 14 files changed, 148 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt create mode 100644 app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt create mode 100644 app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt create mode 100644 app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt create mode 100644 app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt diff --git a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt index f09b07cd..df2329b3 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt @@ -14,6 +14,7 @@ interface MemberApi { @GET("members") suspend fun getMe(@Header("Authorization") accessToken: String): Response + // TODO: 없애기 @POST("members/baby") suspend fun signUpWithBabiesInfo( @Header("Authorization") diff --git a/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt new file mode 100644 index 00000000..2bac8e9e --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt @@ -0,0 +1,27 @@ +package kids.baba.mobile.data.api + +import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo +import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode +import kids.baba.mobile.domain.model.TokenResponse +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.Header +import retrofit2.http.POST + +interface SignUpApi { + @POST("members/baby") + suspend fun signUpWithBabiesInfo( + @Header("Authorization") + signToken: String, + @Body + signupRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ): Response + + @POST("members/baby/invite-code") + suspend fun signUpWithInviteCode( + @Header("Authorization") + signToken: String, + @Body + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ): Response +} \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt index cb9a001c..55e0a519 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt @@ -9,6 +9,7 @@ import kids.baba.mobile.domain.model.TokenResponse interface MemberRemoteDataSource { suspend fun getMe(accessToken: String): Result + // TODO: 없애기 suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt index 06e89185..6790b320 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt @@ -17,6 +17,7 @@ class MemberRemoteDataSourceImpl @Inject constructor( mapping = { it } ) + // TODO: 없애기 override suspend fun signUpWithBabiesInfo( signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo, @@ -25,7 +26,7 @@ class MemberRemoteDataSourceImpl @Inject constructor( mapping = { it } ) - + // TODO: 없애기 override suspend fun signUpWithInviteCode( signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt new file mode 100644 index 00000000..a8e3bc02 --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt @@ -0,0 +1,18 @@ +package kids.baba.mobile.data.datasource.signup + +import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo +import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode +import kids.baba.mobile.domain.model.TokenResponse + +interface SignUpRemoteDataSource { + suspend fun signUpWithBabiesInfo( + signToken: String, + signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ): Result + + suspend fun signUpWithInviteCode( + signToken: String, + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ): Result +} \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt new file mode 100644 index 00000000..c6f9586d --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt @@ -0,0 +1,29 @@ +package kids.baba.mobile.data.datasource.signup + +import kids.baba.mobile.data.api.SignUpApi +import kids.baba.mobile.data.network.SafeApiHelper +import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo +import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode +import javax.inject.Inject + +class SignUpRemoteDataSourceImpl @Inject constructor( + private val signUpApi: SignUpApi, + private val safeApiHelper: SafeApiHelper +) : SignUpRemoteDataSource { + override suspend fun signUpWithBabiesInfo( + signToken: String, + signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ) = safeApiHelper.getSafe( + remoteFetch = { signUpApi.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) }, + mapping = { it } + ) + + override suspend fun signUpWithInviteCode( + signToken: String, + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ) = safeApiHelper.getSafe( + remoteFetch = { signUpApi.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) }, + mapping = { it } + ) + +} \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt index 0c979ca7..2f19e215 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt @@ -95,6 +95,12 @@ object ApiModule { @BabaRetrofit retrofit: Retrofit ): MyPageApi = retrofit.create(MyPageApi::class.java) + @Singleton + @Provides + fun provideSignUpApi( + @BabaRetrofit retrofit: Retrofit + ): SignUpApi = retrofit.create(SignUpApi::class.java) + @Singleton @Provides fun provideFileDownApi( diff --git a/app/src/main/java/kids/baba/mobile/data/di/DataSourceModule.kt b/app/src/main/java/kids/baba/mobile/data/di/DataSourceModule.kt index 39b6e8be..31b5c8a5 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/DataSourceModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/DataSourceModule.kt @@ -18,6 +18,8 @@ import kids.baba.mobile.data.datasource.member.MemberRemoteDataSource import kids.baba.mobile.data.datasource.member.MemberRemoteDataSourceImpl import kids.baba.mobile.data.datasource.mypage.MyPageRemoteDataSource import kids.baba.mobile.data.datasource.mypage.MyPageRemoteDataSourceImpl +import kids.baba.mobile.data.datasource.signup.SignUpRemoteDataSource +import kids.baba.mobile.data.datasource.signup.SignUpRemoteDataSourceImpl @Module @InstallIn(SingletonComponent::class) @@ -37,6 +39,9 @@ abstract class DataSourceModule { @Binds abstract fun bindMyPageRemoteDataSource(myPageRemoteDataSourceImpl: MyPageRemoteDataSourceImpl): MyPageRemoteDataSource + @Binds + abstract fun bindSignUpRemoteDataSource(signUpRemoteDataSourceImpl: SignUpRemoteDataSourceImpl): SignUpRemoteDataSource + @Binds abstract fun bindFileRemoteDataSource(fileRemoteDataSourceImpl: FileRemoteDataSourceImpl): FileRemoteDataSource diff --git a/app/src/main/java/kids/baba/mobile/data/di/RepositoryModule.kt b/app/src/main/java/kids/baba/mobile/data/di/RepositoryModule.kt index 555737cc..4b0d2f6d 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/RepositoryModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/RepositoryModule.kt @@ -31,6 +31,9 @@ abstract class RepositoryModule { @Binds abstract fun bindMyPageRepository(myPageRepositoryImpl: MyPageRepositoryImpl): MyPageRepository + @Binds + abstract fun bindSignUpRepository(signUpRepositoryImpl: SignUpRepositoryImpl): SignUpRepository + @Binds abstract fun bindFileRemoteRepository(fileRepositoryImpl: FileRepositoryImpl): FileRepository } diff --git a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt index ccd52345..4cd41be9 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt @@ -10,6 +10,7 @@ class MemberRepositoryImpl @Inject constructor(private val memberRemoteDataSourc MemberRepository { override suspend fun getMe(accessToken: String) = memberRemoteDataSource.getMe(accessToken) + // TODO: 제거 override suspend fun signUpWithBabiesInfo( signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo diff --git a/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt new file mode 100644 index 00000000..ed1e9d22 --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt @@ -0,0 +1,22 @@ +package kids.baba.mobile.data.repository + +import kids.baba.mobile.data.datasource.signup.SignUpRemoteDataSource +import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo +import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode +import kids.baba.mobile.domain.repository.SignUpRepository +import javax.inject.Inject + +class SignUpRepositoryImpl @Inject constructor( + private val signUpRemoteDataSource: SignUpRemoteDataSource +) : SignUpRepository { + override suspend fun signUpWithBabiesInfo( + signToken: String, + signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ) = signUpRemoteDataSource.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) + + override suspend fun signUpWithInviteCode( + signToken: String, + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ) = signUpRemoteDataSource.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) + +} diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt index fd0a0ef1..57198270 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt @@ -9,6 +9,7 @@ import kids.baba.mobile.domain.model.TokenResponse interface MemberRepository { suspend fun getMe(accessToken: String): Result + // TODO: 없애기 suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt new file mode 100644 index 00000000..c5a871b9 --- /dev/null +++ b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt @@ -0,0 +1,18 @@ +package kids.baba.mobile.domain.repository + +import kids.baba.mobile.domain.model.Result +import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo +import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode +import kids.baba.mobile.domain.model.TokenResponse + +interface SignUpRepository { + suspend fun signUpWithBabiesInfo( + signToken: String, + signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ): Result + + suspend fun signUpWithInviteCode( + signToken: String, + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ): Result +} \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index 296a5fed..7208b2b8 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -6,23 +6,29 @@ import kids.baba.mobile.domain.model.Result import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.model.TokenResponse -import kids.baba.mobile.domain.repository.MemberRepository +import kids.baba.mobile.domain.repository.SignUpRepository import javax.inject.Inject class SignUpUseCase @Inject constructor( - private val memberRepository: MemberRepository + private val signUpRepository: SignUpRepository ) { - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result{ - val result = memberRepository.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) - if ( result is Result.Success){ + suspend fun signUpWithBabiesInfo( + signToken: String, + signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo + ): Result { + val result = signUpRepository.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) + if (result is Result.Success) { setJWTToken(result.data) } return result } - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result{ - val result = memberRepository.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) - if ( result is Result.Success){ + suspend fun signUpWithInviteCode( + signToken: String, + signUpRequestWithInviteCode: SignUpRequestWithInviteCode + ): Result { + val result = signUpRepository.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) + if (result is Result.Success) { setJWTToken(result.data) } return result From e1422d5efed523ea7d114614be3d8a3c4a012a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 2 Oct 2023 15:12:36 +0900 Subject: [PATCH 07/12] =?UTF-8?q?=EA=B8=B0=EC=A1=B4=20Member=20Api,=20Repo?= =?UTF-8?q?,=20DataSrc=20=EC=97=90=20=EC=9E=88=EB=8D=98=20sign=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=EB=93=A4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kids/baba/mobile/data/api/MemberApi.kt | 22 ------------------- .../member/MemberRemoteDataSource.kt | 8 ------- .../member/MemberRemoteDataSourceImpl.kt | 20 ----------------- .../data/repository/MemberRepositoryImpl.kt | 14 ------------ .../domain/repository/MemberRepository.kt | 8 ------- 5 files changed, 72 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt index df2329b3..c7a21732 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt @@ -1,33 +1,11 @@ package kids.baba.mobile.data.api import kids.baba.mobile.domain.model.MemberModel -import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo -import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode -import kids.baba.mobile.domain.model.TokenResponse import retrofit2.Response -import retrofit2.http.Body import retrofit2.http.GET import retrofit2.http.Header -import retrofit2.http.POST interface MemberApi { @GET("members") suspend fun getMe(@Header("Authorization") accessToken: String): Response - - // TODO: 없애기 - @POST("members/baby") - suspend fun signUpWithBabiesInfo( - @Header("Authorization") - signToken: String, - @Body - signupRequestWithBabiesInfo: SignUpRequestWithBabiesInfo - ): Response - - @POST("members/baby/invite-code") - suspend fun signUpWithInviteCode( - @Header("Authorization") - signToken: String, - @Body - signUpRequestWithInviteCode: SignUpRequestWithInviteCode - ): Response } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt index 55e0a519..274c2654 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt @@ -2,15 +2,7 @@ package kids.baba.mobile.data.datasource.member import kids.baba.mobile.domain.model.MemberModel import kids.baba.mobile.domain.model.Result -import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo -import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode -import kids.baba.mobile.domain.model.TokenResponse interface MemberRemoteDataSource { suspend fun getMe(accessToken: String): Result - - // TODO: 없애기 - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result - - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt index 6790b320..04f2c48f 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt @@ -2,8 +2,6 @@ package kids.baba.mobile.data.datasource.member import kids.baba.mobile.data.api.MemberApi import kids.baba.mobile.data.network.SafeApiHelper -import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo -import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import javax.inject.Inject class MemberRemoteDataSourceImpl @Inject constructor( @@ -16,22 +14,4 @@ class MemberRemoteDataSourceImpl @Inject constructor( }, mapping = { it } ) - - // TODO: 없애기 - override suspend fun signUpWithBabiesInfo( - signToken: String, - signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo, - ) = safeApiHelper.getSafe( - remoteFetch = { memberApi.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) }, - mapping = { it } - ) - - // TODO: 없애기 - override suspend fun signUpWithInviteCode( - signToken: String, - signUpRequestWithInviteCode: SignUpRequestWithInviteCode - ) = safeApiHelper.getSafe( - remoteFetch = { memberApi.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) }, - mapping = { it } - ) } diff --git a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt index 4cd41be9..8755cf9d 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt @@ -1,24 +1,10 @@ package kids.baba.mobile.data.repository import kids.baba.mobile.data.datasource.member.MemberRemoteDataSource -import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo -import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode import kids.baba.mobile.domain.repository.MemberRepository import javax.inject.Inject class MemberRepositoryImpl @Inject constructor(private val memberRemoteDataSource: MemberRemoteDataSource) : MemberRepository { override suspend fun getMe(accessToken: String) = memberRemoteDataSource.getMe(accessToken) - - // TODO: 제거 - override suspend fun signUpWithBabiesInfo( - signToken: String, - signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo - ) = memberRemoteDataSource.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) - - - override suspend fun signUpWithInviteCode( - signToken: String, - signUpRequestWithInviteCode: SignUpRequestWithInviteCode - ) = memberRemoteDataSource.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt index 57198270..6c42bdbc 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt @@ -2,15 +2,7 @@ package kids.baba.mobile.domain.repository import kids.baba.mobile.domain.model.MemberModel import kids.baba.mobile.domain.model.Result -import kids.baba.mobile.domain.model.SignUpRequestWithBabiesInfo -import kids.baba.mobile.domain.model.SignUpRequestWithInviteCode -import kids.baba.mobile.domain.model.TokenResponse interface MemberRepository { suspend fun getMe(accessToken: String): Result - - // TODO: 없애기 - suspend fun signUpWithBabiesInfo(signToken: String, signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo): Result - - suspend fun signUpWithInviteCode(signToken: String, signUpRequestWithInviteCode: SignUpRequestWithInviteCode): Result } From 5055092d2a670b9269faea36b7415714bdd6998e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Mon, 2 Oct 2023 17:06:15 +0900 Subject: [PATCH 08/12] =?UTF-8?q?signToken=20=EC=9D=84=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=EB=A1=9C=20=EB=84=A3=EC=96=B4=EC=A3=BC=EB=8A=94=20Sig?= =?UTF-8?q?nupClient=20=EC=99=80=20=EC=9D=B8=ED=84=B0=EC=85=89=ED=84=B0?= =?UTF-8?q?=EB=A5=BC=20=EB=94=B0=EB=A1=9C=20=EB=A7=8C=EB=93=A4=EA=B3=A0,?= =?UTF-8?q?=20=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=EC=97=90?= =?UTF-8?q?=EC=84=9C=20api=20=ED=98=B8=EC=B6=9C=20=EC=8B=9C=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=EB=A5=BC=20=EB=84=A3=EC=96=B4=EC=A3=BC=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=A7=8C=EB=93=A6.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baba/mobile/core/constant/PrefsKey.kt | 1 + .../kids/baba/mobile/data/api/SignUpApi.kt | 8 ++-- .../signup/SignUpRemoteDataSource.kt | 4 +- .../signup/SignUpRemoteDataSourceImpl.kt | 8 ++-- .../kids/baba/mobile/data/di/NetworkModule.kt | 43 ++++++++++++++++++- .../data/repository/SignUpRepositoryImpl.kt | 8 ++-- .../domain/repository/SignUpRepository.kt | 4 +- .../mobile/domain/usecase/SignUpUseCase.kt | 8 ++-- .../viewmodel/InputBabiesInfoViewModel.kt | 6 +-- .../viewmodel/TermsAgreeViewModel.kt | 3 ++ 10 files changed, 69 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/core/constant/PrefsKey.kt b/app/src/main/java/kids/baba/mobile/core/constant/PrefsKey.kt index 0f475db4..05bd8f25 100644 --- a/app/src/main/java/kids/baba/mobile/core/constant/PrefsKey.kt +++ b/app/src/main/java/kids/baba/mobile/core/constant/PrefsKey.kt @@ -3,6 +3,7 @@ package kids.baba.mobile.core.constant object PrefsKey { const val ACCESS_TOKEN_KEY = "ACCESS_TOKEN_KEY" const val REFRESH_TOKEN_KEY = "REFRESH_TOKEN_KEY" + const val SIGN_TOKEN_KEY = "SIGN_TOKEN_KEY" const val MEMBER_KEY = "MEMBER_KEY" const val BABY_KEY = "BABY_KEY" const val BABY_GROUP_TITLE_KEY = "BABY_GROUP_TITLE_KEY" diff --git a/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt index 2bac8e9e..3813a607 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt @@ -11,16 +11,16 @@ import retrofit2.http.POST interface SignUpApi { @POST("members/baby") suspend fun signUpWithBabiesInfo( - @Header("Authorization") - signToken: String, +// @Header("Authorization") +// signToken: String, @Body signupRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): Response @POST("members/baby/invite-code") suspend fun signUpWithInviteCode( - @Header("Authorization") - signToken: String, +// @Header("Authorization") +// signToken: String, @Body signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): Response diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt index b392c3c6..cdacd903 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt @@ -7,12 +7,12 @@ import kids.baba.mobile.domain.model.TokenResponse interface SignUpRemoteDataSource { suspend fun signUpWithBabiesInfo( - signToken: String, + /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult suspend fun signUpWithInviteCode( - signToken: String, + /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt index c6f9586d..99bfabf9 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt @@ -11,18 +11,18 @@ class SignUpRemoteDataSourceImpl @Inject constructor( private val safeApiHelper: SafeApiHelper ) : SignUpRemoteDataSource { override suspend fun signUpWithBabiesInfo( - signToken: String, + /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ) = safeApiHelper.getSafe( - remoteFetch = { signUpApi.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) }, + remoteFetch = { signUpApi.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) }, mapping = { it } ) override suspend fun signUpWithInviteCode( - signToken: String, + /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ) = safeApiHelper.getSafe( - remoteFetch = { signUpApi.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) }, + remoteFetch = { signUpApi.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) }, mapping = { it } ) diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index 8c4b693c..eb5cf3af 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -41,6 +41,17 @@ object NetworkModule { @Retention(AnnotationRetention.BINARY) annotation class AuthClient + @Qualifier + @Retention(AnnotationRetention.BINARY) + annotation class SignUpClient + + @Qualifier + @Retention(AnnotationRetention.BINARY) + annotation class NormalAuthInterceptor + + @Retention(AnnotationRetention.BINARY) + annotation class SignUpAuthInterceptor + @Singleton @Provides fun provideGsonBuilder(): GsonBuilder { @@ -63,6 +74,7 @@ object NetworkModule { @Singleton @Provides fun provideBabaClient( + @NormalAuthInterceptor authorizationInterceptor: Interceptor, tokenAuthenticator: Authenticator ): OkHttpClient { @@ -77,6 +89,23 @@ object NetworkModule { return builder.build() } + @SignUpClient + @Singleton + @Provides + fun provideSignUpClient( + @SignUpAuthInterceptor + authorizationInterceptor: Interceptor + ): OkHttpClient { + val builder = OkHttpClient.Builder() + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY + builder.apply { + addInterceptor(loggingInterceptor) + addInterceptor(authorizationInterceptor) + } + return builder.build() + } + @AuthClient @Singleton @Provides @@ -92,13 +121,25 @@ object NetworkModule { @Singleton @Provides - fun provideAuthorizationInterceptor() = Interceptor { chain -> + @NormalAuthInterceptor + fun provideNormalAuthorizationInterceptor() = Interceptor { chain -> val request = chain.request().newBuilder() val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) request.header("Authorization", "Bearer $accessToken") chain.proceed(request.build()) } + @Singleton + @Provides + @SignUpAuthInterceptor + fun provideSignUpAuthorizationInterceptor() = Interceptor { chain -> + val request = chain.request().newBuilder() + val signToken = EncryptedPrefs.getString(PrefsKey.SIGN_TOKEN_KEY) + request.header("Authorization", "Bearer $signToken") + chain.proceed(request.build()) + } + + @Singleton @Provides fun provideTokenAuthenticator( diff --git a/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt index ed1e9d22..702b9784 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt @@ -10,13 +10,13 @@ class SignUpRepositoryImpl @Inject constructor( private val signUpRemoteDataSource: SignUpRemoteDataSource ) : SignUpRepository { override suspend fun signUpWithBabiesInfo( - signToken: String, + /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo - ) = signUpRemoteDataSource.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) + ) = signUpRemoteDataSource.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) override suspend fun signUpWithInviteCode( - signToken: String, + /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode - ) = signUpRemoteDataSource.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) + ) = signUpRemoteDataSource.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt index 8bcf7501..9166564e 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt @@ -7,12 +7,12 @@ import kids.baba.mobile.domain.model.TokenResponse interface SignUpRepository { suspend fun signUpWithBabiesInfo( - signToken: String, + /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult suspend fun signUpWithInviteCode( - signToken: String, + /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index cab44c0d..d3feb954 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -13,10 +13,10 @@ class SignUpUseCase @Inject constructor( private val signUpRepository: SignUpRepository ) { suspend fun signUpWithBabiesInfo( - signToken: String, + /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult { - val result = signUpRepository.signUpWithBabiesInfo(signToken, signUpRequestWithBabiesInfo) + val result = signUpRepository.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) if (result is ApiResult.Success) { setJWTToken(result.data) } @@ -24,10 +24,10 @@ class SignUpUseCase @Inject constructor( } suspend fun signUpWithInviteCode( - signToken: String, + /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult { - val result = signUpRepository.signUpWithInviteCode(signToken, signUpRequestWithInviteCode) + val result = signUpRepository.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) if (result is ApiResult.Success) { setJWTToken(result.data) } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt index 3372985d..acce5c67 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt @@ -36,7 +36,7 @@ class InputBabiesInfoViewModel @Inject constructor( ) : ViewModel() { private val userProfile = savedStateHandle.get(KEY_USER_PROFILE) - private val signToken = savedStateHandle[KEY_SIGN_TOKEN] ?: "" +// private val signToken = savedStateHandle[KEY_SIGN_TOKEN] ?: "" private val _uiState: MutableStateFlow = MutableStateFlow(InputBabiesInfoUiState.Loading) @@ -359,7 +359,7 @@ class InputBabiesInfoViewModel @Inject constructor( viewModelScope.launch { when ( val result = signUpUseCase.signUpWithBabiesInfo( - signToken, + /*signToken,*/ SignUpRequestWithBabiesInfo( userProfile.name, userProfile.iconName, @@ -386,7 +386,7 @@ class InputBabiesInfoViewModel @Inject constructor( viewModelScope.launch { when ( val result = signUpUseCase.signUpWithInviteCode( - signToken, SignUpRequestWithInviteCode( + /*signToken,*/ SignUpRequestWithInviteCode( inviteCode, userProfile.name, userProfile.iconName diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt index 80e6bbca..1a49c0b8 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/TermsAgreeViewModel.kt @@ -5,6 +5,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kids.baba.mobile.R +import kids.baba.mobile.core.constant.PrefsKey.SIGN_TOKEN_KEY +import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.usecase.GetSignTokenUseCase import kids.baba.mobile.domain.usecase.GetTermsListUseCase @@ -89,6 +91,7 @@ class TermsAgreeViewModel @Inject constructor( when (result) { is ApiResult.Success -> { _signToken.value = result.data + EncryptedPrefs.putString(SIGN_TOKEN_KEY, result.data) } is ApiResult.NetworkError -> { _eventFlow.emit(TermsAgreeEvent.ShowSnackBar(R.string.baba_network_failed)) From f6bde6a661ec398fdfd4b34843cc3bfd8efe43f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Tue, 3 Oct 2023 17:10:11 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=9A=94=EC=B2=AD=20api=20=EC=9D=98=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EC=A0=9C=EA=B1=B0=20=EA=B7=B8=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20side=20effect=20=EC=B2=98=EB=A6=AC.=20=EC=B2=98?= =?UTF-8?q?=EC=9D=8C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=EC=8B=9C=20access,=20re?= =?UTF-8?q?fresh=20token=20=EC=9D=B4=20=EC=97=86=EC=96=B4,=20=EA=B3=84?= =?UTF-8?q?=EC=86=8D=ED=95=B4=EC=84=9C=20IntroActivity=20=EA=B0=80=20?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=EB=90=98=EA=B3=A0=20=EB=8B=A4=EC=8B=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=A0=95=EB=B3=B4=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20api=20=EB=A5=BC=20=ED=98=B8=EC=B6=9C=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A3=A8=ED=94=84=EC=97=90=20=EA=B0=87=ED=9E=88?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=EB=A5=BC=20GetMemberUseCase=20?= =?UTF-8?q?=EC=9D=98=20getMe=20=EB=A9=94=EC=84=9C=EB=93=9C=EC=97=90=20?= =?UTF-8?q?=EB=94=94=ED=8F=B4=ED=8A=B8=20=ED=8C=A8=EB=9F=AC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=EB=A5=BC=20=EB=84=A3=EC=96=B4=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kids/baba/mobile/data/api/MemberApi.kt | 3 +-- .../member/MemberRemoteDataSource.kt | 4 +-- .../member/MemberRemoteDataSourceImpl.kt | 4 +-- .../baba/mobile/data/network/SafeApiHelper.kt | 1 + .../mobile/data/network/SafeApiHelperImpl.kt | 8 +++--- .../data/repository/MemberRepositoryImpl.kt | 2 +- .../domain/repository/MemberRepository.kt | 2 +- .../mobile/domain/usecase/GetMemberUseCase.kt | 26 ++++++++----------- .../presentation/viewmodel/IntroViewModel.kt | 2 +- 9 files changed, 25 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt index c7a21732..b045b39f 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/MemberApi.kt @@ -3,9 +3,8 @@ package kids.baba.mobile.data.api import kids.baba.mobile.domain.model.MemberModel import retrofit2.Response import retrofit2.http.GET -import retrofit2.http.Header interface MemberApi { @GET("members") - suspend fun getMe(@Header("Authorization") accessToken: String): Response + suspend fun getMe(): Response } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt index ba7fdcda..9818bce5 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSource.kt @@ -1,9 +1,9 @@ package kids.baba.mobile.data.datasource.member -import kids.baba.mobile.domain.model.MemberModel import kids.baba.mobile.domain.model.ApiResult +import kids.baba.mobile.domain.model.MemberModel interface MemberRemoteDataSource { - suspend fun getMe(accessToken: String): ApiResult + suspend fun getMe(): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt index 04f2c48f..f13ce82a 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/member/MemberRemoteDataSourceImpl.kt @@ -8,9 +8,9 @@ class MemberRemoteDataSourceImpl @Inject constructor( private val memberApi: MemberApi, private val safeApiHelper: SafeApiHelper ) : MemberRemoteDataSource { - override suspend fun getMe(accessToken: String) = safeApiHelper.getSafe( + override suspend fun getMe() = safeApiHelper.getSafe( remoteFetch = { - memberApi.getMe(accessToken) + memberApi.getMe() }, mapping = { it } ) diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt index 0f891b5b..f1b88472 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelper.kt @@ -7,6 +7,7 @@ interface SafeApiHelper { suspend fun getSafe( remoteFetch: suspend () -> Response, mapping: (RequestType) -> (ResultType), + canRecursive: Boolean = true ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt index b58fdd74..6ec3dfc5 100644 --- a/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/network/SafeApiHelperImpl.kt @@ -15,7 +15,8 @@ class SafeApiHelperImpl @Inject constructor( private val gson = Gson() override suspend fun getSafe( remoteFetch: suspend () -> Response, - mapping: (RequestType) -> ResultType + mapping: (RequestType) -> ResultType, + canRecursive: Boolean ): ApiResult { lateinit var apiResult: ApiResult @@ -38,9 +39,10 @@ class SafeApiHelperImpl @Inject constructor( } if ((apiResult as? ApiResult.Failure)?.throwable is InvalidAccessTokenException) { - return getSafe(remoteFetch, mapping) + if (canRecursive) { + return getSafe(remoteFetch, mapping, canRecursive = false) + } } - return apiResult } diff --git a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt index 8755cf9d..c88a78fd 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/MemberRepositoryImpl.kt @@ -6,5 +6,5 @@ import javax.inject.Inject class MemberRepositoryImpl @Inject constructor(private val memberRemoteDataSource: MemberRemoteDataSource) : MemberRepository { - override suspend fun getMe(accessToken: String) = memberRemoteDataSource.getMe(accessToken) + override suspend fun getMe() = memberRemoteDataSource.getMe() } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt index 7f1133c9..6b2213f7 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/MemberRepository.kt @@ -4,5 +4,5 @@ import kids.baba.mobile.domain.model.ApiResult import kids.baba.mobile.domain.model.MemberModel interface MemberRepository { - suspend fun getMe(accessToken: String): ApiResult + suspend fun getMe(): ApiResult } diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt index c2fd6ac0..4e415769 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/GetMemberUseCase.kt @@ -1,7 +1,7 @@ package kids.baba.mobile.domain.usecase -import android.util.Log import kids.baba.mobile.core.constant.PrefsKey +import kids.baba.mobile.core.error.MemberNotFoundException import kids.baba.mobile.core.error.TokenEmptyException import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.ApiResult @@ -12,29 +12,25 @@ import javax.inject.Inject class GetMemberUseCase @Inject constructor(private val memberRepository: MemberRepository) { private val tag = "GetMemberUseCase" - suspend fun getMe(): ApiResult { + suspend fun getMe(callFromServer: Boolean = true): ApiResult { val member = runCatching { EncryptedPrefs.getMember(PrefsKey.MEMBER_KEY) }.getOrNull() return if (member == null) { - getMeNoPref() + if (callFromServer) { + getMeNoPref() + } + ApiResult.Unexpected(MemberNotFoundException()) } else { ApiResult.Success(member) } } suspend fun getMeNoPref(): ApiResult { - val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) - - return if (accessToken.isEmpty()) { - val msg = "accessToken이 존재하지 않음." - Log.e(tag, msg) - ApiResult.Unexpected(TokenEmptyException(msg)) - } else { - val result = memberRepository.getMe(accessToken) - if (result is ApiResult.Success) { - EncryptedPrefs.putMember(PrefsKey.MEMBER_KEY, result.data) - } - result + val result = memberRepository.getMe() + if (result is ApiResult.Success) { + EncryptedPrefs.putMember(PrefsKey.MEMBER_KEY, result.data) + return result } + return ApiResult.Unexpected(TokenEmptyException("accessToken이 존재하지 않음.")) } } diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt index 79ae7199..afd477a0 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/IntroViewModel.kt @@ -24,7 +24,7 @@ class IntroViewModel @Inject constructor( private val _deepLinkEvent = MutableEventFlow() val deepLinkEvent = _deepLinkEvent.asEventFlow() - suspend fun checkLogin() = getMemberUseCase.getMe() is ApiResult.Success + suspend fun checkLogin() = getMemberUseCase.getMe(callFromServer = false) is ApiResult.Success fun handleDeeplink() = viewModelScope.launch { when (getMemberUseCase.getMe()) { is ApiResult.Success -> _deepLinkEvent.emit(DeepLinkEvent.GoToInviteResultPage) From 2ed2659a5b67ab4894c0750c9c0919eb867d50fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Tue, 3 Oct 2023 17:31:04 +0900 Subject: [PATCH 10/12] =?UTF-8?q?sign=20token=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20=EC=A3=BC=EC=84=9D=20=EC=B3=A4=EB=8D=98=20?= =?UTF-8?q?=EA=B2=83=EB=93=A4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt | 4 ---- .../mobile/data/datasource/signup/SignUpRemoteDataSource.kt | 2 -- .../data/datasource/signup/SignUpRemoteDataSourceImpl.kt | 6 ++---- app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt | 5 +++-- .../baba/mobile/data/repository/SignUpRepositoryImpl.kt | 6 ++---- .../kids/baba/mobile/domain/repository/SignUpRepository.kt | 2 -- .../java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt | 4 +--- .../presentation/viewmodel/InputBabiesInfoViewModel.kt | 3 +-- 8 files changed, 9 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt index 3813a607..95299844 100644 --- a/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt +++ b/app/src/main/java/kids/baba/mobile/data/api/SignUpApi.kt @@ -11,16 +11,12 @@ import retrofit2.http.POST interface SignUpApi { @POST("members/baby") suspend fun signUpWithBabiesInfo( -// @Header("Authorization") -// signToken: String, @Body signupRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): Response @POST("members/baby/invite-code") suspend fun signUpWithInviteCode( -// @Header("Authorization") -// signToken: String, @Body signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): Response diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt index cdacd903..d3e1b8c1 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSource.kt @@ -7,12 +7,10 @@ import kids.baba.mobile.domain.model.TokenResponse interface SignUpRemoteDataSource { suspend fun signUpWithBabiesInfo( - /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult suspend fun signUpWithInviteCode( - /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt index 99bfabf9..1fb5b069 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/signup/SignUpRemoteDataSourceImpl.kt @@ -11,18 +11,16 @@ class SignUpRemoteDataSourceImpl @Inject constructor( private val safeApiHelper: SafeApiHelper ) : SignUpRemoteDataSource { override suspend fun signUpWithBabiesInfo( - /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ) = safeApiHelper.getSafe( - remoteFetch = { signUpApi.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) }, + remoteFetch = { signUpApi.signUpWithBabiesInfo(signUpRequestWithBabiesInfo) }, mapping = { it } ) override suspend fun signUpWithInviteCode( - /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ) = safeApiHelper.getSafe( - remoteFetch = { signUpApi.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) }, + remoteFetch = { signUpApi.signUpWithInviteCode(signUpRequestWithInviteCode) }, mapping = { it } ) diff --git a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt index eb5cf3af..039cc075 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/NetworkModule.kt @@ -49,6 +49,7 @@ object NetworkModule { @Retention(AnnotationRetention.BINARY) annotation class NormalAuthInterceptor + @Qualifier @Retention(AnnotationRetention.BINARY) annotation class SignUpAuthInterceptor @@ -119,9 +120,9 @@ object NetworkModule { return builder.build() } + @NormalAuthInterceptor @Singleton @Provides - @NormalAuthInterceptor fun provideNormalAuthorizationInterceptor() = Interceptor { chain -> val request = chain.request().newBuilder() val accessToken = EncryptedPrefs.getString(PrefsKey.ACCESS_TOKEN_KEY) @@ -129,9 +130,9 @@ object NetworkModule { chain.proceed(request.build()) } + @SignUpAuthInterceptor @Singleton @Provides - @SignUpAuthInterceptor fun provideSignUpAuthorizationInterceptor() = Interceptor { chain -> val request = chain.request().newBuilder() val signToken = EncryptedPrefs.getString(PrefsKey.SIGN_TOKEN_KEY) diff --git a/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt index 702b9784..02bda614 100644 --- a/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/repository/SignUpRepositoryImpl.kt @@ -10,13 +10,11 @@ class SignUpRepositoryImpl @Inject constructor( private val signUpRemoteDataSource: SignUpRemoteDataSource ) : SignUpRepository { override suspend fun signUpWithBabiesInfo( - /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo - ) = signUpRemoteDataSource.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) + ) = signUpRemoteDataSource.signUpWithBabiesInfo(signUpRequestWithBabiesInfo) override suspend fun signUpWithInviteCode( - /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode - ) = signUpRemoteDataSource.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) + ) = signUpRemoteDataSource.signUpWithInviteCode(signUpRequestWithInviteCode) } diff --git a/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt index 9166564e..ba586e1c 100644 --- a/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt +++ b/app/src/main/java/kids/baba/mobile/domain/repository/SignUpRepository.kt @@ -7,12 +7,10 @@ import kids.baba.mobile.domain.model.TokenResponse interface SignUpRepository { suspend fun signUpWithBabiesInfo( - /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult suspend fun signUpWithInviteCode( - /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index d3feb954..4e157e0d 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -13,10 +13,9 @@ class SignUpUseCase @Inject constructor( private val signUpRepository: SignUpRepository ) { suspend fun signUpWithBabiesInfo( - /*signToken: String,*/ signUpRequestWithBabiesInfo: SignUpRequestWithBabiesInfo ): ApiResult { - val result = signUpRepository.signUpWithBabiesInfo(/*signToken,*/ signUpRequestWithBabiesInfo) + val result = signUpRepository.signUpWithBabiesInfo(signUpRequestWithBabiesInfo) if (result is ApiResult.Success) { setJWTToken(result.data) } @@ -24,7 +23,6 @@ class SignUpUseCase @Inject constructor( } suspend fun signUpWithInviteCode( - /*signToken: String,*/ signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult { val result = signUpRepository.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt index acce5c67..3f1d2b29 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt @@ -359,7 +359,6 @@ class InputBabiesInfoViewModel @Inject constructor( viewModelScope.launch { when ( val result = signUpUseCase.signUpWithBabiesInfo( - /*signToken,*/ SignUpRequestWithBabiesInfo( userProfile.name, userProfile.iconName, @@ -386,7 +385,7 @@ class InputBabiesInfoViewModel @Inject constructor( viewModelScope.launch { when ( val result = signUpUseCase.signUpWithInviteCode( - /*signToken,*/ SignUpRequestWithInviteCode( + SignUpRequestWithInviteCode( inviteCode, userProfile.name, userProfile.iconName From d1ef2e5f6c2fe5f7f46af979a296f78f00145d65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Tue, 3 Oct 2023 19:07:49 +0900 Subject: [PATCH 11/12] =?UTF-8?q?SignUpRetrofit=20=EC=9D=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kids/baba/mobile/data/di/ApiModule.kt | 15 ++++++++++++++- .../baba/mobile/domain/usecase/SignUpUseCase.kt | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt index 98aa141c..12747e98 100644 --- a/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt +++ b/app/src/main/java/kids/baba/mobile/data/di/ApiModule.kt @@ -20,6 +20,10 @@ object ApiModule { @Retention(AnnotationRetention.BINARY) annotation class BabaRetrofit + @Qualifier + @Retention(AnnotationRetention.BINARY) + annotation class SignUpRetrofit + @Qualifier @Retention(AnnotationRetention.BINARY) annotation class AuthRetrofit @@ -37,6 +41,15 @@ object ApiModule { gsonConverterFactory: GsonConverterFactory ): Retrofit = buildBaseRetrofit(okHttpClient, gsonConverterFactory) + @SignUpRetrofit + @Singleton + @Provides + fun provideSignUpRetrofit( + @NetworkModule.SignUpClient + okHttpClient: OkHttpClient, + gsonConverterFactory: GsonConverterFactory + ): Retrofit = buildBaseRetrofit(okHttpClient, gsonConverterFactory) + @AuthRetrofit @Singleton @Provides @@ -102,7 +115,7 @@ object ApiModule { @Singleton @Provides fun provideSignUpApi( - @BabaRetrofit retrofit: Retrofit + @SignUpRetrofit retrofit: Retrofit ): SignUpApi = retrofit.create(SignUpApi::class.java) @Singleton diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index 4e157e0d..a0aeefc8 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -1,5 +1,6 @@ package kids.baba.mobile.domain.usecase +import android.util.Log import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.ApiResult @@ -35,5 +36,6 @@ class SignUpUseCase @Inject constructor( private fun setJWTToken(token: TokenResponse) { EncryptedPrefs.putString(PrefsKey.ACCESS_TOKEN_KEY, token.accessToken) EncryptedPrefs.putString(PrefsKey.REFRESH_TOKEN_KEY, token.refreshToken) + Log.e("token", "acessToken: ${token.accessToken} refreshToken: ${token.refreshToken}") } } \ No newline at end of file From 42c53c9c55ae595ef045c5a312106dbf4ba0d77e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=A7=80=ED=9B=88?= Date: Tue, 3 Oct 2023 19:23:14 +0900 Subject: [PATCH 12/12] =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datasource/mypage/MyPageRemoteDataSourceImpl.kt | 1 - .../java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt | 4 +--- .../presentation/viewmodel/InputBabiesInfoViewModel.kt | 7 +++---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt index 4c9b65d2..629bf3be 100644 --- a/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt +++ b/app/src/main/java/kids/baba/mobile/data/datasource/mypage/MyPageRemoteDataSourceImpl.kt @@ -24,7 +24,6 @@ class MyPageRemoteDataSourceImpl @Inject constructor( } else { result } -// return if (result is Result.Success) flow { emit(result.data) } else flow {} } override suspend fun loadBabyProfile(babyId: String): ApiResult { diff --git a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt index a0aeefc8..62de60b2 100644 --- a/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt +++ b/app/src/main/java/kids/baba/mobile/domain/usecase/SignUpUseCase.kt @@ -1,6 +1,5 @@ package kids.baba.mobile.domain.usecase -import android.util.Log import kids.baba.mobile.core.constant.PrefsKey import kids.baba.mobile.core.utils.EncryptedPrefs import kids.baba.mobile.domain.model.ApiResult @@ -26,7 +25,7 @@ class SignUpUseCase @Inject constructor( suspend fun signUpWithInviteCode( signUpRequestWithInviteCode: SignUpRequestWithInviteCode ): ApiResult { - val result = signUpRepository.signUpWithInviteCode(/*signToken,*/ signUpRequestWithInviteCode) + val result = signUpRepository.signUpWithInviteCode(signUpRequestWithInviteCode) if (result is ApiResult.Success) { setJWTToken(result.data) } @@ -36,6 +35,5 @@ class SignUpUseCase @Inject constructor( private fun setJWTToken(token: TokenResponse) { EncryptedPrefs.putString(PrefsKey.ACCESS_TOKEN_KEY, token.accessToken) EncryptedPrefs.putString(PrefsKey.REFRESH_TOKEN_KEY, token.refreshToken) - Log.e("token", "acessToken: ${token.accessToken} refreshToken: ${token.refreshToken}") } } \ No newline at end of file diff --git a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt index 3f1d2b29..79baf754 100644 --- a/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt +++ b/app/src/main/java/kids/baba/mobile/presentation/viewmodel/InputBabiesInfoViewModel.kt @@ -36,7 +36,6 @@ class InputBabiesInfoViewModel @Inject constructor( ) : ViewModel() { private val userProfile = savedStateHandle.get(KEY_USER_PROFILE) -// private val signToken = savedStateHandle[KEY_SIGN_TOKEN] ?: "" private val _uiState: MutableStateFlow = MutableStateFlow(InputBabiesInfoUiState.Loading) @@ -309,7 +308,7 @@ class InputBabiesInfoViewModel @Inject constructor( ) ) viewModelScope.launch { - when(val result = getBabiesInfoByInviteCodeUseCase(inviteCode)){ + when (val result = getBabiesInfoByInviteCodeUseCase(inviteCode)) { is ApiResult.Success -> { val sj = StringJoiner(", ") val babiesList = result.data.babies @@ -371,7 +370,7 @@ class InputBabiesInfoViewModel @Inject constructor( } else -> { val throwable = result.getThrowableOrNull() - if(throwable != null){ + if (throwable != null) { setUiState(InputBabiesInfoUiState.SignUpFailed(throwable)) } } @@ -396,7 +395,7 @@ class InputBabiesInfoViewModel @Inject constructor( } else -> { val throwable = result.getThrowableOrNull() - if(throwable != null){ + if (throwable != null) { setUiState(InputBabiesInfoUiState.SignUpFailed(throwable)) } }