diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt index d34f8454..86174284 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt @@ -3,7 +3,6 @@ package com.jjbaksa.jjbaksa.di import android.content.Context import com.jjbaksa.data.api.AuthApi import com.jjbaksa.data.api.NoAuthApi -import com.jjbaksa.data.api.TestNoAuthApi import com.jjbaksa.data.database.UserDao import com.jjbaksa.data.datasource.local.HomeLocalDataSource import com.jjbaksa.data.datasource.local.UserLocalDataSource @@ -60,7 +59,6 @@ object DataSourceModule { fun provideRemoteSearchDataSource( authApi: AuthApi, noAuthApi: NoAuthApi, - testNoAuthApi: TestNoAuthApi ): SearchRemoteDataSource { return SearchRemoteDataSource(authApi, noAuthApi) } @@ -85,9 +83,8 @@ object DataSourceModule { fun provideRemoteShopDataSource( authApi: AuthApi, noAuthApi: NoAuthApi, - testNoAuthApi: TestNoAuthApi ): ShopRemoteDataSource { - return ShopRemoteDataSource(authApi, noAuthApi, testNoAuthApi) + return ShopRemoteDataSource(authApi, noAuthApi) } @Provides @@ -95,9 +92,8 @@ object DataSourceModule { fun provideRemoteScrapDataSource( authApi: AuthApi, noAuthApi: NoAuthApi, - testNoAuthApi: TestNoAuthApi ): ScrapRemoteDataSource { - return ScrapRemoteDataSource(authApi, noAuthApi, testNoAuthApi) + return ScrapRemoteDataSource(authApi, noAuthApi) } @Provides diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt index f54b44a8..fb2baf6c 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt @@ -8,7 +8,6 @@ import com.jjbaksa.data.BASE_URL import com.jjbaksa.data.api.AuthApi import com.jjbaksa.data.api.NoAuthApi import com.jjbaksa.data.api.RefreshApi -import com.jjbaksa.data.api.TestNoAuthApi import com.jjbaksa.data.database.PreferenceKeys import com.jjbaksa.data.database.userDataStore import com.jjbaksa.jjbaksa.JjbaksaApp @@ -40,10 +39,6 @@ annotation class AUTH @Retention(AnnotationRetention.BINARY) annotation class NOAUTH -@Qualifier -@Retention(AnnotationRetention.BINARY) -annotation class TEST - @Qualifier @Retention(AnnotationRetention.BINARY) annotation class REFRESH @@ -189,35 +184,4 @@ object NetworkModule { fun provideAuthApi(@AUTH retrofit: Retrofit): AuthApi { return retrofit.create(AuthApi::class.java) } - - /** - * MOCK TEST - */ - @TEST - @Provides - @Singleton - fun testProvideNoAuthOkHttpClient(): OkHttpClient { - return OkHttpClient.Builder().apply { - connectTimeout(10, TimeUnit.SECONDS) - readTimeout(30, TimeUnit.SECONDS) - writeTimeout(15, TimeUnit.SECONDS) - addInterceptor(httpLoggingInterceptor) - }.build() - } - @TEST - @Provides - @Singleton - fun testProvideNoAuthRetrofit(@TEST okHttpClient: OkHttpClient): Retrofit { - return Retrofit.Builder() - .client(okHttpClient) - .baseUrl("https://run.mocky.io/") - .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(GsonConverterFactory.create()) - .build() - } - @Provides - @Singleton - fun testProvideNoAuthApi(@TEST retrofit: Retrofit): TestNoAuthApi { - return retrofit.create(TestNoAuthApi::class.java) - } } diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/viewmodel/HomeViewModel.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/viewmodel/HomeViewModel.kt index 65f478b3..d3ea33d8 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/mainpage/home/viewmodel/HomeViewModel.kt @@ -12,15 +12,17 @@ import com.jjbaksa.jjbaksa.model.ShopContent import com.jjbaksa.jjbaksa.util.MyInfo import com.jjbaksa.jjbaksa.util.SingleLiveEvent import com.jjbaksa.jjbaksa.util.toShopContent +import com.kakao.sdk.user.UserApiClient import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch +import timber.log.Timber import javax.inject.Inject @HiltViewModel class HomeViewModel @Inject constructor( private val homeRepository: HomeRepository, private val userUseCase: UserUseCase, - private val shopUseCase: ShopUseCase + private val shopUseCase: ShopUseCase, ) : BaseViewModel() { val location = MutableLiveData() val lastLocation = MutableLiveData() @@ -48,7 +50,7 @@ class HomeViewModel @Inject constructor( optionsNearby: Int, optionsScrap: Int, lat: Double, - lng: Double + lng: Double, ) { viewModelScope.launch(ceh) { shopUseCase.invoke(optionsFriend, optionsNearby, optionsScrap, lat, lng) { msg -> @@ -72,6 +74,23 @@ class HomeViewModel @Inject constructor( MyInfo.reviews = homeRepository.getMyInfoReviews() MyInfo.profileImage = homeRepository.getMyInfoProfileImage() MyInfo.token = homeRepository.getMyInfoToken() + getKakaoInfo() + } + } + } + } + + fun getKakaoInfo() { + UserApiClient.instance.me { user, error -> + if (error != null) { + Timber.tag("kakao_user_error").e(error) + } else if (user != null) { + if (homeRepository.getMyInfoAccount().isEmpty()) MyInfo.account = + user.kakaoAccount?.email.toString() + if (homeRepository.getMyInfoProfileImage().isEmpty()) MyInfo.profileImage = + user.kakaoAccount?.profile?.thumbnailImageUrl.toString() + if (homeRepository.getMyInfoNickname().isEmpty()) { + MyInfo.nickname = user.kakaoAccount?.profile?.nickname.toString() } } } diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/ui/social/SocialLoginActivity.kt b/app/src/main/java/com/jjbaksa/jjbaksa/ui/social/SocialLoginActivity.kt index 4747d5cd..588cc5f7 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/ui/social/SocialLoginActivity.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/ui/social/SocialLoginActivity.kt @@ -7,6 +7,7 @@ import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.lifecycle.flowWithLifecycle +import androidx.lifecycle.lifecycleScope import com.google.android.gms.auth.api.signin.GoogleSignIn import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.android.gms.auth.api.signin.GoogleSignInOptions @@ -19,11 +20,14 @@ import com.jjbaksa.jjbaksa.BuildConfig import com.jjbaksa.jjbaksa.R import com.jjbaksa.jjbaksa.base.BaseActivity import com.jjbaksa.jjbaksa.databinding.ActivitySocialLoginBinding +import com.jjbaksa.jjbaksa.ui.mainpage.MainPageActivity +import com.jjbaksa.jjbaksa.ui.social.KakaoService.Companion.KAKAO import com.jjbaksa.jjbaksa.util.UiState import com.navercorp.nid.NaverIdLoginSDK import com.navercorp.nid.oauth.NidOAuthBehavior import com.navercorp.nid.oauth.OAuthLoginCallback import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import timber.log.Timber import javax.inject.Inject @@ -62,7 +66,7 @@ class SocialLoginActivity : BaseActivity() { buttonKakaoLogin.setOnClickListener { kakaoService.initKakaoLogin { Timber.tag("kakao_token").e("$it") -// socialLoginViewModel.postLoginSNS("Bearer $it", KAKAO) + socialLoginViewModel.postLoginSNS(it, KAKAO) } } buttonNaverLogin.setOnClickListener { @@ -108,6 +112,9 @@ class SocialLoginActivity : BaseActivity() { when (uiState) { is UiState.Success -> { Timber.tag("kakao").e("success") + finishAffinity() + val intent = Intent(this, MainPageActivity::class.java) + startActivity(intent) } is UiState.Failure -> { @@ -116,7 +123,7 @@ class SocialLoginActivity : BaseActivity() { else -> Unit // Loading etc... } - } + }.launchIn(lifecycleScope) } private fun initNaverLogin() { diff --git a/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt b/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt index f39438a8..2de9f03a 100644 --- a/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt +++ b/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt @@ -23,7 +23,7 @@ import retrofit2.http.Path import retrofit2.http.Query interface NoAuthApi { - @GET("login/{sns-type}") + @POST("login/{sns-type}") suspend fun postLoginSNS( @Header("Authorization") token: String, @Path("sns-type") snsType: String diff --git a/data/src/main/java/com/jjbaksa/data/api/RefreshApi.kt b/data/src/main/java/com/jjbaksa/data/api/RefreshApi.kt index 514c6072..282255c4 100644 --- a/data/src/main/java/com/jjbaksa/data/api/RefreshApi.kt +++ b/data/src/main/java/com/jjbaksa/data/api/RefreshApi.kt @@ -1,9 +1,9 @@ package com.jjbaksa.data.api import com.jjbaksa.data.model.user.LoginResp import retrofit2.Response -import retrofit2.http.POST +import retrofit2.http.GET interface RefreshApi { - @POST("user/refresh") + @GET("user/refresh") suspend fun getRefreshAuth(): Response } diff --git a/data/src/main/java/com/jjbaksa/data/api/TestNoAuthApi.kt b/data/src/main/java/com/jjbaksa/data/api/TestNoAuthApi.kt deleted file mode 100644 index 008a83c5..00000000 --- a/data/src/main/java/com/jjbaksa/data/api/TestNoAuthApi.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.jjbaksa.data.api - -import com.jjbaksa.data.model.shop.ShopsMapsResp -import com.jjbaksa.data.model.pin.ShopDetailResp -import com.jjbaksa.data.model.scrap.ScrapsResp -import retrofit2.Response -import retrofit2.http.GET - -interface TestNoAuthApi { - /** - * AuthApi getShopDetail TEST - */ - @GET("v3/330d86e7-1702-4ae0-a39a-e2ba6b8fe431") - suspend fun getShopDetail(): Response - @GET("v3/b54d97a9-8a99-40a0-be17-f1b3fe5a8efd") - suspend fun getMapShop(): Response> - @GET("v3/fbaf3d64-a631-40ec-b325-c224e8e34b34") - suspend fun getScraps(): Response -} diff --git a/data/src/main/java/com/jjbaksa/data/datasource/remote/ScrapRemoteDataSource.kt b/data/src/main/java/com/jjbaksa/data/datasource/remote/ScrapRemoteDataSource.kt index 0dbf1cca..8b4cd412 100644 --- a/data/src/main/java/com/jjbaksa/data/datasource/remote/ScrapRemoteDataSource.kt +++ b/data/src/main/java/com/jjbaksa/data/datasource/remote/ScrapRemoteDataSource.kt @@ -2,7 +2,6 @@ package com.jjbaksa.data.datasource.remote import com.jjbaksa.data.api.AuthApi import com.jjbaksa.data.api.NoAuthApi -import com.jjbaksa.data.api.TestNoAuthApi import com.jjbaksa.data.datasource.ScrapDataSource import com.jjbaksa.data.model.scrap.AddShopScrapBodyReq import com.jjbaksa.data.model.scrap.AddShopScrapResp @@ -13,8 +12,7 @@ import javax.inject.Inject class ScrapRemoteDataSource @Inject constructor( private val authApi: AuthApi, - private val noAuthApi: NoAuthApi, - private val testNoAuthApi: TestNoAuthApi + private val noAuthApi: NoAuthApi ) : ScrapDataSource { override suspend fun getShopScrap(scrapId: Int): Response { return authApi.getShopScrap(scrapId) @@ -28,7 +26,6 @@ class ScrapRemoteDataSource @Inject constructor( } override suspend fun getScraps(user: Int?, cursor: Int?, size: Int): Response { -// return testNoAuthApi.getScraps() return authApi.getScraps(user, cursor, size) } diff --git a/data/src/main/java/com/jjbaksa/data/datasource/remote/ShopRemoteDataSource.kt b/data/src/main/java/com/jjbaksa/data/datasource/remote/ShopRemoteDataSource.kt index 3a75ee06..6dddbd34 100644 --- a/data/src/main/java/com/jjbaksa/data/datasource/remote/ShopRemoteDataSource.kt +++ b/data/src/main/java/com/jjbaksa/data/datasource/remote/ShopRemoteDataSource.kt @@ -2,7 +2,6 @@ package com.jjbaksa.data.datasource.remote import com.jjbaksa.data.api.AuthApi import com.jjbaksa.data.api.NoAuthApi -import com.jjbaksa.data.api.TestNoAuthApi import com.jjbaksa.data.datasource.ShopDataSource import com.jjbaksa.data.model.shop.ShopsMapsResp import com.jjbaksa.data.model.pin.ShopDetailResp @@ -13,7 +12,6 @@ import javax.inject.Inject class ShopRemoteDataSource @Inject constructor( private val authApi: AuthApi, private val noAuthApi: NoAuthApi, - private val testNoAuthApi: TestNoAuthApi ) : ShopDataSource { override suspend fun getShopsMaps( optionsFriend: Int, @@ -21,12 +19,10 @@ class ShopRemoteDataSource @Inject constructor( optionsScrap: Int, location: LocationBody ): Response> { -// return testNoAuthApi.getMapShop() return authApi.getShopsMaps(optionsFriend, optionsNearby, optionsScrap, location) } override suspend fun getShopDetail(placeId: String): Response { -// return testNoAuthApi.getShopDetail() return authApi.getShopDetail(placeId) } } diff --git a/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt b/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt index 10615f6e..a4b38a78 100644 --- a/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt +++ b/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt @@ -28,8 +28,8 @@ class UserRepositoryImpl @Inject constructor( ) : UserRepository { override suspend fun postLoginSNS(token: String, snsType: String): Result = runCatching { userRemoteDataSource.postLoginSNS(token, snsType).toLoginResult() }.onSuccess { - userRemoteDataSource.saveAccessToken(it.accessToken) - userRemoteDataSource.saveRefreshToken(it.refreshToken) + userLocalDataSource.saveAccessToken(it.accessToken) + userLocalDataSource.saveRefreshToken(it.refreshToken) } override suspend fun getUserMe(): Flow> {