From 977a991553b2806fca0f2c4403de1b5eac1d4621 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Mon, 15 Apr 2024 21:13:53 +0900 Subject: [PATCH 01/25] =?UTF-8?q?feat(SignInActivity):=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/src/main/AndroidManifest.xml | 4 + .../ui/signin/KakaoAuthorization.kt | 49 ++++++++++++ .../presentation/ui/signin/SignInActivity.kt | 72 ++++++++++++++++++ .../main/res/drawable/bg_kakao_sign_in.xml | 9 +++ .../src/main/res/drawable/bg_sign_in.png | Bin 0 -> 332413 bytes .../src/main/res/drawable/ic_kakao_logo.xml | 10 +++ .../src/main/res/layout/activity_sign_in.xml | 66 ++++++++++++++++ .../src/main/res/values/strings.xml | 5 ++ 8 files changed, 215 insertions(+) create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt create mode 100644 android/festago/presentation/src/main/res/drawable/bg_kakao_sign_in.xml create mode 100644 android/festago/presentation/src/main/res/drawable/bg_sign_in.png create mode 100644 android/festago/presentation/src/main/res/drawable/ic_kakao_logo.xml create mode 100644 android/festago/presentation/src/main/res/layout/activity_sign_in.xml diff --git a/android/festago/presentation/src/main/AndroidManifest.xml b/android/festago/presentation/src/main/AndroidManifest.xml index fb67ef37a..66d419487 100644 --- a/android/festago/presentation/src/main/AndroidManifest.xml +++ b/android/festago/presentation/src/main/AndroidManifest.xml @@ -2,6 +2,10 @@ + { + return runCatching { + if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { + authorizeWithKakaoTalk(context) + } else { + authorizeWithKakaoAccount(context) + } + } + } +} + +private suspend fun authorizeWithKakaoTalk(context: Context): String { + return suspendCoroutine { continuation -> + AuthCodeClient.instance.authorizeWithKakaoTalk(context) { code: String?, error: Throwable? -> + if (error != null) { + continuation.resumeWithException(error) + } else if (code != null) { + continuation.resume(code) + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + } + } + } +} + +private suspend fun authorizeWithKakaoAccount(context: Context): String { + return suspendCoroutine { continuation -> + AuthCodeClient.instance.authorizeWithKakaoAccount(context) { code: String?, error: Throwable? -> + if (error != null) { + continuation.resumeWithException(error) + } else if (code != null) { + continuation.resume(code) + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + } + } + } +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt new file mode 100644 index 000000000..53be44f15 --- /dev/null +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -0,0 +1,72 @@ +package com.festago.festago.presentation.ui.signin + +import android.content.Context +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope +import com.festago.festago.presentation.databinding.ActivitySignInBinding +import com.festago.festago.presentation.ui.home.HomeActivity +import com.festago.festago.presentation.util.setOnApplyWindowInsetsCompatListener +import com.festago.festago.presentation.util.setStatusBarMode +import kotlinx.coroutines.launch + +class SignInActivity : AppCompatActivity() { + + private val binding: ActivitySignInBinding by lazy { + ActivitySignInBinding.inflate(layoutInflater) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + initView() + setContentView(binding.root) + } + + private fun initWindowInsets() { + WindowCompat.setDecorFitsSystemWindows(window, false) + binding.root.setOnApplyWindowInsetsCompatListener { view, windowInsets -> + val navigationInsets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) + view.setPadding(0, 0, 0, navigationInsets.bottom) + window.navigationBarColor = Color.TRANSPARENT + window.statusBarColor = Color.TRANSPARENT + setStatusBarMode(isLight = false, backgroundColor = Color.TRANSPARENT) + windowInsets + } + } + + private fun initView() { + initWindowInsets() + initKakaoLogin() + initWithoutLogin() + } + + private fun initKakaoLogin() { + binding.btnKakaoLogin.setOnClickListener { + lifecycleScope.launch { + KakaoAuthorization().getAuthCode(this@SignInActivity) + .onSuccess { + startActivity(HomeActivity.getIntent(this@SignInActivity)) + finish() + }.onFailure {} + } + } + } + + private fun initWithoutLogin() { + binding.tvWithoutLogin.setOnClickListener { + startActivity(HomeActivity.getIntent(this)) + finish() + } + } + + companion object { + + fun getIntent(context: Context): Intent { + return Intent(context, SignInActivity::class.java) + } + } +} diff --git a/android/festago/presentation/src/main/res/drawable/bg_kakao_sign_in.xml b/android/festago/presentation/src/main/res/drawable/bg_kakao_sign_in.xml new file mode 100644 index 000000000..b4e9fe9bc --- /dev/null +++ b/android/festago/presentation/src/main/res/drawable/bg_kakao_sign_in.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/festago/presentation/src/main/res/drawable/bg_sign_in.png b/android/festago/presentation/src/main/res/drawable/bg_sign_in.png new file mode 100644 index 0000000000000000000000000000000000000000..921fdc3bab21298c42e6ca3447c9898a21614b52 GIT binary patch literal 332413 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�R(ab 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%0D0^Obhh9+;q=j5R*Yla;5*#e3SvOrlG3>Qn-W>zY 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
EiZ1W0g#$ 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%0DAmHHHyY5=?s_qNCk7eZID4N6QnZt(aRf# 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 literal 0 HcmV?d00001 diff --git a/android/festago/presentation/src/main/res/drawable/ic_kakao_logo.xml b/android/festago/presentation/src/main/res/drawable/ic_kakao_logo.xml new file mode 100644 index 000000000..7d61060d2 --- /dev/null +++ b/android/festago/presentation/src/main/res/drawable/ic_kakao_logo.xml @@ -0,0 +1,10 @@ + + + diff --git a/android/festago/presentation/src/main/res/layout/activity_sign_in.xml b/android/festago/presentation/src/main/res/layout/activity_sign_in.xml new file mode 100644 index 000000000..a94efe74c --- /dev/null +++ b/android/festago/presentation/src/main/res/layout/activity_sign_in.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + diff --git a/android/festago/presentation/src/main/res/values/strings.xml b/android/festago/presentation/src/main/res/values/strings.xml index 2d6b07373..6a76adee3 100644 --- a/android/festago/presentation/src/main/res/values/strings.xml +++ b/android/festago/presentation/src/main/res/values/strings.xml @@ -65,4 +65,9 @@ 업데이트 취소 + + 페스타고,\n대학축제를\n더욱 즐겁게! + 카카오로 로그인하기 + 로그인하지 않고 둘러보기 + From ddfcb9e6e34de9fb1f281074faea8055d972f219 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Tue, 16 Apr 2024 23:50:05 +0900 Subject: [PATCH 02/25] =?UTF-8?q?feat(SplashEvent):=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=96=88=EA=B1=B0=EB=82=98=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=9D=84=20=EA=B1=B0=EB=B6=80=ED=96=88=EB=8B=A4?= =?UTF-8?q?=EB=A9=B4=20=EC=95=B1=20=EC=8B=9C=EC=9E=91=20=EC=8B=9C=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=99=94=EB=A9=B4=EC=9D=B4=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C=20=EB=9C=A8=EC=A7=80=20=EC=95=8A=EB=8A=94?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/AuthRepository.kt | 11 ++++++ .../presentation/ui/splash/SplashActivity.kt | 35 ++++++++++++++++--- .../presentation/ui/splash/SplashEvent.kt | 6 ++++ .../presentation/ui/splash/SplashViewModel.kt | 28 +++++++++++++++ 4 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashEvent.kt create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt new file mode 100644 index 000000000..6c9717134 --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt @@ -0,0 +1,11 @@ +package com.festago.festago.domain.repository + +interface AuthRepository { + val shouldSign: Boolean + val isSigned: Boolean + val token: String? + suspend fun signIn(code: String): Result + suspend fun signOut(): Result + suspend fun deleteAccount(): Result + fun rejectSignIn() +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt index 5bde693d3..72533ca68 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt @@ -8,12 +8,15 @@ import android.net.Uri import android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity +import androidx.activity.viewModels import androidx.core.splashscreen.SplashScreen import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import com.festago.festago.presentation.BuildConfig import com.festago.festago.presentation.R import com.festago.festago.presentation.databinding.ActivitySplashBinding import com.festago.festago.presentation.ui.home.HomeActivity +import com.festago.festago.presentation.ui.signin.SignInActivity +import com.festago.festago.presentation.util.repeatOnStarted import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings import com.kakao.sdk.common.KakaoSdk @@ -31,6 +34,7 @@ class SplashActivity : ComponentActivity() { .setMinimumFetchIntervalInSeconds(if (BuildConfig.DEBUG) DEBUG_REMOTE_CONFIG_FETCH_INTERVAL else RELEASE_REMOTE_CONFIG_FETCH_INTERVAL) .build() } + private val vm: SplashViewModel by viewModels() init { firebaseRemoteConfig.setConfigSettingsAsync(configSettings) @@ -38,9 +42,9 @@ class SplashActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - splashScreen = installSplashScreen() - splashScreen.setKeepOnScreenCondition { true } + initSplashScreen() initKakaoSdk() + initObserve() setContentView(binding.root) } @@ -49,10 +53,26 @@ class SplashActivity : ComponentActivity() { checkAppUpdate() } + private fun initSplashScreen() { + splashScreen = installSplashScreen() + splashScreen.setKeepOnScreenCondition { true } + } + private fun initKakaoSdk() { KakaoSdk.init(this.applicationContext, BuildConfig.KAKAO_NATIVE_APP_KEY) } + private fun initObserve() { + repeatOnStarted(this) { + vm.event.collect { + when (it) { + is SplashEvent.ShowHome -> navigateToHome() + is SplashEvent.ShowSignIn -> navigateToSignIn() + } + } + } + } + private fun checkAppUpdate() { firebaseRemoteConfig.fetchAndActivate().addOnCompleteListener(this) { if (it.isSuccessful) { @@ -65,7 +85,7 @@ class SplashActivity : ComponentActivity() { } val latestVersion = firebaseRemoteConfig.getLong(KEY_LATEST_VERSION) if (latestVersion == currentVersion) { - navigateToHome() + vm.checkSignIn() return@addOnCompleteListener } splashScreen.setKeepOnScreenCondition { false } @@ -93,7 +113,7 @@ class SplashActivity : ComponentActivity() { val sharedPref = getPreferences(MODE_PRIVATE) ?: return val storedLatestVersion = sharedPref.getLong(KEY_STORED_LATEST_VERSION, 0L) if (latestVersion == storedLatestVersion) { - navigateToHome() + vm.checkSignIn() return } alertUpdate(message = message, update = ::handleUpdate) { @@ -103,7 +123,7 @@ class SplashActivity : ComponentActivity() { private fun handleOptionalUpdateCancel(sharedPref: SharedPreferences, latestVersion: Long) { updateStoredLatestVersion(sharedPref, latestVersion) - navigateToHome() + vm.checkSignIn() } private fun updateStoredLatestVersion(sharedPref: SharedPreferences, latestVersion: Long) { @@ -123,6 +143,11 @@ class SplashActivity : ComponentActivity() { finish() } + private fun navigateToSignIn() { + startActivity(SignInActivity.getIntent(this)) + finish() + } + private fun navigateToAppStore() { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))) finish() diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashEvent.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashEvent.kt new file mode 100644 index 000000000..718ecf3bf --- /dev/null +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashEvent.kt @@ -0,0 +1,6 @@ +package com.festago.festago.presentation.ui.splash + +sealed interface SplashEvent { + object ShowSignIn : SplashEvent + object ShowHome : SplashEvent +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt new file mode 100644 index 000000000..8532edeb5 --- /dev/null +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt @@ -0,0 +1,28 @@ +package com.festago.festago.presentation.ui.splash + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.festago.festago.domain.repository.AuthRepository +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +class SplashViewModel @Inject constructor( + private val authRepository: AuthRepository, +) : ViewModel() { + + private val _event: MutableSharedFlow = MutableSharedFlow() + val event: SharedFlow = _event.asSharedFlow() + + fun checkSignIn() { + viewModelScope.launch { + when { + authRepository.isSigned -> _event.emit(SplashEvent.ShowHome) + authRepository.shouldSign.not() -> _event.emit(SplashEvent.ShowHome) + else -> _event.emit(SplashEvent.ShowSignIn) + } + } + } +} From b681ffca8c32041e4cef3f7a9a544781f00b05c0 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 17 Apr 2024 00:39:31 +0900 Subject: [PATCH 03/25] =?UTF-8?q?feat(SignInViewModel):=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/signin/SignInActivity.kt | 60 +++++++++++++++---- .../presentation/ui/signin/SignInEvent.kt | 6 ++ .../presentation/ui/signin/SignInViewModel.kt | 36 +++++++++++ .../src/main/res/values/strings.xml | 1 + 4 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInEvent.kt create mode 100644 android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt index 53be44f15..b0e5ae99f 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -4,14 +4,21 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.os.Bundle +import android.widget.Toast +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope +import com.festago.festago.presentation.R import com.festago.festago.presentation.databinding.ActivitySignInBinding import com.festago.festago.presentation.ui.home.HomeActivity +import com.festago.festago.presentation.util.repeatOnStarted import com.festago.festago.presentation.util.setOnApplyWindowInsetsCompatListener import com.festago.festago.presentation.util.setStatusBarMode +import com.kakao.sdk.common.model.ClientError +import com.kakao.sdk.common.model.ClientErrorCause +import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch class SignInActivity : AppCompatActivity() { @@ -20,12 +27,32 @@ class SignInActivity : AppCompatActivity() { ActivitySignInBinding.inflate(layoutInflater) } + private val vm: SignInViewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) initView() + initObserve() setContentView(binding.root) } + private fun initView() { + initWindowInsets() + initKakaoLogin() + initWithoutLogin() + } + + private fun initObserve() { + repeatOnStarted(this) { + vm.event.collect { + when (it) { + SignInEvent.ShowHome -> navigateToHome() + SignInEvent.SignInFailure -> handleSignInFailure() + } + } + } + } + private fun initWindowInsets() { WindowCompat.setDecorFitsSystemWindows(window, false) binding.root.setOnApplyWindowInsetsCompatListener { view, windowInsets -> @@ -38,31 +65,40 @@ class SignInActivity : AppCompatActivity() { } } - private fun initView() { - initWindowInsets() - initKakaoLogin() - initWithoutLogin() - } - private fun initKakaoLogin() { binding.btnKakaoLogin.setOnClickListener { lifecycleScope.launch { KakaoAuthorization().getAuthCode(this@SignInActivity) - .onSuccess { - startActivity(HomeActivity.getIntent(this@SignInActivity)) - finish() - }.onFailure {} + .onSuccess { authCode -> + vm.signIn(authCode) + }.onFailure { error -> + // 카카오 로그인 취소 시에는 예외를 던지지 않고 처리 + if (error is ClientError && error.reason == ClientErrorCause.Cancelled) return@launch + handleSignInFailure() + } } } } private fun initWithoutLogin() { binding.tvWithoutLogin.setOnClickListener { - startActivity(HomeActivity.getIntent(this)) - finish() + vm.rejectSignIn() } } + private fun navigateToHome() { + startActivity(HomeActivity.getIntent(this)) + finish() + } + + private fun handleSignInFailure() { + Toast.makeText( + this, + getString(R.string.sign_in_default_error_message), + Toast.LENGTH_SHORT, + ).show() + } + companion object { fun getIntent(context: Context): Intent { diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInEvent.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInEvent.kt new file mode 100644 index 000000000..fb11829e1 --- /dev/null +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInEvent.kt @@ -0,0 +1,6 @@ +package com.festago.festago.presentation.ui.signin + +sealed interface SignInEvent { + object ShowHome : SignInEvent + object SignInFailure : SignInEvent +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt new file mode 100644 index 000000000..2f050dad5 --- /dev/null +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt @@ -0,0 +1,36 @@ +package com.festago.festago.presentation.ui.signin + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.festago.festago.domain.repository.AuthRepository +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +class SignInViewModel @Inject constructor( + private val authRepository: AuthRepository, +) : ViewModel() { + + private val _event = MutableSharedFlow() + val event: SharedFlow = _event.asSharedFlow() + + fun signIn(authCode: String) { + viewModelScope.launch { + authRepository.signIn(authCode) + .onSuccess { + _event.emit(SignInEvent.ShowHome) + }.onFailure { + _event.emit(SignInEvent.SignInFailure) + } + } + } + + fun rejectSignIn() { + viewModelScope.launch { + authRepository.rejectSignIn() + _event.emit(SignInEvent.ShowHome) + } + } +} diff --git a/android/festago/presentation/src/main/res/values/strings.xml b/android/festago/presentation/src/main/res/values/strings.xml index 6a76adee3..80e65b1e5 100644 --- a/android/festago/presentation/src/main/res/values/strings.xml +++ b/android/festago/presentation/src/main/res/values/strings.xml @@ -69,5 +69,6 @@ 페스타고,\n대학축제를\n더욱 즐겁게! 카카오로 로그인하기 로그인하지 않고 둘러보기 + 로그인 할 수 없습니다. 다시 로그인 하거나 앱을 재실행 해주세요. From e86c611ac5ddfa61991cb887ee03692ae89ba358 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 17 Apr 2024 03:02:12 +0900 Subject: [PATCH 04/25] =?UTF-8?q?feat(FakeAuthRepository):=20=EA=B0=80?= =?UTF-8?q?=EC=A7=9C=20Auth=20=EC=A0=80=EC=9E=A5=EC=86=8C=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../di/singletonscope/RepositoryModule.kt | 6 ++++ .../data/repository/FakeAuthRepository.kt | 29 +++++++++++++++++++ .../presentation/ui/signin/SignInActivity.kt | 3 +- .../presentation/ui/signin/SignInViewModel.kt | 4 ++- .../presentation/ui/splash/SplashActivity.kt | 2 ++ .../presentation/ui/splash/SplashViewModel.kt | 2 ++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt index 4849994fc..39e72b1b7 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt @@ -5,7 +5,9 @@ import com.festago.festago.data.repository.DefaultFestivalRepository import com.festago.festago.data.repository.DefaultRecentSearchRepository import com.festago.festago.data.repository.DefaultSchoolRepository import com.festago.festago.data.repository.DefaultSearchRepository +import com.festago.festago.data.repository.FakeAuthRepository import com.festago.festago.domain.repository.ArtistRepository +import com.festago.festago.domain.repository.AuthRepository import com.festago.festago.domain.repository.FestivalRepository import com.festago.festago.domain.repository.RecentSearchRepository import com.festago.festago.domain.repository.SchoolRepository @@ -39,4 +41,8 @@ interface RepositoryModule { @Binds @Singleton fun bindsSearchRepository(searchRepository: DefaultSearchRepository): SearchRepository + + @Binds + @Singleton + fun bindsAuthRepository(authRepository: FakeAuthRepository): AuthRepository } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt new file mode 100644 index 000000000..15b5a4cec --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt @@ -0,0 +1,29 @@ +package com.festago.festago.data.repository + +import com.festago.festago.domain.repository.AuthRepository +import javax.inject.Inject + +class FakeAuthRepository @Inject constructor() : AuthRepository { + + override var shouldSign: Boolean = true + + override val isSigned: Boolean = false + + override val token: String = "" + + override suspend fun signIn(code: String): Result { + return Result.success(Unit) + } + + override suspend fun signOut(): Result { + return Result.success(Unit) + } + + override fun rejectSignIn() { + // handle reject sign in + } + + override suspend fun deleteAccount(): Result { + return Result.success(Unit) + } +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt index b0e5ae99f..3b03e3b6d 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -18,9 +18,10 @@ import com.festago.festago.presentation.util.setOnApplyWindowInsetsCompatListene import com.festago.festago.presentation.util.setStatusBarMode import com.kakao.sdk.common.model.ClientError import com.kakao.sdk.common.model.ClientErrorCause -import kotlinx.coroutines.flow.collect +import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch +@AndroidEntryPoint class SignInActivity : AppCompatActivity() { private val binding: ActivitySignInBinding by lazy { diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt index 2f050dad5..13411bfed 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt @@ -3,17 +3,19 @@ package com.festago.festago.presentation.ui.signin import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.festago.festago.domain.repository.AuthRepository +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.launch import javax.inject.Inject +@HiltViewModel class SignInViewModel @Inject constructor( private val authRepository: AuthRepository, ) : ViewModel() { - private val _event = MutableSharedFlow() + private val _event: MutableSharedFlow = MutableSharedFlow() val event: SharedFlow = _event.asSharedFlow() fun signIn(authCode: String) { diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt index 72533ca68..94b968615 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashActivity.kt @@ -90,6 +90,8 @@ class SplashActivity : ComponentActivity() { } splashScreen.setKeepOnScreenCondition { false } requestUpdate(latestVersion) + } else { + handleError() } } } diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt index 8532edeb5..6c1eef574 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt @@ -3,12 +3,14 @@ package com.festago.festago.presentation.ui.splash import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.festago.festago.domain.repository.AuthRepository +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.launch import javax.inject.Inject +@HiltViewModel class SplashViewModel @Inject constructor( private val authRepository: AuthRepository, ) : ViewModel() { From 78f0d49160f0bbff5b6a3156861509dddc0e9130 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:32:36 +0900 Subject: [PATCH 05/25] =?UTF-8?q?feat:=20auth=20response=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/data/dto/user/RefreshResponse.kt | 9 ++++++++ .../festago/data/dto/user/SignInResponse.kt | 11 ++++++++++ .../festago/data/dto/user/SignOutResponse.kt | 8 +++++++ .../festago/data/dto/user/TokenResponse.kt | 22 +++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshResponse.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshResponse.kt new file mode 100644 index 000000000..99415e01c --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshResponse.kt @@ -0,0 +1,9 @@ +package com.festago.festago.data.dto.user + +import kotlinx.serialization.Serializable + +@Serializable +data class RefreshResponse( + val accessToken: TokenResponse, + val refreshToken: TokenResponse, +) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt new file mode 100644 index 000000000..46a4517bf --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt @@ -0,0 +1,11 @@ +package com.festago.festago.data.dto.user + +import kotlinx.serialization.Serializable + +@Serializable +data class SignInResponse( + val nickName: String, + val profileImageUrl: String, + val accessToken: TokenResponse, + val refreshToken: TokenResponse, +) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt new file mode 100644 index 000000000..c1f128d8c --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt @@ -0,0 +1,8 @@ +package com.festago.festago.data.dto.user + +import kotlinx.serialization.Serializable + +@Serializable +data class SignOutResponse( + val message: String, +) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt new file mode 100644 index 000000000..ead579e20 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt @@ -0,0 +1,22 @@ +package com.festago.festago.data.dto.user + +import com.festago.festago.data.model.TokenEntity +import com.festago.festago.domain.model.token.Token +import kotlinx.serialization.Serializable +import java.time.LocalDateTime + +@Serializable +data class TokenResponse( + val token: String, + val expiredAt: String, +) { + fun toDomain() = Token( + token = token, + expiredAt = LocalDateTime.parse(expiredAt), + ) + + fun toEntity() = TokenEntity( + token = token, + expiredAt = expiredAt, + ) +} From b922c08f530b907a8a2478971dedbe0438aff03c Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:33:35 +0900 Subject: [PATCH 06/25] =?UTF-8?q?feat:=20=ED=86=A0=ED=81=B0=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/festago/festago/data/model/TokenEntity.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt b/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt new file mode 100644 index 000000000..ca9e6efe1 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt @@ -0,0 +1,14 @@ +package com.festago.festago.data.model + +import com.festago.festago.domain.model.token.Token +import java.time.LocalDateTime + +data class TokenEntity( + val token: String, + val expiredAt: String, +) { + fun toDomain() = Token( + token = token, + expiredAt = LocalDateTime.parse(expiredAt), + ) +} From cb865fca496f03fdf8284673c6dce491cecdf3a6 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:34:01 +0900 Subject: [PATCH 07/25] =?UTF-8?q?feat:=20=ED=86=A0=ED=81=B0=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=EC=86=8C=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datasource/TokenDataSource.kt | 8 +++ .../data/datasource/TokenLocalDataSource.kt | 52 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt new file mode 100644 index 000000000..f46b38d36 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt @@ -0,0 +1,8 @@ +package com.festago.festago.data.datasource + +import com.festago.festago.data.model.TokenEntity + +interface TokenDataSource { + var accessToken: TokenEntity? + var refreshToken: TokenEntity? +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt new file mode 100644 index 000000000..d884a90a7 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt @@ -0,0 +1,52 @@ +package com.festago.festago.data.datasource + +import android.content.Context +import android.content.SharedPreferences +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKey +import com.festago.festago.data.model.TokenEntity +import com.google.gson.GsonBuilder +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class TokenLocalDataSource @Inject constructor( + @ApplicationContext context: Context, +) : TokenDataSource { + + private val sharedPreference: SharedPreferences by lazy { + val masterKeyAlias = MasterKey + .Builder(context, MasterKey.DEFAULT_MASTER_KEY_ALIAS) + .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) + .build() + + EncryptedSharedPreferences(context, ENCRYPTED_PREF_FILE, masterKeyAlias) + } + + override var accessToken: TokenEntity? + get() = sharedPreference.getToken(ACCESS_TOKEN_KEY, null) + set(value) { + sharedPreference.putToken(ACCESS_TOKEN_KEY, value) + } + + override var refreshToken: TokenEntity? + get() = sharedPreference.getToken(REFRESH_TOKEN_KEY, null) + set(value) { + sharedPreference.putToken(REFRESH_TOKEN_KEY, value) + } + + private fun SharedPreferences.putToken(key: String, token: TokenEntity?) { + val jsonString = GsonBuilder().create().toJson(token) + edit().putString(key, jsonString).apply() + } + + private fun SharedPreferences.getToken(key: String, default: TokenEntity?): TokenEntity? { + val token = getString(key, null) ?: return default + return GsonBuilder().create().fromJson(token, TokenEntity::class.java) + } + + companion object { + private const val ENCRYPTED_PREF_FILE = "encrypted_pref_file" + private const val ACCESS_TOKEN_KEY = "access_token_key" + private const val REFRESH_TOKEN_KEY = "refresh_token_key" + } +} From cb971dfd12284edf82d6c347c9735cb10e667309 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:34:17 +0900 Subject: [PATCH 08/25] =?UTF-8?q?feat:=20=ED=86=A0=ED=81=B0=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EA=B0=9D=EC=B2=B4=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/festago/festago/domain/model/token/Token.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt new file mode 100644 index 000000000..16a5b4752 --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt @@ -0,0 +1,10 @@ +package com.festago.festago.domain.model.token + +import java.time.LocalDateTime + +data class Token( + val token: String, + val expiredAt: LocalDateTime, +) { + fun isExpired() = LocalDateTime.now().isAfter(expiredAt) +} From e9663a727ee88e4efbe3ae10235a5cd42a70ad09 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:35:04 +0900 Subject: [PATCH 09/25] =?UTF-8?q?feat:=20UserRetrofitService=20=EC=9E=84?= =?UTF-8?q?=EC=8B=9C=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/data/service/UserRetrofitService.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt b/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt new file mode 100644 index 000000000..161203512 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt @@ -0,0 +1,13 @@ +package com.festago.festago.data.service + +import com.festago.festago.data.dto.user.RefreshResponse +import com.festago.festago.data.dto.user.SignInResponse +import com.festago.festago.data.dto.user.SignOutResponse +import retrofit2.Response + +interface UserRetrofitService { + suspend fun signIn(code: String): Response + suspend fun signOut(): Response + suspend fun refresh(refreshToken: String): Response + suspend fun deleteAccount(): Response +} From bde05c599a190529c0dcd82250b0bba171974451 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 24 Apr 2024 11:36:31 +0900 Subject: [PATCH 10/25] =?UTF-8?q?feat:=20AuthRepository=20rename=20to=20Us?= =?UTF-8?q?erRepository=20&=20=EC=9E=AC=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../di/singletonscope/RepositoryModule.kt | 6 +- .../data/repository/DefaultUserRepository.kt | 90 +++++++++++++++++++ .../data/repository/FakeAuthRepository.kt | 29 ------ .../data/repository/FakeUserRepository.kt | 41 +++++++++ .../domain/repository/AuthRepository.kt | 11 --- .../domain/repository/UserRepository.kt | 14 +++ .../presentation/ui/signin/SignInViewModel.kt | 8 +- .../presentation/ui/splash/SplashViewModel.kt | 8 +- 8 files changed, 156 insertions(+), 51 deletions(-) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt delete mode 100644 android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt delete mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt index 39e72b1b7..268166ef1 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt @@ -5,13 +5,13 @@ import com.festago.festago.data.repository.DefaultFestivalRepository import com.festago.festago.data.repository.DefaultRecentSearchRepository import com.festago.festago.data.repository.DefaultSchoolRepository import com.festago.festago.data.repository.DefaultSearchRepository -import com.festago.festago.data.repository.FakeAuthRepository +import com.festago.festago.data.repository.FakeUserRepository import com.festago.festago.domain.repository.ArtistRepository -import com.festago.festago.domain.repository.AuthRepository import com.festago.festago.domain.repository.FestivalRepository import com.festago.festago.domain.repository.RecentSearchRepository import com.festago.festago.domain.repository.SchoolRepository import com.festago.festago.domain.repository.SearchRepository +import com.festago.festago.domain.repository.UserRepository import dagger.Binds import dagger.Module import dagger.hilt.InstallIn @@ -44,5 +44,5 @@ interface RepositoryModule { @Binds @Singleton - fun bindsAuthRepository(authRepository: FakeAuthRepository): AuthRepository + fun bindsAuthRepository(authRepository: FakeUserRepository): UserRepository } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt new file mode 100644 index 000000000..61e3785aa --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -0,0 +1,90 @@ +package com.festago.festago.data.repository + +import android.content.Context +import android.content.SharedPreferences +import com.festago.festago.data.datasource.TokenDataSource +import com.festago.festago.data.service.UserRetrofitService +import com.festago.festago.data.util.onSuccessOrCatch +import com.festago.festago.data.util.runCatchingResponse +import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.repository.UserRepository +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class DefaultUserRepository @Inject constructor( + private val userRetrofitService: UserRetrofitService, + private val tokenDataSource: TokenDataSource, + @ApplicationContext context: Context, +) : UserRepository { + + private val sharedPreference: SharedPreferences by lazy { + context.getSharedPreferences(AUTH_PREF, Context.MODE_PRIVATE) + } + + override suspend fun isSigned() = getRefreshToken().isSuccess + + override suspend fun isSignRejected() = sharedPreference.getBoolean(IS_SIGN_REJECTED, false) + + override suspend fun getAccessToken(): Result { + val token = tokenDataSource.accessToken?.toDomain() + ?: return Result.failure(Throwable("Access token is null")) + + if (!token.isExpired()) { + return Result.success(token) + } + + return try { + val refreshToken = getRefreshToken().getOrThrow() + refresh(refreshToken).getOrThrow() + Result.success(tokenDataSource.accessToken?.toDomain()!!) + } catch (e: Exception) { + Result.failure(e) + } + } + + override suspend fun getRefreshToken(): Result { + val refreshToken = tokenDataSource.refreshToken?.toDomain() + ?: return Result.failure(Throwable("Refresh token is null")) + + return if (refreshToken.isExpired()) { + Result.failure(Throwable("Refresh token is expired")) + } else { + Result.success(refreshToken) + } + } + + override suspend fun signIn(code: String): Result { + return runCatchingResponse { + userRetrofitService.signIn(code) + }.onSuccessOrCatch { signInResponse -> + tokenDataSource.accessToken = signInResponse.accessToken.toEntity() + tokenDataSource.accessToken = signInResponse.refreshToken.toEntity() + } + } + + override suspend fun rejectSignIn() { + if (isSigned() || isSignRejected()) return + sharedPreference.edit().putBoolean(IS_SIGN_REJECTED, true).apply() + } + + override suspend fun signOut(): Result { + TODO("Not yet implemented") + } + + override suspend fun deleteAccount(): Result { + TODO("Not yet implemented") + } + + private suspend fun refresh(refreshToken: Token): Result { + return runCatchingResponse { + userRetrofitService.refresh(refreshToken.token) + }.onSuccessOrCatch { refreshTokenResponse -> + tokenDataSource.accessToken = refreshTokenResponse.accessToken.toEntity() + } + } + + companion object { + private const val AUTH_PREF = "auth_pref" + private const val IS_SIGN_REJECTED = "is_sign_rejected" + } +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt deleted file mode 100644 index 15b5a4cec..000000000 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeAuthRepository.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.festago.festago.data.repository - -import com.festago.festago.domain.repository.AuthRepository -import javax.inject.Inject - -class FakeAuthRepository @Inject constructor() : AuthRepository { - - override var shouldSign: Boolean = true - - override val isSigned: Boolean = false - - override val token: String = "" - - override suspend fun signIn(code: String): Result { - return Result.success(Unit) - } - - override suspend fun signOut(): Result { - return Result.success(Unit) - } - - override fun rejectSignIn() { - // handle reject sign in - } - - override suspend fun deleteAccount(): Result { - return Result.success(Unit) - } -} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt new file mode 100644 index 000000000..697bf5201 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt @@ -0,0 +1,41 @@ +package com.festago.festago.data.repository + +import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.repository.UserRepository +import java.time.LocalDateTime +import javax.inject.Inject + +class FakeUserRepository @Inject constructor() : UserRepository { + + override suspend fun isSignRejected(): Boolean { + return false + } + + override suspend fun isSigned(): Boolean { + return true + } + + override suspend fun getRefreshToken(): Result { + return Result.success(Token("", LocalDateTime.now())) + } + + override suspend fun getAccessToken(): Result { + return Result.success(Token("", LocalDateTime.now())) + } + + override suspend fun signIn(code: String): Result { + return Result.success(Unit) + } + + override suspend fun signOut(): Result { + return Result.success(Unit) + } + + override suspend fun rejectSignIn() { + // handle reject sign in + } + + override suspend fun deleteAccount(): Result { + return Result.success(Unit) + } +} diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt deleted file mode 100644 index 6c9717134..000000000 --- a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/AuthRepository.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.festago.festago.domain.repository - -interface AuthRepository { - val shouldSign: Boolean - val isSigned: Boolean - val token: String? - suspend fun signIn(code: String): Result - suspend fun signOut(): Result - suspend fun deleteAccount(): Result - fun rejectSignIn() -} diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt new file mode 100644 index 000000000..75d8eb55d --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt @@ -0,0 +1,14 @@ +package com.festago.festago.domain.repository + +import com.festago.festago.domain.model.token.Token + +interface UserRepository { + suspend fun isSignRejected(): Boolean + suspend fun isSigned(): Boolean + suspend fun getAccessToken(): Result + suspend fun getRefreshToken(): Result + suspend fun signIn(code: String): Result + suspend fun signOut(): Result + suspend fun deleteAccount(): Result + suspend fun rejectSignIn() +} diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt index 13411bfed..849055548 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt @@ -2,7 +2,7 @@ package com.festago.festago.presentation.ui.signin import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.festago.festago.domain.repository.AuthRepository +import com.festago.festago.domain.repository.UserRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -12,7 +12,7 @@ import javax.inject.Inject @HiltViewModel class SignInViewModel @Inject constructor( - private val authRepository: AuthRepository, + private val userRepository: UserRepository, ) : ViewModel() { private val _event: MutableSharedFlow = MutableSharedFlow() @@ -20,7 +20,7 @@ class SignInViewModel @Inject constructor( fun signIn(authCode: String) { viewModelScope.launch { - authRepository.signIn(authCode) + userRepository.signIn(authCode) .onSuccess { _event.emit(SignInEvent.ShowHome) }.onFailure { @@ -31,7 +31,7 @@ class SignInViewModel @Inject constructor( fun rejectSignIn() { viewModelScope.launch { - authRepository.rejectSignIn() + userRepository.rejectSignIn() _event.emit(SignInEvent.ShowHome) } } diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt index 6c1eef574..f0775d768 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/splash/SplashViewModel.kt @@ -2,7 +2,7 @@ package com.festago.festago.presentation.ui.splash import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.festago.festago.domain.repository.AuthRepository +import com.festago.festago.domain.repository.UserRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow @@ -12,7 +12,7 @@ import javax.inject.Inject @HiltViewModel class SplashViewModel @Inject constructor( - private val authRepository: AuthRepository, + private val userRepository: UserRepository, ) : ViewModel() { private val _event: MutableSharedFlow = MutableSharedFlow() @@ -21,8 +21,8 @@ class SplashViewModel @Inject constructor( fun checkSignIn() { viewModelScope.launch { when { - authRepository.isSigned -> _event.emit(SplashEvent.ShowHome) - authRepository.shouldSign.not() -> _event.emit(SplashEvent.ShowHome) + userRepository.isSigned() -> _event.emit(SplashEvent.ShowHome) + userRepository.isSignRejected() -> _event.emit(SplashEvent.ShowHome) else -> _event.emit(SplashEvent.ShowSignIn) } } From fdc27b317a1f114d47b81ce0fcc219e3d5b34091 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Sun, 28 Apr 2024 11:01:13 +0900 Subject: [PATCH 11/25] =?UTF-8?q?feat(AuthRetrofitService):=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=9D=B8=EC=A6=9D=20API=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/di/singletonscope/ServiceModule.kt | 9 +++++ .../{SignOutResponse.kt => RefreshRequest.kt} | 4 +-- .../festago/data/dto/user/SignInRequest.kt | 9 +++++ .../data/repository/DefaultUserRepository.kt | 4 +-- .../data/service/AuthRetrofitService.kt | 33 +++++++++++++++++++ .../data/service/UserRetrofitService.kt | 13 -------- 6 files changed, 55 insertions(+), 17 deletions(-) rename android/festago/data/src/main/java/com/festago/festago/data/dto/user/{SignOutResponse.kt => RefreshRequest.kt} (65%) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt delete mode 100644 android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ServiceModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ServiceModule.kt index 482ab4122..9ea7f788d 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ServiceModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ServiceModule.kt @@ -1,6 +1,7 @@ package com.festago.festago.data.di.singletonscope import com.festago.festago.data.service.ArtistRetrofitService +import com.festago.festago.data.service.AuthRetrofitService import com.festago.festago.data.service.BookmarkRetrofitService import com.festago.festago.data.service.FestivalRetrofitService import com.festago.festago.data.service.SchoolRetrofitService @@ -54,4 +55,12 @@ object ServiceModule { ): BookmarkRetrofitService { return retrofit.create(BookmarkRetrofitService::class.java) } + + @Provides + @Singleton + fun providesAuthRetrofitService( + @NormalRetrofitQualifier retrofit: Retrofit, + ): AuthRetrofitService { + return retrofit.create(AuthRetrofitService::class.java) + } } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshRequest.kt similarity index 65% rename from android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt rename to android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshRequest.kt index c1f128d8c..7987ec816 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignOutResponse.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/RefreshRequest.kt @@ -3,6 +3,6 @@ package com.festago.festago.data.dto.user import kotlinx.serialization.Serializable @Serializable -data class SignOutResponse( - val message: String, +class RefreshRequest( + val refreshToken: String, ) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt new file mode 100644 index 000000000..2cbb69f00 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt @@ -0,0 +1,9 @@ +package com.festago.festago.data.dto.user + +import kotlinx.serialization.Serializable + +@Serializable +class SignInRequest( + val socialType: String, + val code: String, +) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 61e3785aa..04a766580 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -12,7 +12,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class DefaultUserRepository @Inject constructor( - private val userRetrofitService: UserRetrofitService, + private val authRetrofitService: AuthRetrofitService, private val tokenDataSource: TokenDataSource, @ApplicationContext context: Context, ) : UserRepository { @@ -77,7 +77,7 @@ class DefaultUserRepository @Inject constructor( private suspend fun refresh(refreshToken: Token): Result { return runCatchingResponse { - userRetrofitService.refresh(refreshToken.token) + authRetrofitService.refresh(RefreshRequest(refreshToken.token)) }.onSuccessOrCatch { refreshTokenResponse -> tokenDataSource.accessToken = refreshTokenResponse.accessToken.toEntity() } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt b/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt new file mode 100644 index 000000000..cc115fb7a --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt @@ -0,0 +1,33 @@ +package com.festago.festago.data.service + +import com.festago.festago.data.dto.user.RefreshRequest +import com.festago.festago.data.dto.user.RefreshResponse +import com.festago.festago.data.dto.user.SignInRequest +import com.festago.festago.data.dto.user.SignInResponse +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.Header +import retrofit2.http.POST + +interface AuthRetrofitService { + @POST("api/v1/auth/login/oauth2") + suspend fun signIn( + @Body signInRequest: SignInRequest, + ): Response + + @POST("api/v1/auth/refresh") + suspend fun refresh( + @Body refreshRequest: RefreshRequest, + ): Response + + @POST("api/v1/auth/logout") + suspend fun signOut( + @Header("Authorization") token: String, + ): Response + + @DELETE("api/v1/auth") + suspend fun deleteAccount( + @Header("Authorization") token: String, + ): Response +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt b/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt deleted file mode 100644 index 161203512..000000000 --- a/android/festago/data/src/main/java/com/festago/festago/data/service/UserRetrofitService.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.festago.festago.data.service - -import com.festago.festago.data.dto.user.RefreshResponse -import com.festago.festago.data.dto.user.SignInResponse -import com.festago.festago.data.dto.user.SignOutResponse -import retrofit2.Response - -interface UserRetrofitService { - suspend fun signIn(code: String): Response - suspend fun signOut(): Response - suspend fun refresh(refreshToken: String): Response - suspend fun deleteAccount(): Response -} From 5634a61e4abc8dc18ad5c7423e54d41b8a4425ec Mon Sep 17 00:00:00 2001 From: vrexpert Date: Sun, 28 Apr 2024 11:09:44 +0900 Subject: [PATCH 12/25] =?UTF-8?q?feat(DefaultUserRepository):=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=A0=80=EC=9E=A5=EC=86=8C=EB=8A=94=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=EA=B0=80=EC=9E=85,=20=EB=A6=AC=ED=94=84=EB=A0=88?= =?UTF-8?q?=EC=8B=9C,=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83,=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=ED=83=88=ED=87=B4=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20?= =?UTF-8?q?=EC=88=98=ED=96=89=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../di/singletonscope/RepositoryModule.kt | 4 +- .../data/repository/DefaultUserRepository.kt | 42 ++++++++++++------- .../com/festago/festago/data/util/TokenExt.kt | 5 +++ 3 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt index cc618a32d..8b30e0ec9 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/RepositoryModule.kt @@ -5,8 +5,8 @@ import com.festago.festago.data.repository.DefaultFestivalRepository import com.festago.festago.data.repository.DefaultRecentSearchRepository import com.festago.festago.data.repository.DefaultSchoolRepository import com.festago.festago.data.repository.DefaultSearchRepository +import com.festago.festago.data.repository.DefaultUserRepository import com.festago.festago.data.repository.FakeBookmarkRepository -import com.festago.festago.data.repository.FakeUserRepository import com.festago.festago.domain.repository.ArtistRepository import com.festago.festago.domain.repository.BookmarkRepository import com.festago.festago.domain.repository.FestivalRepository @@ -49,5 +49,5 @@ interface RepositoryModule { @Binds @Singleton - fun bindsAuthRepository(authRepository: FakeUserRepository): UserRepository + fun bindsUserRepository(userRepository: DefaultUserRepository): UserRepository } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 04a766580..5d438d300 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -3,7 +3,10 @@ package com.festago.festago.data.repository import android.content.Context import android.content.SharedPreferences import com.festago.festago.data.datasource.TokenDataSource -import com.festago.festago.data.service.UserRetrofitService +import com.festago.festago.data.dto.user.RefreshRequest +import com.festago.festago.data.dto.user.SignInRequest +import com.festago.festago.data.service.AuthRetrofitService +import com.festago.festago.data.util.format import com.festago.festago.data.util.onSuccessOrCatch import com.festago.festago.data.util.runCatchingResponse import com.festago.festago.domain.model.token.Token @@ -17,17 +20,17 @@ class DefaultUserRepository @Inject constructor( @ApplicationContext context: Context, ) : UserRepository { - private val sharedPreference: SharedPreferences by lazy { + private val authPref: SharedPreferences by lazy { context.getSharedPreferences(AUTH_PREF, Context.MODE_PRIVATE) } override suspend fun isSigned() = getRefreshToken().isSuccess - override suspend fun isSignRejected() = sharedPreference.getBoolean(IS_SIGN_REJECTED, false) + override suspend fun isSignRejected() = authPref.getBoolean(IS_SIGN_REJECTED, false) override suspend fun getAccessToken(): Result { val token = tokenDataSource.accessToken?.toDomain() - ?: return Result.failure(Throwable("Access token is null")) + ?: return Result.failure(NullPointerException("Access token is null")) if (!token.isExpired()) { return Result.success(token) @@ -44,35 +47,45 @@ class DefaultUserRepository @Inject constructor( override suspend fun getRefreshToken(): Result { val refreshToken = tokenDataSource.refreshToken?.toDomain() - ?: return Result.failure(Throwable("Refresh token is null")) + ?: return Result.failure(NullPointerException("Refresh token is null")) - return if (refreshToken.isExpired()) { - Result.failure(Throwable("Refresh token is expired")) - } else { - Result.success(refreshToken) + if (refreshToken.isExpired()) { + return Result.failure(Exception("Refresh token is expired")) } + + return Result.success(refreshToken) } override suspend fun signIn(code: String): Result { return runCatchingResponse { - userRetrofitService.signIn(code) + authRetrofitService.signIn(SignInRequest(SOCIAL_TYPE, code)) }.onSuccessOrCatch { signInResponse -> tokenDataSource.accessToken = signInResponse.accessToken.toEntity() - tokenDataSource.accessToken = signInResponse.refreshToken.toEntity() + tokenDataSource.refreshToken = signInResponse.refreshToken.toEntity() } } override suspend fun rejectSignIn() { if (isSigned() || isSignRejected()) return - sharedPreference.edit().putBoolean(IS_SIGN_REJECTED, true).apply() + authPref.edit().putBoolean(IS_SIGN_REJECTED, true).apply() } override suspend fun signOut(): Result { - TODO("Not yet implemented") + return runCatchingResponse { + authRetrofitService.signOut(getAccessToken().getOrThrow().format()) + }.onSuccessOrCatch { + tokenDataSource.accessToken = null + tokenDataSource.refreshToken = null + } } override suspend fun deleteAccount(): Result { - TODO("Not yet implemented") + return runCatchingResponse { + authRetrofitService.deleteAccount(getAccessToken().getOrThrow().format()) + }.onSuccessOrCatch { + tokenDataSource.accessToken = null + tokenDataSource.refreshToken = null + } } private suspend fun refresh(refreshToken: Token): Result { @@ -84,6 +97,7 @@ class DefaultUserRepository @Inject constructor( } companion object { + private const val SOCIAL_TYPE = "KAKAO" private const val AUTH_PREF = "auth_pref" private const val IS_SIGN_REJECTED = "is_sign_rejected" } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt b/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt new file mode 100644 index 000000000..63436119a --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt @@ -0,0 +1,5 @@ +package com.festago.festago.data.util + +import com.festago.festago.domain.model.token.Token + +fun Token.format() = "Bearer $token" From d92622c1f7ecb83e71f2e8bcd8324ea14c530e67 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Sun, 28 Apr 2024 11:12:40 +0900 Subject: [PATCH 13/25] =?UTF-8?q?feat(UnauthorizedException):=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=A0=95=EB=B3=B4=20=EC=98=A4=EB=A5=98=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20Result=20=ED=99=95=EC=9E=A5=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/festago/data/util/ResponseExt.kt | 5 +++++ .../domain/exception/UnauthorizedException.kt | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/util/ResponseExt.kt b/android/festago/data/src/main/java/com/festago/festago/data/util/ResponseExt.kt index 8203cc483..bb0466454 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/util/ResponseExt.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/util/ResponseExt.kt @@ -1,5 +1,6 @@ package com.festago.festago.data.util +import com.festago.festago.domain.exception.UnauthorizedException import retrofit2.Response suspend fun runCatchingResponse( @@ -11,6 +12,10 @@ suspend fun runCatchingResponse( return Result.success(response.body()!!) } + if (response.code() == 401) { + throw UnauthorizedException() + } + return Result.failure( Throwable( "{" + diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt new file mode 100644 index 000000000..9d4befd04 --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt @@ -0,0 +1,20 @@ +package com.festago.festago.domain.exception + +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/* 에러 코드가 401 일때 예외 */ +class UnauthorizedException : Exception() + +fun Result.isUnauthorized() = exceptionOrNull() is UnauthorizedException + +@OptIn(ExperimentalContracts::class) +@SinceKotlin("1.3") +inline fun Result.onUnauthorized(action: () -> Unit): Result { + contract { + callsInPlace(action, InvocationKind.AT_MOST_ONCE) + } + if (isUnauthorized()) action() + return this +} From 717d9aea3dc4464122d56a7f73802c3476470756 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Sun, 28 Apr 2024 11:39:04 +0900 Subject: [PATCH 14/25] =?UTF-8?q?feat(DataSourceModule):=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EA=B4=80=EB=A6=AC=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EC=86=8C=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/di/singletonscope/DataSourceModule.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt new file mode 100644 index 000000000..a8d3879ac --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt @@ -0,0 +1,16 @@ +package com.festago.festago.data.di.singletonscope + +import com.festago.festago.data.datasource.TokenDataSource +import com.festago.festago.data.datasource.TokenLocalDataSource +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent + +@Module +@InstallIn(SingletonComponent::class) +interface DataSourceModule { + + @Binds + fun bindsTokenDataSource(localDataSource: TokenLocalDataSource): TokenDataSource +} From 17d5a1f86f0413f0ac79c683960cb6bc53c995e2 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Mon, 29 Apr 2024 16:34:35 +0900 Subject: [PATCH 15/25] =?UTF-8?q?feat:=20Kakao=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=EC=9D=84=20code=20=EC=97=90=EC=84=9C=20IdTok?= =?UTF-8?q?en=20=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/data/dto/user/SignInRequest.kt | 2 +- .../data/repository/DefaultUserRepository.kt | 4 +- .../data/repository/FakeUserRepository.kt | 2 +- .../domain/model/nonce/NonceGenerator.kt | 13 +++ .../domain/repository/UserRepository.kt | 2 +- .../presentation/src/main/AndroidManifest.xml | 15 ++++ .../ui/signin/KakaoAuthorization.kt | 86 +++++++++++++------ .../presentation/ui/signin/SignInActivity.kt | 11 +-- .../presentation/ui/signin/SignInViewModel.kt | 4 +- 9 files changed, 100 insertions(+), 39 deletions(-) create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/model/nonce/NonceGenerator.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt index 2cbb69f00..3bfa725a5 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInRequest.kt @@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable @Serializable class SignInRequest( val socialType: String, - val code: String, + val idToken: String, ) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 5d438d300..65457ed73 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -56,9 +56,9 @@ class DefaultUserRepository @Inject constructor( return Result.success(refreshToken) } - override suspend fun signIn(code: String): Result { + override suspend fun signIn(idToken: String): Result { return runCatchingResponse { - authRetrofitService.signIn(SignInRequest(SOCIAL_TYPE, code)) + authRetrofitService.signIn(SignInRequest(SOCIAL_TYPE, idToken)) }.onSuccessOrCatch { signInResponse -> tokenDataSource.accessToken = signInResponse.accessToken.toEntity() tokenDataSource.refreshToken = signInResponse.refreshToken.toEntity() diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt index 697bf5201..7a13438e1 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt @@ -23,7 +23,7 @@ class FakeUserRepository @Inject constructor() : UserRepository { return Result.success(Token("", LocalDateTime.now())) } - override suspend fun signIn(code: String): Result { + override suspend fun signIn(idToken: String): Result { return Result.success(Unit) } diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/model/nonce/NonceGenerator.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/model/nonce/NonceGenerator.kt new file mode 100644 index 000000000..62276febc --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/model/nonce/NonceGenerator.kt @@ -0,0 +1,13 @@ +package com.festago.festago.domain.model.nonce + +class NonceGenerator { + fun generate() = + List((MIN_LENGTH..MAX_LENGTH).random()) { (MIN_CHAR..MAX_CHAR).random() }.joinToString("") + + companion object { + private const val MIN_LENGTH = 3 + private const val MAX_LENGTH = 6 + private const val MIN_CHAR = 'a' + private const val MAX_CHAR = 'z' + } +} diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt index 75d8eb55d..b7ac3430a 100644 --- a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt @@ -7,7 +7,7 @@ interface UserRepository { suspend fun isSigned(): Boolean suspend fun getAccessToken(): Result suspend fun getRefreshToken(): Result - suspend fun signIn(code: String): Result + suspend fun signIn(idToken: String): Result suspend fun signOut(): Result suspend fun deleteAccount(): Result suspend fun rejectSignIn() diff --git a/android/festago/presentation/src/main/AndroidManifest.xml b/android/festago/presentation/src/main/AndroidManifest.xml index 66d419487..5ab54f712 100644 --- a/android/festago/presentation/src/main/AndroidManifest.xml +++ b/android/festago/presentation/src/main/AndroidManifest.xml @@ -2,6 +2,21 @@ + + + + + + + + + + { + suspend fun getIdToken(context: Context): Result { return runCatching { + val nonce = nonceGenerator.generate() if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { - authorizeWithKakaoTalk(context) + try { + loginWithKakaoTalk(context, nonce) + } catch (error: Throwable) { + if (error is ClientError && error.reason == ClientErrorCause.Cancelled) throw error + loginWithKakaoAccount(context, nonce) + } } else { - authorizeWithKakaoAccount(context) + loginWithKakaoAccount(context, nonce) } } } -} -private suspend fun authorizeWithKakaoTalk(context: Context): String { - return suspendCoroutine { continuation -> - AuthCodeClient.instance.authorizeWithKakaoTalk(context) { code: String?, error: Throwable? -> - if (error != null) { - continuation.resumeWithException(error) - } else if (code != null) { - continuation.resume(code) - } else { - continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + private suspend fun loginWithKakaoTalk(context: Context, nonce: String?): String { + return suspendCoroutine { continuation -> + UserApiClient.instance.loginWithKakaoTalk(context, nonce = nonce) { token, error -> + if (error != null) { + continuation.resumeWithException(error) + } else if (token != null) { + if (token.idToken != null) { + continuation.resume(token.idToken!!) + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao id token")) + } + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + } } } } -} -private suspend fun authorizeWithKakaoAccount(context: Context): String { - return suspendCoroutine { continuation -> - AuthCodeClient.instance.authorizeWithKakaoAccount(context) { code: String?, error: Throwable? -> - if (error != null) { - continuation.resumeWithException(error) - } else if (code != null) { - continuation.resume(code) - } else { - continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + private suspend fun loginWithKakaoAccount(context: Context, nonce: String?): String { + return suspendCoroutine { continuation -> + UserApiClient.instance.loginWithKakaoAccount(context, nonce = nonce) { token, error -> + if (error != null) { + continuation.resumeWithException(error) + } else if (token != null) { + if (token.idToken != null) { + continuation.resume(token.idToken!!) + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao id token")) + } + } else { + continuation.resumeWithException(RuntimeException("Failure get kakao access token")) + } } } } + + suspend fun signOut(): Result { + UserApiClient.instance.logout {} + return Result.success(Unit) + } + + suspend fun deleteAccount(): Result { + return suspendCoroutine> { continuation -> + TokenManagerProvider.instance.manager.getToken()?.let { + UserApiClient.instance.unlink { error -> + if (error == null) { + continuation.resume(Result.success(Unit)) + } else { + continuation.resumeWithException(error) + } + } + } ?: continuation.resume(Result.success(Unit)) + } + } } diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt index 3b03e3b6d..ed43b408c 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -10,14 +10,13 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope +import com.festago.festago.domain.model.nonce.NonceGenerator import com.festago.festago.presentation.R import com.festago.festago.presentation.databinding.ActivitySignInBinding import com.festago.festago.presentation.ui.home.HomeActivity import com.festago.festago.presentation.util.repeatOnStarted import com.festago.festago.presentation.util.setOnApplyWindowInsetsCompatListener import com.festago.festago.presentation.util.setStatusBarMode -import com.kakao.sdk.common.model.ClientError -import com.kakao.sdk.common.model.ClientErrorCause import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -69,12 +68,10 @@ class SignInActivity : AppCompatActivity() { private fun initKakaoLogin() { binding.btnKakaoLogin.setOnClickListener { lifecycleScope.launch { - KakaoAuthorization().getAuthCode(this@SignInActivity) - .onSuccess { authCode -> - vm.signIn(authCode) + KakaoAuthorization(NonceGenerator()).getIdToken(this@SignInActivity) + .onSuccess { idToken -> + vm.signIn(idToken) }.onFailure { error -> - // 카카오 로그인 취소 시에는 예외를 던지지 않고 처리 - if (error is ClientError && error.reason == ClientErrorCause.Cancelled) return@launch handleSignInFailure() } } diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt index 849055548..98889d9b8 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInViewModel.kt @@ -18,9 +18,9 @@ class SignInViewModel @Inject constructor( private val _event: MutableSharedFlow = MutableSharedFlow() val event: SharedFlow = _event.asSharedFlow() - fun signIn(authCode: String) { + fun signIn(idToken: String) { viewModelScope.launch { - userRepository.signIn(authCode) + userRepository.signIn(idToken) .onSuccess { _event.emit(SignInEvent.ShowHome) }.onFailure { From 0b534749aa214d053a8aa701ea848e7d02519be5 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 12:51:42 +0900 Subject: [PATCH 16/25] =?UTF-8?q?feat:=20AuthRetrofit=20=EC=9D=80=20AuthIn?= =?UTF-8?q?terceptor=20=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=B4=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=EA=B3=BC=20=ED=95=A8=EA=BB=98=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/di/singletonscope/ApiModule.kt | 32 +++++++++++++++++++ .../festago/data/retrofit/AuthInterceptor.kt | 32 +++++++++++++++++++ .../data/service/AuthRetrofitService.kt | 2 +- .../domain/exception/UnauthorizedException.kt | 16 +--------- 4 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ApiModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ApiModule.kt index dce0fa52c..ffe5fcb73 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ApiModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/ApiModule.kt @@ -1,6 +1,8 @@ package com.festago.festago.data.di.singletonscope import com.festago.festago.data.BuildConfig +import com.festago.festago.data.retrofit.AuthInterceptor +import com.festago.festago.domain.repository.UserRepository import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import dagger.Module import dagger.Provides @@ -8,6 +10,7 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType +import okhttp3.OkHttpClient import retrofit2.Retrofit import javax.inject.Qualifier import javax.inject.Singleton @@ -20,6 +23,14 @@ annotation class NormalRetrofitQualifier @Retention(AnnotationRetention.BINARY) annotation class BaseUrlQualifier +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class AuthRetrofitQualifier + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class AuthOkHttpClientQualifier + @InstallIn(SingletonComponent::class) @Module object ApiModule { @@ -32,6 +43,14 @@ object ApiModule { return json.asConverterFactory("application/json".toMediaType()) } + @Provides + @Singleton + @AuthOkHttpClientQualifier + fun provideOkHttpClient(userRepository: UserRepository): OkHttpClient = OkHttpClient + .Builder() + .addInterceptor(AuthInterceptor(userRepository)) + .build() + @Provides @Singleton @NormalRetrofitQualifier @@ -43,6 +62,19 @@ object ApiModule { .addConverterFactory(converterFactory) .build() + @Provides + @Singleton + @AuthRetrofitQualifier + fun providesAuthRetrofit( + @BaseUrlQualifier baseUrl: String, + @AuthOkHttpClientQualifier okHttpClient: OkHttpClient, + converterFactory: retrofit2.Converter.Factory, + ): Retrofit = Retrofit.Builder() + .baseUrl(baseUrl) + .client(okHttpClient) + .addConverterFactory(converterFactory) + .build() + @Provides @Singleton @BaseUrlQualifier diff --git a/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt b/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt new file mode 100644 index 000000000..ee59b41b4 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt @@ -0,0 +1,32 @@ +package com.festago.festago.data.retrofit + +import com.festago.festago.domain.repository.UserRepository +import kotlinx.coroutines.runBlocking +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response + +class AuthInterceptor(private val userRepository: UserRepository) : Interceptor { + + override fun intercept(chain: Interceptor.Chain): Response { + return runBlocking { + chain.proceed(request = getNewRequest(chain)) + } + } + + private suspend fun getNewRequest(chain: Interceptor.Chain): Request = + chain.request() + .newBuilder() + .addHeader( + HEADER_AUTHORIZATION, + AUTHORIZATION_TOKEN_FORMAT.format( + userRepository.getAccessToken().getOrNull() ?: "TokenIsNull", + ), + ) + .build() + + companion object { + private const val HEADER_AUTHORIZATION = "Authorization" + private const val AUTHORIZATION_TOKEN_FORMAT = "Bearer %s" + } +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt b/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt index cc115fb7a..ccaa38fe8 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/service/AuthRetrofitService.kt @@ -11,7 +11,7 @@ import retrofit2.http.Header import retrofit2.http.POST interface AuthRetrofitService { - @POST("api/v1/auth/login/oauth2") + @POST("api/v1/auth/login/open-id") suspend fun signIn( @Body signInRequest: SignInRequest, ): Response diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt index 9d4befd04..62a7e4335 100644 --- a/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/exception/UnauthorizedException.kt @@ -1,20 +1,6 @@ package com.festago.festago.domain.exception -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - /* 에러 코드가 401 일때 예외 */ class UnauthorizedException : Exception() -fun Result.isUnauthorized() = exceptionOrNull() is UnauthorizedException - -@OptIn(ExperimentalContracts::class) -@SinceKotlin("1.3") -inline fun Result.onUnauthorized(action: () -> Unit): Result { - contract { - callsInPlace(action, InvocationKind.AT_MOST_ONCE) - } - if (isUnauthorized()) action() - return this -} +fun Throwable.isUnauthorized() = this is UnauthorizedException From 1af45393e06d3bd806fb880a01bfa86dd9afaf3f Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 12:53:29 +0900 Subject: [PATCH 17/25] =?UTF-8?q?feat:=20Token=20util=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/data/repository/DefaultUserRepository.kt | 10 +++++++--- .../java/com/festago/festago/data/util/TokenExt.kt | 5 ----- 2 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 65457ed73..337d1aa84 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -6,7 +6,6 @@ import com.festago.festago.data.datasource.TokenDataSource import com.festago.festago.data.dto.user.RefreshRequest import com.festago.festago.data.dto.user.SignInRequest import com.festago.festago.data.service.AuthRetrofitService -import com.festago.festago.data.util.format import com.festago.festago.data.util.onSuccessOrCatch import com.festago.festago.data.util.runCatchingResponse import com.festago.festago.domain.model.token.Token @@ -72,7 +71,9 @@ class DefaultUserRepository @Inject constructor( override suspend fun signOut(): Result { return runCatchingResponse { - authRetrofitService.signOut(getAccessToken().getOrThrow().format()) + authRetrofitService.signOut( + AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), + ) }.onSuccessOrCatch { tokenDataSource.accessToken = null tokenDataSource.refreshToken = null @@ -81,7 +82,9 @@ class DefaultUserRepository @Inject constructor( override suspend fun deleteAccount(): Result { return runCatchingResponse { - authRetrofitService.deleteAccount(getAccessToken().getOrThrow().format()) + authRetrofitService.deleteAccount( + AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), + ) }.onSuccessOrCatch { tokenDataSource.accessToken = null tokenDataSource.refreshToken = null @@ -100,5 +103,6 @@ class DefaultUserRepository @Inject constructor( private const val SOCIAL_TYPE = "KAKAO" private const val AUTH_PREF = "auth_pref" private const val IS_SIGN_REJECTED = "is_sign_rejected" + private const val AUTHORIZATION_TOKEN_FORMAT = "Bearer %s" } } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt b/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt deleted file mode 100644 index 63436119a..000000000 --- a/android/festago/data/src/main/java/com/festago/festago/data/util/TokenExt.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.festago.festago.data.util - -import com.festago.festago.domain.model.token.Token - -fun Token.format() = "Bearer $token" From 9ca8dfe579757abf99afa640f9558004651b98dd Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 13:14:15 +0900 Subject: [PATCH 18/25] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=ED=83=88=ED=87=B4=20=EB=A1=9C=EC=A7=81=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/repository/DefaultUserRepository.kt | 25 +++++++++++++++++++ .../ui/signin/KakaoAuthorization.kt | 4 +-- .../presentation/ui/signin/SignInActivity.kt | 3 +-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 337d1aa84..9c9a4a168 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -10,8 +10,13 @@ import com.festago.festago.data.util.onSuccessOrCatch import com.festago.festago.data.util.runCatchingResponse import com.festago.festago.domain.model.token.Token import com.festago.festago.domain.repository.UserRepository +import com.kakao.sdk.auth.TokenManagerProvider +import com.kakao.sdk.user.UserApiClient import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine class DefaultUserRepository @Inject constructor( private val authRetrofitService: AuthRetrofitService, @@ -75,6 +80,7 @@ class DefaultUserRepository @Inject constructor( AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), ) }.onSuccessOrCatch { + logoutKakao() tokenDataSource.accessToken = null tokenDataSource.refreshToken = null } @@ -86,6 +92,7 @@ class DefaultUserRepository @Inject constructor( AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), ) }.onSuccessOrCatch { + deleteKakaoAccount() tokenDataSource.accessToken = null tokenDataSource.refreshToken = null } @@ -99,6 +106,24 @@ class DefaultUserRepository @Inject constructor( } } + private fun logoutKakao() { + UserApiClient.instance.logout {} + } + + private suspend fun deleteKakaoAccount(): Result { + return suspendCoroutine> { continuation -> + TokenManagerProvider.instance.manager.getToken()?.let { + UserApiClient.instance.unlink { error -> + if (error == null) { + continuation.resume(Result.success(Unit)) + } else { + continuation.resumeWithException(error) + } + } + } ?: continuation.resume(Result.success(Unit)) + } + } + companion object { private const val SOCIAL_TYPE = "KAKAO" private const val AUTH_PREF = "auth_pref" diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt index 3455b40ca..b78d68f8d 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt @@ -10,11 +10,11 @@ import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException import kotlin.coroutines.suspendCoroutine -class KakaoAuthorization(private val nonceGenerator: NonceGenerator) { +class KakaoAuthorization { suspend fun getIdToken(context: Context): Result { return runCatching { - val nonce = nonceGenerator.generate() + val nonce = NonceGenerator().generate() if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { try { loginWithKakaoTalk(context, nonce) diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt index ed43b408c..eafee0d7d 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -10,7 +10,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope -import com.festago.festago.domain.model.nonce.NonceGenerator import com.festago.festago.presentation.R import com.festago.festago.presentation.databinding.ActivitySignInBinding import com.festago.festago.presentation.ui.home.HomeActivity @@ -68,7 +67,7 @@ class SignInActivity : AppCompatActivity() { private fun initKakaoLogin() { binding.btnKakaoLogin.setOnClickListener { lifecycleScope.launch { - KakaoAuthorization(NonceGenerator()).getIdToken(this@SignInActivity) + KakaoAuthorization().getIdToken(this@SignInActivity) .onSuccess { idToken -> vm.signIn(idToken) }.onFailure { error -> From a26213b131ced4518fa11e370841f473bd38bcbd Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:26:51 +0900 Subject: [PATCH 19/25] =?UTF-8?q?chore:=20DataSource=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/{ => token}/TokenDataSource.kt | 2 +- .../{ => token}/TokenLocalDataSource.kt | 23 ++++++------------- .../di/singletonscope/DataSourceModule.kt | 4 ++-- 3 files changed, 10 insertions(+), 19 deletions(-) rename android/festago/data/src/main/java/com/festago/festago/data/datasource/{ => token}/TokenDataSource.kt (75%) rename android/festago/data/src/main/java/com/festago/festago/data/datasource/{ => token}/TokenLocalDataSource.kt (59%) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenDataSource.kt similarity index 75% rename from android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt rename to android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenDataSource.kt index f46b38d36..d61066b05 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenDataSource.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenDataSource.kt @@ -1,4 +1,4 @@ -package com.festago.festago.data.datasource +package com.festago.festago.data.datasource.token import com.festago.festago.data.model.TokenEntity diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenLocalDataSource.kt similarity index 59% rename from android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt rename to android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenLocalDataSource.kt index d884a90a7..27bffe848 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/datasource/TokenLocalDataSource.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/token/TokenLocalDataSource.kt @@ -1,11 +1,12 @@ -package com.festago.festago.data.datasource +package com.festago.festago.data.datasource.token import android.content.Context import android.content.SharedPreferences import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKey import com.festago.festago.data.model.TokenEntity -import com.google.gson.GsonBuilder +import com.festago.festago.data.util.getObject +import com.festago.festago.data.util.putObject import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -23,27 +24,17 @@ class TokenLocalDataSource @Inject constructor( } override var accessToken: TokenEntity? - get() = sharedPreference.getToken(ACCESS_TOKEN_KEY, null) + get() = sharedPreference.getObject(ACCESS_TOKEN_KEY, null) set(value) { - sharedPreference.putToken(ACCESS_TOKEN_KEY, value) + sharedPreference.putObject(ACCESS_TOKEN_KEY, value) } override var refreshToken: TokenEntity? - get() = sharedPreference.getToken(REFRESH_TOKEN_KEY, null) + get() = sharedPreference.getObject(REFRESH_TOKEN_KEY, null) set(value) { - sharedPreference.putToken(REFRESH_TOKEN_KEY, value) + sharedPreference.putObject(REFRESH_TOKEN_KEY, value) } - private fun SharedPreferences.putToken(key: String, token: TokenEntity?) { - val jsonString = GsonBuilder().create().toJson(token) - edit().putString(key, jsonString).apply() - } - - private fun SharedPreferences.getToken(key: String, default: TokenEntity?): TokenEntity? { - val token = getString(key, null) ?: return default - return GsonBuilder().create().fromJson(token, TokenEntity::class.java) - } - companion object { private const val ENCRYPTED_PREF_FILE = "encrypted_pref_file" private const val ACCESS_TOKEN_KEY = "access_token_key" diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt index a8d3879ac..9f115eaed 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt @@ -1,7 +1,7 @@ package com.festago.festago.data.di.singletonscope -import com.festago.festago.data.datasource.TokenDataSource -import com.festago.festago.data.datasource.TokenLocalDataSource +import com.festago.festago.data.datasource.token.TokenDataSource +import com.festago.festago.data.datasource.token.TokenLocalDataSource import dagger.Binds import dagger.Module import dagger.hilt.InstallIn From 15ed79393a07cd87b6378adf083e08a2600b84ae Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:32:49 +0900 Subject: [PATCH 20/25] =?UTF-8?q?feat:=20KakaoAuth=20=EB=A5=BC=20common=20?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/festago/common/build.gradle.kts | 5 +++++ .../festago/festago/common/kakao}/KakaoAuthorization.kt | 5 +++-- android/festago/data/build.gradle.kts | 7 ++++--- 3 files changed, 12 insertions(+), 5 deletions(-) rename android/festago/{presentation/src/main/java/com/festago/festago/presentation/ui/signin => common/src/main/java/com/festago/festago/common/kakao}/KakaoAuthorization.kt (96%) diff --git a/android/festago/common/build.gradle.kts b/android/festago/common/build.gradle.kts index 796d1ff0d..9fd20d703 100644 --- a/android/festago/common/build.gradle.kts +++ b/android/festago/common/build.gradle.kts @@ -38,10 +38,15 @@ android { kotlin.jvmToolchain(17) dependencies { + // common + implementation(project(":domain")) // hilt implementation("com.google.dagger:hilt-android:2.44") kapt("com.google.dagger:hilt-android-compiler:2.44") + // kakao login + implementation("com.kakao.sdk:v2-user:2.12.0") + // firebase implementation(platform("com.google.firebase:firebase-bom:32.2.0")) implementation("com.google.firebase:firebase-analytics-ktx") diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt b/android/festago/common/src/main/java/com/festago/festago/common/kakao/KakaoAuthorization.kt similarity index 96% rename from android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt rename to android/festago/common/src/main/java/com/festago/festago/common/kakao/KakaoAuthorization.kt index b78d68f8d..d9a97983f 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/KakaoAuthorization.kt +++ b/android/festago/common/src/main/java/com/festago/festago/common/kakao/KakaoAuthorization.kt @@ -1,4 +1,4 @@ -package com.festago.festago.presentation.ui.signin +package com.festago.festago.common.kakao import android.content.Context import com.festago.festago.domain.model.nonce.NonceGenerator @@ -6,11 +6,12 @@ import com.kakao.sdk.auth.TokenManagerProvider import com.kakao.sdk.common.model.ClientError import com.kakao.sdk.common.model.ClientErrorCause import com.kakao.sdk.user.UserApiClient +import javax.inject.Inject import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException import kotlin.coroutines.suspendCoroutine -class KakaoAuthorization { +class KakaoAuthorization @Inject constructor() { suspend fun getIdToken(context: Context): Result { return runCatching { diff --git a/android/festago/data/build.gradle.kts b/android/festago/data/build.gradle.kts index 6abd2785e..065a0b329 100644 --- a/android/festago/data/build.gradle.kts +++ b/android/festago/data/build.gradle.kts @@ -49,6 +49,7 @@ kotlin.jvmToolchain(17) dependencies { implementation(project(":domain")) + implementation(project(":common")) // hilt implementation("com.google.dagger:hilt-android:2.50") @@ -68,9 +69,6 @@ dependencies { // Encrypted SharedPreference implementation("androidx.security:security-crypto-ktx:1.1.0-alpha06") - // kakao login - implementation("com.kakao.sdk:v2-user:2.12.0") - // junit4 testImplementation("junit:junit:4.13.2") testImplementation("androidx.test.ext:junit:1.1.5") @@ -93,6 +91,9 @@ dependencies { // logging httpLoggingInterceptor implementation("com.squareup.okhttp3:logging-interceptor:4.11.0") + + // gson + implementation("com.google.code.gson:gson:2.9.0") } fun getSecretKey(propertyKey: String): String { From a1f58708e6592a04a67f9d70d39ba2aba093f211 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:34:25 +0900 Subject: [PATCH 21/25] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=B0=8F=20User=20=EC=A0=80=EC=9E=A5?= =?UTF-8?q?=EC=86=8C=EC=97=90=20kakao=20Auth=20=EC=A3=BC=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../festago/data/dto/user/SignInResponse.kt | 2 +- .../data/repository/DefaultUserRepository.kt | 31 +++---------------- .../presentation/ui/signin/SignInActivity.kt | 7 ++++- 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt index 46a4517bf..dfdf7b582 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/SignInResponse.kt @@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable @Serializable data class SignInResponse( - val nickName: String, + val nickname: String, val profileImageUrl: String, val accessToken: TokenResponse, val refreshToken: TokenResponse, diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 9c9a4a168..0f3ad682c 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -2,7 +2,8 @@ package com.festago.festago.data.repository import android.content.Context import android.content.SharedPreferences -import com.festago.festago.data.datasource.TokenDataSource +import com.festago.festago.common.kakao.KakaoAuthorization +import com.festago.festago.data.datasource.token.TokenDataSource import com.festago.festago.data.dto.user.RefreshRequest import com.festago.festago.data.dto.user.SignInRequest import com.festago.festago.data.service.AuthRetrofitService @@ -10,17 +11,13 @@ import com.festago.festago.data.util.onSuccessOrCatch import com.festago.festago.data.util.runCatchingResponse import com.festago.festago.domain.model.token.Token import com.festago.festago.domain.repository.UserRepository -import com.kakao.sdk.auth.TokenManagerProvider -import com.kakao.sdk.user.UserApiClient import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException -import kotlin.coroutines.suspendCoroutine class DefaultUserRepository @Inject constructor( private val authRetrofitService: AuthRetrofitService, private val tokenDataSource: TokenDataSource, + private val kakaoAuthorization: KakaoAuthorization, @ApplicationContext context: Context, ) : UserRepository { @@ -80,7 +77,7 @@ class DefaultUserRepository @Inject constructor( AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), ) }.onSuccessOrCatch { - logoutKakao() + kakaoAuthorization.signOut() tokenDataSource.accessToken = null tokenDataSource.refreshToken = null } @@ -92,7 +89,7 @@ class DefaultUserRepository @Inject constructor( AUTHORIZATION_TOKEN_FORMAT.format(getAccessToken().getOrThrow()), ) }.onSuccessOrCatch { - deleteKakaoAccount() + kakaoAuthorization.deleteAccount() tokenDataSource.accessToken = null tokenDataSource.refreshToken = null } @@ -106,24 +103,6 @@ class DefaultUserRepository @Inject constructor( } } - private fun logoutKakao() { - UserApiClient.instance.logout {} - } - - private suspend fun deleteKakaoAccount(): Result { - return suspendCoroutine> { continuation -> - TokenManagerProvider.instance.manager.getToken()?.let { - UserApiClient.instance.unlink { error -> - if (error == null) { - continuation.resume(Result.success(Unit)) - } else { - continuation.resumeWithException(error) - } - } - } ?: continuation.resume(Result.success(Unit)) - } - } - companion object { private const val SOCIAL_TYPE = "KAKAO" private const val AUTH_PREF = "auth_pref" diff --git a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt index eafee0d7d..0c44f8604 100644 --- a/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt +++ b/android/festago/presentation/src/main/java/com/festago/festago/presentation/ui/signin/SignInActivity.kt @@ -10,6 +10,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope +import com.festago.festago.common.kakao.KakaoAuthorization import com.festago.festago.presentation.R import com.festago.festago.presentation.databinding.ActivitySignInBinding import com.festago.festago.presentation.ui.home.HomeActivity @@ -18,6 +19,7 @@ import com.festago.festago.presentation.util.setOnApplyWindowInsetsCompatListene import com.festago.festago.presentation.util.setStatusBarMode import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch +import javax.inject.Inject @AndroidEntryPoint class SignInActivity : AppCompatActivity() { @@ -26,6 +28,9 @@ class SignInActivity : AppCompatActivity() { ActivitySignInBinding.inflate(layoutInflater) } + @Inject + lateinit var kakaoAuthorization: KakaoAuthorization + private val vm: SignInViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { @@ -67,7 +72,7 @@ class SignInActivity : AppCompatActivity() { private fun initKakaoLogin() { binding.btnKakaoLogin.setOnClickListener { lifecycleScope.launch { - KakaoAuthorization().getIdToken(this@SignInActivity) + kakaoAuthorization.getIdToken(this@SignInActivity) .onSuccess { idToken -> vm.signIn(idToken) }.onFailure { error -> From 3fc1dd09e3793538c8b4d2c67958c286b11051f1 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:35:00 +0900 Subject: [PATCH 22/25] =?UTF-8?q?feat:=20shardPref=20=EC=97=90=20object=20?= =?UTF-8?q?=EB=84=A3=EA=B8=B0=20Util=20=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/festago/festago/data/util/SharedPrefExt.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/util/SharedPrefExt.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/util/SharedPrefExt.kt b/android/festago/data/src/main/java/com/festago/festago/data/util/SharedPrefExt.kt new file mode 100644 index 000000000..4bf934298 --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/util/SharedPrefExt.kt @@ -0,0 +1,14 @@ +package com.festago.festago.data.util + +import android.content.SharedPreferences +import com.google.gson.GsonBuilder + +inline fun SharedPreferences.putObject(key: String, value: T?) { + val jsonString = GsonBuilder().create().toJson(value) + edit().putString(key, jsonString).apply() +} + +inline fun SharedPreferences.getObject(key: String, default: T?): T? { + val value = getString(key, null) ?: return default + return GsonBuilder().create().fromJson(value, T::class.java) +} From 3e6b178d99cf460a1933ba6154df43b97335f6c6 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:35:47 +0900 Subject: [PATCH 23/25] =?UTF-8?q?feat:=20UserInfo=20=EB=A5=BC=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/userinfo/UserInfoDataSource.kt | 7 +++++ .../userinfo/UserInfoLocalDataSource.kt | 29 +++++++++++++++++++ .../festago/data/model/UserInfoEntity.kt | 6 ++++ 3 files changed, 42 insertions(+) create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoDataSource.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoLocalDataSource.kt create mode 100644 android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoDataSource.kt new file mode 100644 index 000000000..dc2f0dc2e --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoDataSource.kt @@ -0,0 +1,7 @@ +package com.festago.festago.data.datasource.userinfo + +import com.festago.festago.data.model.UserInfoEntity + +interface UserInfoDataSource { + var userInfo: UserInfoEntity? +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoLocalDataSource.kt b/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoLocalDataSource.kt new file mode 100644 index 000000000..2a9b3d9bb --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/datasource/userinfo/UserInfoLocalDataSource.kt @@ -0,0 +1,29 @@ +package com.festago.festago.data.datasource.userinfo + +import android.content.Context +import android.content.SharedPreferences +import com.festago.festago.data.model.UserInfoEntity +import com.festago.festago.data.util.getObject +import com.festago.festago.data.util.putObject +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +class UserInfoLocalDataSource @Inject constructor( + @ApplicationContext context: Context, +) : UserInfoDataSource { + + private val sharedPreference: SharedPreferences by lazy { + context.getSharedPreferences(USER_INFO_PREF, Context.MODE_PRIVATE) + } + + override var userInfo: UserInfoEntity? + get() = sharedPreference.getObject(USER_ID_KEY, null) + set(value) { + sharedPreference.putObject(USER_ID_KEY, value) + } + + companion object { + private const val USER_INFO_PREF = "user_info_pref" + private const val USER_ID_KEY = "user_info_key" + } +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt b/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt new file mode 100644 index 000000000..263dc049a --- /dev/null +++ b/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt @@ -0,0 +1,6 @@ +package com.festago.festago.data.model + +data class UserInfoEntity( + val nickname: String, + val profileImageUrl: String, +) From e9e3c3be556439afd8e41613dbf1d51ca7610730 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 16:44:15 +0900 Subject: [PATCH 24/25] =?UTF-8?q?feat:=20=EC=9C=A0=EC=A0=80=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=A5=BC=20=EA=B0=80=EC=A0=B8=EC=98=AC=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/di/singletonscope/DataSourceModule.kt | 7 ++++++- .../festago/festago/data/dto/user/TokenResponse.kt | 2 +- .../com/festago/festago/data/model/TokenEntity.kt | 2 +- .../festago/festago/data/model/UserInfoEntity.kt | 9 ++++++++- .../data/repository/DefaultUserRepository.kt | 13 ++++++++++++- .../festago/data/repository/FakeUserRepository.kt | 7 ++++++- .../festago/domain/model/{token => user}/Token.kt | 2 +- .../festago/festago/domain/model/user/UserInfo.kt | 6 ++++++ .../festago/domain/repository/UserRepository.kt | 4 +++- 9 files changed, 44 insertions(+), 8 deletions(-) rename android/festago/domain/src/main/java/com/festago/festago/domain/model/{token => user}/Token.kt (78%) create mode 100644 android/festago/domain/src/main/java/com/festago/festago/domain/model/user/UserInfo.kt diff --git a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt index 9f115eaed..b0acbb14c 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/di/singletonscope/DataSourceModule.kt @@ -2,6 +2,8 @@ package com.festago.festago.data.di.singletonscope import com.festago.festago.data.datasource.token.TokenDataSource import com.festago.festago.data.datasource.token.TokenLocalDataSource +import com.festago.festago.data.datasource.userinfo.UserInfoDataSource +import com.festago.festago.data.datasource.userinfo.UserInfoLocalDataSource import dagger.Binds import dagger.Module import dagger.hilt.InstallIn @@ -12,5 +14,8 @@ import dagger.hilt.components.SingletonComponent interface DataSourceModule { @Binds - fun bindsTokenDataSource(localDataSource: TokenLocalDataSource): TokenDataSource + fun bindsTokenDataSource(tokenDataSource: TokenLocalDataSource): TokenDataSource + + @Binds + fun bindsUserInfoDataSource(userInfoDataSource: UserInfoLocalDataSource): UserInfoDataSource } diff --git a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt index ead579e20..b02033d36 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/dto/user/TokenResponse.kt @@ -1,7 +1,7 @@ package com.festago.festago.data.dto.user import com.festago.festago.data.model.TokenEntity -import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.model.user.Token import kotlinx.serialization.Serializable import java.time.LocalDateTime diff --git a/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt b/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt index ca9e6efe1..598f2e426 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/model/TokenEntity.kt @@ -1,6 +1,6 @@ package com.festago.festago.data.model -import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.model.user.Token import java.time.LocalDateTime data class TokenEntity( diff --git a/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt b/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt index 263dc049a..f1cb00503 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/model/UserInfoEntity.kt @@ -1,6 +1,13 @@ package com.festago.festago.data.model +import com.festago.festago.domain.model.user.UserInfo + data class UserInfoEntity( val nickname: String, val profileImageUrl: String, -) +) { + fun toDomain() = UserInfo( + nickname = nickname, + profileImageUrl = profileImageUrl, + ) +} diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt index 0f3ad682c..6eee73cc8 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/DefaultUserRepository.kt @@ -4,12 +4,15 @@ import android.content.Context import android.content.SharedPreferences import com.festago.festago.common.kakao.KakaoAuthorization import com.festago.festago.data.datasource.token.TokenDataSource +import com.festago.festago.data.datasource.userinfo.UserInfoDataSource import com.festago.festago.data.dto.user.RefreshRequest import com.festago.festago.data.dto.user.SignInRequest +import com.festago.festago.data.model.UserInfoEntity import com.festago.festago.data.service.AuthRetrofitService import com.festago.festago.data.util.onSuccessOrCatch import com.festago.festago.data.util.runCatchingResponse -import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.model.user.Token +import com.festago.festago.domain.model.user.UserInfo import com.festago.festago.domain.repository.UserRepository import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -18,6 +21,7 @@ class DefaultUserRepository @Inject constructor( private val authRetrofitService: AuthRetrofitService, private val tokenDataSource: TokenDataSource, private val kakaoAuthorization: KakaoAuthorization, + private val userInfoDataSource: UserInfoDataSource, @ApplicationContext context: Context, ) : UserRepository { @@ -61,6 +65,8 @@ class DefaultUserRepository @Inject constructor( return runCatchingResponse { authRetrofitService.signIn(SignInRequest(SOCIAL_TYPE, idToken)) }.onSuccessOrCatch { signInResponse -> + userInfoDataSource.userInfo = + UserInfoEntity(signInResponse.nickname, signInResponse.profileImageUrl) tokenDataSource.accessToken = signInResponse.accessToken.toEntity() tokenDataSource.refreshToken = signInResponse.refreshToken.toEntity() } @@ -103,6 +109,11 @@ class DefaultUserRepository @Inject constructor( } } + override suspend fun getUserInfo(): Result { + return userInfoDataSource.userInfo?.toDomain()?.let { Result.success(it) } + ?: Result.failure(NullPointerException("User info is null")) + } + companion object { private const val SOCIAL_TYPE = "KAKAO" private const val AUTH_PREF = "auth_pref" diff --git a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt index 7a13438e1..b3cb0c585 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/repository/FakeUserRepository.kt @@ -1,6 +1,7 @@ package com.festago.festago.data.repository -import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.model.user.Token +import com.festago.festago.domain.model.user.UserInfo import com.festago.festago.domain.repository.UserRepository import java.time.LocalDateTime import javax.inject.Inject @@ -38,4 +39,8 @@ class FakeUserRepository @Inject constructor() : UserRepository { override suspend fun deleteAccount(): Result { return Result.success(Unit) } + + override suspend fun getUserInfo(): Result { + return Result.success(UserInfo("", "")) + } } diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/model/user/Token.kt similarity index 78% rename from android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt rename to android/festago/domain/src/main/java/com/festago/festago/domain/model/user/Token.kt index 16a5b4752..58869af3d 100644 --- a/android/festago/domain/src/main/java/com/festago/festago/domain/model/token/Token.kt +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/model/user/Token.kt @@ -1,4 +1,4 @@ -package com.festago.festago.domain.model.token +package com.festago.festago.domain.model.user import java.time.LocalDateTime diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/model/user/UserInfo.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/model/user/UserInfo.kt new file mode 100644 index 000000000..43b7227ac --- /dev/null +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/model/user/UserInfo.kt @@ -0,0 +1,6 @@ +package com.festago.festago.domain.model.user + +data class UserInfo( + val nickname: String, + val profileImageUrl: String, +) diff --git a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt index b7ac3430a..f2eef3405 100644 --- a/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt +++ b/android/festago/domain/src/main/java/com/festago/festago/domain/repository/UserRepository.kt @@ -1,6 +1,7 @@ package com.festago.festago.domain.repository -import com.festago.festago.domain.model.token.Token +import com.festago.festago.domain.model.user.Token +import com.festago.festago.domain.model.user.UserInfo interface UserRepository { suspend fun isSignRejected(): Boolean @@ -11,4 +12,5 @@ interface UserRepository { suspend fun signOut(): Result suspend fun deleteAccount(): Result suspend fun rejectSignIn() + suspend fun getUserInfo(): Result } From 2a6afbdba7f87fa22a74c46be1f4953758f2fc89 Mon Sep 17 00:00:00 2001 From: vrexpert Date: Wed, 1 May 2024 17:41:36 +0900 Subject: [PATCH 25/25] =?UTF-8?q?fix(AuthInterceptor):=20API=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20token=20=EC=9D=B8=ED=84=B0=EC=85=89=ED=8A=B8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/festago/festago/data/retrofit/AuthInterceptor.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt b/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt index ee59b41b4..a9727cbeb 100644 --- a/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt +++ b/android/festago/data/src/main/java/com/festago/festago/data/retrofit/AuthInterceptor.kt @@ -20,7 +20,7 @@ class AuthInterceptor(private val userRepository: UserRepository) : Interceptor .addHeader( HEADER_AUTHORIZATION, AUTHORIZATION_TOKEN_FORMAT.format( - userRepository.getAccessToken().getOrNull() ?: "TokenIsNull", + userRepository.getAccessToken().getOrNull()?.token ?: "TokenIsNull", ), ) .build()