From ad222ea17e1b1f0fff496088a01d6b6b5b965aeb Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:34:04 +0900 Subject: [PATCH 01/32] =?UTF-8?q?design:=20LoginActivty=EC=97=90=20?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20drawable=20source=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/ic_kakao_login.png | Bin 0 -> 7213 bytes .../src/main/res/drawable/ic_logo_purple.xml | 46 ++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 android/app/src/main/res/drawable/ic_kakao_login.png create mode 100644 android/app/src/main/res/drawable/ic_logo_purple.xml diff --git a/android/app/src/main/res/drawable/ic_kakao_login.png b/android/app/src/main/res/drawable/ic_kakao_login.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c1856129a03c5e5812854c7b7a1a6134f0f5c0 GIT binary patch literal 7213 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/ic_logo_purple.xml b/android/app/src/main/res/drawable/ic_logo_purple.xml new file mode 100644 index 000000000..a7e2a6f47 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_logo_purple.xml @@ -0,0 +1,46 @@ + + + + + + + + + + From 3f08cfcefc39c1550d1af573e7bf1351887b3c83 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:34:49 +0900 Subject: [PATCH 02/32] =?UTF-8?q?design:=20LoginActivty=EC=97=90=20?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20string=20source=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/res/values/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 336b7f508..113d128be 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -90,4 +90,7 @@ 힌트가 %d개 남았어요 힌트 받기 취소 하기 + + + NAAGA From 1697875931fbc6507cf5f0c69404ee946a99b6c9 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:38:54 +0900 Subject: [PATCH 03/32] =?UTF-8?q?feat:=20=EC=86=8C=EC=85=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=EC=9D=84=20=EC=9C=84=ED=95=9C=20gradle=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 3 +++ android/settings.gradle | 3 +++ 2 files changed, 6 insertions(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 1cd3da6d9..1faf7adfb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -94,4 +94,7 @@ dependencies { implementation(platform('com.google.firebase:firebase-bom:32.2.0')) implementation "com.google.firebase:firebase-analytics-ktx" implementation("com.google.firebase:firebase-crashlytics-ktx") + + // kakao Login + implementation "com.kakao.sdk:v2-user:2.15.0" } diff --git a/android/settings.gradle b/android/settings.gradle index 5a705cabd..05d0fff65 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -13,6 +13,9 @@ dependencyResolutionManagement { maven { url 'https://naver.jfrog.io/artifactory/maven/' } + maven { + url 'https://devrepo.kakao.com/nexus/content/groups/public/' + } } } rootProject.name = "Naaga" From bb066d310d94d9e2edc8ec75a72a59c2c94cd16e Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:46:58 +0900 Subject: [PATCH 04/32] =?UTF-8?q?feat:=20=EB=82=9C=EB=8F=85=ED=99=94=20?= =?UTF-8?q?=EC=8B=9C=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20SDK=EA=B0=80=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EA=B7=9C=EC=B9=99=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/proguard-rules.pro | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 481bb4348..0df424fe2 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -18,4 +18,7 @@ # If you keep the line number information, uncomment this to # hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +#-renamesourcefileattribute SourceFile + +-keep class com.kakao.sdk.**.model.* { ; } +-keep class * extends com.google.gson.TypeAdapter From d1f7ed0fb4a07a8855b5bd741f377a52e5104c17 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:47:39 +0900 Subject: [PATCH 05/32] =?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=9D=B8=20API=20key=20=EC=88=A8=EA=B9=80=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 1faf7adfb..50bc0b884 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -23,6 +23,8 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField "String", "BASE_URL", properties["BASE_URL"] + buildConfigField "String", "KAKAO_NATIVE_APP_KEY", properties["KAKAO_NATIVE_APP_KEY"] + resValue "string", "kakao_redirection_scheme", properties["kakao_redirection_scheme"] } buildTypes { From bce127f06bc9d17faea4f77bcb49db53a2697a75 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:48:19 +0900 Subject: [PATCH 06/32] =?UTF-8?q?feat:=20=EC=9D=B8=ED=84=B0=EB=84=B7=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EA=B6=8C=ED=95=9C=20=ED=97=88=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 1b4bed9c4..e8e309938 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + Date: Tue, 8 Aug 2023 16:50:11 +0900 Subject: [PATCH 07/32] =?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=9D=B8=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20Redirect=20URI=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e8e309938..1b90f7ceb 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -57,6 +57,20 @@ + + + + + + + + + + From a9e266cae720678dc7384c90eb3fe3ecf0e86379 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:55:41 +0900 Subject: [PATCH 08/32] =?UTF-8?q?feat:=20Kakao=20SDK=EB=A5=BC=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=ED=95=98=EB=8A=94=20application=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 1 + .../now/naaga/presentation/login/NaagaApplication.kt | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/presentation/login/NaagaApplication.kt diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 1b90f7ceb..991730709 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -12,6 +12,7 @@ Date: Tue, 8 Aug 2023 16:57:43 +0900 Subject: [PATCH 09/32] =?UTF-8?q?feat:=20Kakao=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20Util=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/now/naaga/util/UserApiClientExt.kt | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt diff --git a/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt b/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt new file mode 100644 index 000000000..853533f10 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt @@ -0,0 +1,44 @@ +package com.now.naaga.util + +import android.content.Context +import android.util.Log +import com.kakao.sdk.auth.model.OAuthToken +import com.kakao.sdk.common.model.ClientError +import com.kakao.sdk.common.model.ClientErrorCause +import com.kakao.sdk.user.UserApiClient + +private const val KAKAO_LOGIN_LOG_TAG = "kakao login" +private const val KAKAO_LOGIN_FAIL_MESSAGE = "카카오계정으로 로그인 실패" +private const val KAKAO_LOGIN_SUCCESS_MESSAGE = "카카오계정으로 로그인 성공" + +private fun getLoginCallback(inquiryNextAction: () -> Unit): (OAuthToken?, Throwable?) -> Unit { + val callback: (OAuthToken?, Throwable?) -> Unit = { token, error -> + if (error != null) { + Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_FAIL_MESSAGE + error) + } else if (token != null) { + Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_SUCCESS_MESSAGE + token.accessToken) + inquiryNextAction() + } + } + return callback +} + +fun loginWithKakao(context: Context, inquiryNextAction: () -> Unit) { + val callback = getLoginCallback(inquiryNextAction) + if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { + UserApiClient.instance.loginWithKakaoTalk(context) { token, error -> + if (error != null) { + Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_FAIL_MESSAGE + error) + if (error is ClientError && error.reason == ClientErrorCause.Cancelled) { + return@loginWithKakaoTalk + } + UserApiClient.instance.loginWithKakaoAccount(context, callback = callback) + } else if (token != null) { + Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_SUCCESS_MESSAGE + token.accessToken) + inquiryNextAction() + } + } + } else { + UserApiClient.instance.loginWithKakaoAccount(context, callback = callback) + } +} From fa973112e748ecf85b8bc6039d9f40ccc6e3999b Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 16:59:10 +0900 Subject: [PATCH 10/32] =?UTF-8?q?design:=20LoginActivity=20=EB=B7=B0=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 3 ++ .../naaga/presentation/login/LoginActivity.kt | 15 ++++++ .../src/main/res/layout/activity_login.xml | 48 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt create mode 100644 android/app/src/main/res/layout/activity_login.xml diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 991730709..90c0618c6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -58,6 +58,9 @@ + diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt new file mode 100644 index 000000000..5eaff7282 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -0,0 +1,15 @@ +package com.now.naaga.presentation.login + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.now.naaga.databinding.ActivityLoginBinding + +class LoginActivity : AppCompatActivity() { + private lateinit var binding: ActivityLoginBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityLoginBinding.inflate(layoutInflater) + setContentView(binding.root) + } +} diff --git a/android/app/src/main/res/layout/activity_login.xml b/android/app/src/main/res/layout/activity_login.xml new file mode 100644 index 000000000..22ae6cd47 --- /dev/null +++ b/android/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + From bd35baf8eea35b277cc25db86312dfcfab710703 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 17:01:54 +0900 Subject: [PATCH 11/32] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EA=B0=80=20=EC=A7=84=ED=96=89=20=EC=A4=91=EC=9D=B4=20?= =?UTF-8?q?=EC=95=84=EB=8B=90=20=EB=95=8C=20Splash=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/now/naaga/presentation/login/LoginActivity.kt | 8 ++++++++ .../com/now/naaga/presentation/splash/SplashActivity.kt | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index 5eaff7282..f5b6595db 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -1,5 +1,7 @@ package com.now.naaga.presentation.login +import android.content.Context +import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.now.naaga.databinding.ActivityLoginBinding @@ -12,4 +14,10 @@ class LoginActivity : AppCompatActivity() { binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) } + + companion object { + fun getIntent(context: Context): Intent { + return Intent(context, LoginActivity::class.java) + } + } } diff --git a/android/app/src/main/java/com/now/naaga/presentation/splash/SplashActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/splash/SplashActivity.kt index 7b0f67e41..7e34507f2 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/splash/SplashActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/splash/SplashActivity.kt @@ -11,6 +11,7 @@ import com.now.domain.model.AdventureStatus.IN_PROGRESS import com.now.domain.model.AdventureStatus.NONE import com.now.naaga.R import com.now.naaga.presentation.beginadventure.BeginAdventureActivity +import com.now.naaga.presentation.login.LoginActivity import com.now.naaga.presentation.onadventure.OnAdventureActivity class SplashActivity : AppCompatActivity() { @@ -44,8 +45,8 @@ class SplashActivity : AppCompatActivity() { OnAdventureActivity.getIntentWithAdventure(this, adventure) } } - DONE -> BeginAdventureActivity.getIntent(this) - NONE -> BeginAdventureActivity.getIntent(this) + DONE -> LoginActivity.getIntent(this) + NONE -> LoginActivity.getIntent(this) } startActivity(intent) finish() From 7e5926792482890b9f21644bf5c59dba85f05896 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 17:03:24 +0900 Subject: [PATCH 12/32] =?UTF-8?q?feat:=20=EC=83=81=ED=83=9C=EB=B0=94=20?= =?UTF-8?q?=EC=83=89=EC=83=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/now/naaga/presentation/login/LoginActivity.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index f5b6595db..d3782c9e6 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -4,6 +4,8 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowInsetsControllerCompat +import com.now.naaga.R import com.now.naaga.databinding.ActivityLoginBinding class LoginActivity : AppCompatActivity() { @@ -13,6 +15,14 @@ class LoginActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) + setStatusBar() + } + + private fun setStatusBar() { + window.apply { + statusBarColor = getColor(R.color.white) + WindowInsetsControllerCompat(this, this.decorView).isAppearanceLightStatusBars = true + } } companion object { From cff55079153c1a989907cbadee680fc72c5ed8f4 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 17:04:32 +0900 Subject: [PATCH 13/32] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../now/naaga/presentation/login/LoginActivity.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index d3782c9e6..cc8df332e 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -7,6 +7,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowInsetsControllerCompat import com.now.naaga.R import com.now.naaga.databinding.ActivityLoginBinding +import com.now.naaga.presentation.beginadventure.BeginAdventureActivity +import com.now.naaga.util.loginWithKakao class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding @@ -15,9 +17,16 @@ class LoginActivity : AppCompatActivity() { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) + setClickListeners() setStatusBar() } + private fun setClickListeners() { + binding.ivLoginKakao.setOnClickListener { + loginWithKakao(this) { navigateHome() } + } + } + private fun setStatusBar() { window.apply { statusBarColor = getColor(R.color.white) @@ -25,6 +34,11 @@ class LoginActivity : AppCompatActivity() { } } + private fun navigateHome() { + startActivity(BeginAdventureActivity.getIntent(this)) + finish() + } + companion object { fun getIntent(context: Context): Intent { return Intent(context, LoginActivity::class.java) From 460efe8891d7cd77cb052abcd356d1490194aed3 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 17:05:35 +0900 Subject: [PATCH 14/32] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EC=9D=98=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EA=B3=84=EC=A0=95=20?= =?UTF-8?q?=EB=8B=89=EB=84=A4=EC=9E=84=EC=9D=84=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=20=EB=B3=B4=EC=97=AC?= =?UTF-8?q?=EC=A3=BC=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/mypage/MyPageActivity.kt | 5 ++++- .../presentation/mypage/MyPageViewModel.kt | 22 +++++++++++++++++++ .../src/main/res/layout/activity_my_page.xml | 1 - 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageActivity.kt index 1c2096c81..ae8336d7c 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageActivity.kt @@ -56,6 +56,7 @@ class MyPageActivity : AppCompatActivity(), AnalyticsDelegate by DefaultAnalytic viewModel.fetchRank() viewModel.fetchStatistics() viewModel.fetchPlaces() + viewModel.fetchNickname() } private fun subscribe() { @@ -66,7 +67,9 @@ class MyPageActivity : AppCompatActivity(), AnalyticsDelegate by DefaultAnalytic val placesUiModel = places.map { it.toUiModel() } binding.customGridMypagePlaces.initContent(placesUiModel) } - + viewModel.nickname.observe(this) { nickname -> + binding.tvMypageNickname.text = nickname + } viewModel.errorMessage.observe(this) { errorMessage -> if (NaagaThrowable.ServerConnectFailure().message == errorMessage) { Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show() diff --git a/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageViewModel.kt b/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageViewModel.kt index 6235d7a2c..0f4c361f7 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageViewModel.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/mypage/MyPageViewModel.kt @@ -1,8 +1,10 @@ package com.now.naaga.presentation.mypage +import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import com.kakao.sdk.user.UserApiClient import com.now.domain.model.OrderType import com.now.domain.model.Place import com.now.domain.model.Rank @@ -30,6 +32,9 @@ class MyPageViewModel( private val _errorMessage = MutableLiveData() val errorMessage: LiveData = _errorMessage + private val _nickname = MutableLiveData() + val nickname: LiveData = _nickname + fun fetchRank() { rankRepository.getMyRank { result: Result -> result @@ -54,10 +59,27 @@ class MyPageViewModel( } } + fun fetchNickname() { + UserApiClient.instance.me { user, error -> + if (error != null) { + Log.d(KAKAO_USER_INFO_LOG_TAG, KAKAO_USER_INFO_FAIL_MESSAGE + error) + } else if (user != null) { + Log.d(KAKAO_USER_INFO_LOG_TAG, KAKAO_USER_INFO_SUCCESS_MESSAGE) + _nickname.value = user.kakaoAccount?.profile?.nickname.toString() + } + } + } + private fun setErrorMessage(throwable: Throwable) { when (throwable) { is NaagaThrowable.ServerConnectFailure -> _errorMessage.value = throwable.message } } + + companion object { + private const val KAKAO_USER_INFO_LOG_TAG = "kakao user" + private const val KAKAO_USER_INFO_FAIL_MESSAGE = "사용자 정보 요청 실패" + private const val KAKAO_USER_INFO_SUCCESS_MESSAGE = "사용자 정보 요청 성공" + } } diff --git a/android/app/src/main/res/layout/activity_my_page.xml b/android/app/src/main/res/layout/activity_my_page.xml index e33d66e3c..439751bdd 100644 --- a/android/app/src/main/res/layout/activity_my_page.xml +++ b/android/app/src/main/res/layout/activity_my_page.xml @@ -38,7 +38,6 @@ android:layout_marginStart="@dimen/space_default_large" android:fontFamily="@font/pretendard_bold" android:includeFontPadding="false" - android:text="@{viewModel.rank.player.nickname}" android:textColor="@color/white" android:textSize="52sp" android:maxLines="1" From 4816d668cc96f94f57d06bbac055c88d8275a913 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 20:31:35 +0900 Subject: [PATCH 15/32] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=EC=99=80=20?= =?UTF-8?q?=ED=86=B5=EC=8B=A0=ED=95=B4=20=ED=86=A0=ED=81=B0=EC=9D=84=20?= =?UTF-8?q?=EC=96=BB=EC=96=B4=EC=98=AC=20=EB=95=8C=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20Dto,=20Domain=20=EA=B0=9D=EC=B2=B4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/now/naaga/data/remote/dto/NaagaAuthDto.kt | 9 +++++++++ .../com/now/naaga/data/remote/dto/PlatformAuthDto.kt | 9 +++++++++ .../java/com/now/domain/model/AuthPlatformType.kt | 12 ++++++++++++ .../src/main/java/com/now/domain/model/NaagaAuth.kt | 6 ++++++ .../main/java/com/now/domain/model/PlatformAuth.kt | 6 ++++++ 5 files changed, 42 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/data/remote/dto/NaagaAuthDto.kt create mode 100644 android/app/src/main/java/com/now/naaga/data/remote/dto/PlatformAuthDto.kt create mode 100644 android/domain/src/main/java/com/now/domain/model/AuthPlatformType.kt create mode 100644 android/domain/src/main/java/com/now/domain/model/NaagaAuth.kt create mode 100644 android/domain/src/main/java/com/now/domain/model/PlatformAuth.kt diff --git a/android/app/src/main/java/com/now/naaga/data/remote/dto/NaagaAuthDto.kt b/android/app/src/main/java/com/now/naaga/data/remote/dto/NaagaAuthDto.kt new file mode 100644 index 000000000..075e0ba65 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/remote/dto/NaagaAuthDto.kt @@ -0,0 +1,9 @@ +package com.now.naaga.data.remote.dto + +import kotlinx.serialization.Serializable + +@Serializable +data class NaagaAuthDto( + val accessToken: String, + val refreshToken: String?, +) diff --git a/android/app/src/main/java/com/now/naaga/data/remote/dto/PlatformAuthDto.kt b/android/app/src/main/java/com/now/naaga/data/remote/dto/PlatformAuthDto.kt new file mode 100644 index 000000000..ad02a21a9 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/remote/dto/PlatformAuthDto.kt @@ -0,0 +1,9 @@ +package com.now.naaga.data.remote.dto + +import kotlinx.serialization.Serializable + +@Serializable +data class PlatformAuthDto( + val token: String, + val type: String, +) diff --git a/android/domain/src/main/java/com/now/domain/model/AuthPlatformType.kt b/android/domain/src/main/java/com/now/domain/model/AuthPlatformType.kt new file mode 100644 index 000000000..03c12656b --- /dev/null +++ b/android/domain/src/main/java/com/now/domain/model/AuthPlatformType.kt @@ -0,0 +1,12 @@ +package com.now.domain.model + +enum class AuthPlatformType { + KAKAO, + NONE, ; + + companion object { + fun findByName(text: String): AuthPlatformType { + return AuthPlatformType.values().find { it.name == text } ?: NONE + } + } +} diff --git a/android/domain/src/main/java/com/now/domain/model/NaagaAuth.kt b/android/domain/src/main/java/com/now/domain/model/NaagaAuth.kt new file mode 100644 index 000000000..e40b09389 --- /dev/null +++ b/android/domain/src/main/java/com/now/domain/model/NaagaAuth.kt @@ -0,0 +1,6 @@ +package com.now.domain.model + +data class NaagaAuth( + val accessToken: String, + val refreshToken: String?, +) diff --git a/android/domain/src/main/java/com/now/domain/model/PlatformAuth.kt b/android/domain/src/main/java/com/now/domain/model/PlatformAuth.kt new file mode 100644 index 000000000..985af91bf --- /dev/null +++ b/android/domain/src/main/java/com/now/domain/model/PlatformAuth.kt @@ -0,0 +1,6 @@ +package com.now.domain.model + +data class PlatformAuth( + val token: String, + val type: AuthPlatformType, +) From 5c2443936f6c20589e00a816dd20a9c5da68dd05 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 20:32:17 +0900 Subject: [PATCH 16/32] =?UTF-8?q?feat:=20Dto,=20Domain=20=EB=B3=80?= =?UTF-8?q?=ED=99=98=20mapper=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/now/naaga/data/mapper/AuthMapper.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt diff --git a/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt b/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt new file mode 100644 index 000000000..3c2f2a210 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt @@ -0,0 +1,24 @@ +package com.now.naaga.data.mapper + +import com.now.domain.model.PlatformAuth +import com.now.domain.model.AuthPlatformType +import com.now.domain.model.NaagaAuth +import com.now.naaga.data.remote.dto.NaagaAuthDto +import com.now.naaga.data.remote.dto.PlatformAuthDto + +fun PlatformAuthDto.toDomain(): PlatformAuth { + return PlatformAuth(token, AuthPlatformType.findByName(type)) +} + +fun PlatformAuth.toDto(): PlatformAuthDto { + return PlatformAuthDto(token, type.name) +} + +fun NaagaAuthDto.toDomain(): NaagaAuth { + return NaagaAuth(accessToken, refreshToken) +} + +fun NaagaAuth.toDto(): NaagaAuthDto { + return NaagaAuthDto(accessToken, refreshToken) +} + From a40f6908c2cc4dfb6f514900ed04ad2a6bf71945 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 20:38:26 +0900 Subject: [PATCH 17/32] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=EC=99=80=20?= =?UTF-8?q?=ED=86=B5=EC=8B=A0=ED=95=98=EC=97=AC=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=9D=B8=EC=A6=9D=EC=9D=84=20=ED=95=B4=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20retrofit=20service=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../now/naaga/data/remote/retrofit/ServicePool.kt | 2 ++ .../data/remote/retrofit/service/AuthService.kt | 14 ++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/data/remote/retrofit/service/AuthService.kt diff --git a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/ServicePool.kt b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/ServicePool.kt index 9a7200610..74ca786a3 100644 --- a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/ServicePool.kt +++ b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/ServicePool.kt @@ -2,6 +2,7 @@ package com.now.naaga.data.remote.retrofit import com.now.naaga.data.remote.retrofit.RetrofitFactory.retrofit import com.now.naaga.data.remote.retrofit.service.AdventureService +import com.now.naaga.data.remote.retrofit.service.AuthService import com.now.naaga.data.remote.retrofit.service.PlaceService import com.now.naaga.data.remote.retrofit.service.RankService import com.now.naaga.data.remote.retrofit.service.StatisticsService @@ -11,4 +12,5 @@ object ServicePool { val rankService = retrofit.create(RankService::class.java) val statisticsService = retrofit.create(StatisticsService::class.java) val placeService = retrofit.create(PlaceService::class.java) + val authService = retrofit.create(AuthService::class.java) } diff --git a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/service/AuthService.kt b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/service/AuthService.kt new file mode 100644 index 000000000..6f7e2c516 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/service/AuthService.kt @@ -0,0 +1,14 @@ +package com.now.naaga.data.remote.retrofit.service + +import com.now.naaga.data.remote.dto.NaagaAuthDto +import com.now.naaga.data.remote.dto.PlatformAuthDto +import retrofit2.Call +import retrofit2.http.Body +import retrofit2.http.POST + +interface AuthService { + @POST("/auth") + fun requestToken( + @Body platformAuthDto: PlatformAuthDto, + ): Call +} From e7f8eaa8c2745aad11c387535c9591e62400edce Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 20:40:25 +0900 Subject: [PATCH 18/32] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=EC=9D=84=20=ED=86=B5=ED=95=B4=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=EC=9D=84=20=EA=B0=80=EC=A0=B8=EC=99=80=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20=EB=A0=88=ED=8F=AC=EC=A7=80=ED=86=A0=EB=A6=AC=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/repository/DefaultAuthRepository.kt | 22 +++++++++++++++++++ .../now/domain/repository/AuthRepository.kt | 11 ++++++++++ 2 files changed, 33 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/data/repository/DefaultAuthRepository.kt create mode 100644 android/domain/src/main/java/com/now/domain/repository/AuthRepository.kt diff --git a/android/app/src/main/java/com/now/naaga/data/repository/DefaultAuthRepository.kt b/android/app/src/main/java/com/now/naaga/data/repository/DefaultAuthRepository.kt new file mode 100644 index 000000000..9e0352710 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/repository/DefaultAuthRepository.kt @@ -0,0 +1,22 @@ +package com.now.naaga.data.repository + +import com.now.domain.model.NaagaAuth +import com.now.domain.model.PlatformAuth +import com.now.domain.repository.AuthRepository +import com.now.naaga.data.mapper.toDomain +import com.now.naaga.data.mapper.toDto +import com.now.naaga.data.remote.retrofit.ServicePool +import com.now.naaga.data.remote.retrofit.fetchNaagaResponse + +class DefaultAuthRepository : AuthRepository { + override fun getToken( + platformAuth: PlatformAuth, + callback: (Result) -> Unit, + ) { + val call = ServicePool.authService.requestToken(platformAuth.toDto()) + call.fetchNaagaResponse( + onSuccess = { callback(Result.success(it.toDomain())) }, + onFailure = { callback(Result.failure(it)) }, + ) + } +} diff --git a/android/domain/src/main/java/com/now/domain/repository/AuthRepository.kt b/android/domain/src/main/java/com/now/domain/repository/AuthRepository.kt new file mode 100644 index 000000000..92281b958 --- /dev/null +++ b/android/domain/src/main/java/com/now/domain/repository/AuthRepository.kt @@ -0,0 +1,11 @@ +package com.now.domain.repository + +import com.now.domain.model.NaagaAuth +import com.now.domain.model.PlatformAuth + +interface AuthRepository { + fun getToken( + platformAuth: PlatformAuth, + callback: (Result) -> Unit, + ) +} From faf9967931491402e4bd8874773ea5b64d9abcde Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 22:31:07 +0900 Subject: [PATCH 19/32] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=EC=97=90?= =?UTF-8?q?=EA=B2=8C=20=EB=B0=9B=EC=9D=80=20=ED=86=A0=ED=81=B0=EC=9D=84=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=ED=95=98=EB=8A=94=20SharedPreference=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../now/naaga/data/local/AuthPreference.kt | 6 +++++ .../naaga/data/local/KakaoAuthPreference.kt | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt create mode 100644 android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt diff --git a/android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt new file mode 100644 index 000000000..7debd08ac --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt @@ -0,0 +1,6 @@ +package com.now.naaga.data.local + +interface AuthPreference { + fun getAccessToken(): String? + fun setAccessToken(newToken: String) +} diff --git a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt new file mode 100644 index 000000000..81fb95a6f --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt @@ -0,0 +1,22 @@ +package com.now.naaga.data.local + +import android.content.Context +import android.content.SharedPreferences + +class KakaoAuthPreference(context: Context): AuthPreference { + private val pref: SharedPreferences = + context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE) + + override fun getAccessToken(): String? { + return pref.getString(ACCESS_TOKEN_KEY, "") + } + + override fun setAccessToken(newToken: String) { + pref.edit().putString(ACCESS_TOKEN_KEY, newToken).apply() + } + + companion object { + private const val PREFERENCE_NAME = "ACCESS_TOKEN_" + private const val ACCESS_TOKEN_KEY = "access_token_key" + } +} From 9bbc81c3156221ef5ff7d332862e00836b985ab5 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Tue, 8 Aug 2023 22:31:50 +0900 Subject: [PATCH 20/32] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=EC=97=90?= =?UTF-8?q?=EA=B2=8C=20=ED=86=A0=ED=81=B0=EC=9D=84=20=EB=B0=9B=EC=95=84?= =?UTF-8?q?=EC=99=80=20=EB=A1=9C=EC=BB=AC=20=EC=A0=80=EC=9E=A5=EC=86=8C?= =?UTF-8?q?=EC=97=90=20=EC=A0=80=EC=9E=A5=ED=95=98=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../naaga/presentation/login/LoginActivity.kt | 14 ++++++++++ .../presentation/login/LoginViewModel.kt | 27 +++++++++++++++++++ .../login/LoginViewModelFactory.kt | 20 ++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt create mode 100644 android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index cc8df332e..4b58459ac 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -5,20 +5,34 @@ import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowInsetsControllerCompat +import androidx.lifecycle.ViewModelProvider import com.now.naaga.R +import com.now.naaga.data.local.KakaoAuthPreference +import com.now.naaga.data.repository.DefaultAuthRepository import com.now.naaga.databinding.ActivityLoginBinding import com.now.naaga.presentation.beginadventure.BeginAdventureActivity import com.now.naaga.util.loginWithKakao class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding + private lateinit var viewModel: LoginViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) + binding.lifecycleOwner = this + initViewModel() setClickListeners() setStatusBar() + viewModel.fetchToken() + } + + private fun initViewModel() { + val authRepository = DefaultAuthRepository() + val authPreference = KakaoAuthPreference(this) + val factory = LoginViewModelFactory(authRepository, authPreference) + viewModel = ViewModelProvider(this, factory)[LoginViewModel::class.java] } private fun setClickListeners() { diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt new file mode 100644 index 000000000..f6fa2020a --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt @@ -0,0 +1,27 @@ +package com.now.naaga.presentation.login + +import androidx.lifecycle.ViewModel +import com.kakao.sdk.auth.TokenManagerProvider +import com.now.domain.model.AuthPlatformType.KAKAO +import com.now.domain.model.PlatformAuth +import com.now.domain.repository.AuthRepository +import com.now.naaga.data.local.AuthPreference + +class LoginViewModel( + private val authRepository: AuthRepository, + private val authPreference: AuthPreference, +) : ViewModel() { + fun fetchToken() { + val token = TokenManagerProvider.instance.manager.getToken()?.accessToken + token?.let { PlatformAuth(it, KAKAO) }?.let { platformAuth -> + authRepository.getToken( + platformAuth, + callback = { result -> + result + .onSuccess { authPreference.setAccessToken(it.accessToken) } + .onFailure { } + }, + ) + } + } +} diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt new file mode 100644 index 000000000..af98c30b6 --- /dev/null +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt @@ -0,0 +1,20 @@ +package com.now.naaga.presentation.login + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.now.domain.repository.AuthRepository +import com.now.naaga.data.local.AuthPreference + +class LoginViewModelFactory( + private val authRepository: AuthRepository, + private val authPreference: AuthPreference, +) : + ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + if (modelClass.isAssignableFrom(LoginViewModel::class.java)) { + return LoginViewModel(authRepository, authPreference) as T + } else { + throw IllegalArgumentException() + } + } +} From a146f29eafa98e89577a6709c24e262963684c40 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 14:44:54 +0900 Subject: [PATCH 21/32] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20API?= =?UTF-8?q?=20KEY=20=EA=B0=90=EC=B6=94=EA=B8=B0=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20yml=20=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index 437fbcf82..d3b6ae91d 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -41,6 +41,18 @@ jobs: run: | echo BASE_URL=\"$API_KEY\" > ./local.properties + - name: Add Local Properties2 + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + run: | + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Local Properties3 + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + - name: Run ktlint run: ./gradlew ktlintCheck @@ -77,6 +89,18 @@ jobs: run: | echo BASE_URL=\"$API_KEY\" > ./local.properties + - name: Add Local Properties2 + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + run: | + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Local Properties3 + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json @@ -116,6 +140,18 @@ jobs: run: | echo BASE_URL=\"$API_KEY\" > ./local.properties + - name: Add Local Properties2 + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + run: | + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Local Properties3 + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json From 6bc2bc0ba266fe4210f14aff79c5d7a41ddc3b12 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 14:58:23 +0900 Subject: [PATCH 22/32] =?UTF-8?q?fix:=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 60 ++++++++++---------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index d3b6ae91d..0a45ba9f2 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -37,21 +37,13 @@ jobs: - name: Add Local Properties env: - API_KEY: ${{ secrets.BASE_URL }} + BASE_URL: ${{ secrets.BASE_URL }} + KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties2 - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties3 - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} - run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$BASE_URL\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties - name: Run ktlint run: ./gradlew ktlintCheck @@ -85,21 +77,13 @@ jobs: - name: Add Local Properties env: - API_KEY: ${{ secrets.BASE_URL }} - run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties2 - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + BASE_URL: ${{ secrets.BASE_URL }} + KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties3 - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} - run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$BASE_URL\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json @@ -136,21 +120,13 @@ jobs: - name: Add Local Properties env: - API_KEY: ${{ secrets.BASE_URL }} - run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties2 - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties - - - name: Add Local Properties3 - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + BASE_URL: ${{ secrets.BASE_URL }} + KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$BASE_URL\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json From 23a9bfcc93de87b5e146c76c466aa3220062a815 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 15:06:37 +0900 Subject: [PATCH 23/32] =?UTF-8?q?fix:=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 57 +++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index 0a45ba9f2..da7facff1 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -37,13 +37,22 @@ jobs: - name: Add Local Properties env: - BASE_URL: ${{ secrets.BASE_URL }} - KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + API_KEY: ${{ secrets.BASE_URL }} + run: | + echo BASE_URL=\"$API_KEY\" > ./local.properties + + - name: Add Native Key In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo BASE_URL=\"$BASE_URL\" > ./local.properties - echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties - echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Redirection scheme In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties - name: Run ktlint run: ./gradlew ktlintCheck @@ -77,13 +86,22 @@ jobs: - name: Add Local Properties env: - BASE_URL: ${{ secrets.BASE_URL }} - KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + API_KEY: ${{ secrets.BASE_URL }} + run: | + echo BASE_URL=\"$API_KEY\" > ./local.properties + + - name: Add Native Key In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo BASE_URL=\"$BASE_URL\" > ./local.properties - echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties - echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Redirection scheme In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json @@ -120,13 +138,22 @@ jobs: - name: Add Local Properties env: - BASE_URL: ${{ secrets.BASE_URL }} - KAKAO_NATIVE_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + API_KEY: ${{ secrets.BASE_URL }} + run: | + echo BASE_URL=\"$API_KEY\" > ./local.properties + + - name: Add Native Key In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo BASE_URL=\"$BASE_URL\" > ./local.properties - echo KAKAO_NATIVE_APP_KEY=\"$KAKAO_NATIVE_APP_KEY\" > ./local.properties - echo kakao_redirection_scheme=\"$KAKAO_REDIRECTION_SCHEME\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + + - name: Add Redirection scheme In Local Properties + env: + API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} + run: | + echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json From 407b3b561d8bbfc1e94b984a5508532ed63e229b Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 15:09:57 +0900 Subject: [PATCH 24/32] =?UTF-8?q?fix:=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index da7facff1..9bfeaa58f 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -44,7 +44,6 @@ jobs: - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties @@ -93,7 +92,6 @@ jobs: - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties @@ -145,7 +143,6 @@ jobs: - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - KAKAO_REDIRECTION_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties From 2ab0d186178d7765b9308320b0be6da0e5b4113a Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 15:17:38 +0900 Subject: [PATCH 25/32] =?UTF-8?q?fix:=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index 9bfeaa58f..b442a57ce 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -39,19 +39,19 @@ jobs: env: API_KEY: ${{ secrets.BASE_URL }} run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$API_KEY\" >> ./local.properties - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - name: Add Redirection scheme In Local Properties env: API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties - name: Run ktlint run: ./gradlew ktlintCheck @@ -87,19 +87,19 @@ jobs: env: API_KEY: ${{ secrets.BASE_URL }} run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$API_KEY\" >> ./local.properties - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - name: Add Redirection scheme In Local Properties env: API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json @@ -138,19 +138,19 @@ jobs: env: API_KEY: ${{ secrets.BASE_URL }} run: | - echo BASE_URL=\"$API_KEY\" > ./local.properties + echo BASE_URL=\"$API_KEY\" >> ./local.properties - name: Add Native Key In Local Properties env: API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" > ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - name: Add Redirection scheme In Local Properties env: API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | - echo kakao_redirection_scheme=\"$API_KEY\" > ./local.properties + echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json From b19b1f75471efc98bda8c5bf9fdc7cd3d6fbeb8c Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 15:21:04 +0900 Subject: [PATCH 26/32] =?UTF-8?q?refactor:=20ktlint=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/now/naaga/data/local/KakaoAuthPreference.kt | 2 +- .../app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt index 81fb95a6f..3a3880a29 100644 --- a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt +++ b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt @@ -3,7 +3,7 @@ package com.now.naaga.data.local import android.content.Context import android.content.SharedPreferences -class KakaoAuthPreference(context: Context): AuthPreference { +class KakaoAuthPreference(context: Context) : AuthPreference { private val pref: SharedPreferences = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE) diff --git a/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt b/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt index 3c2f2a210..b14f9acf6 100644 --- a/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt +++ b/android/app/src/main/java/com/now/naaga/data/mapper/AuthMapper.kt @@ -1,8 +1,8 @@ package com.now.naaga.data.mapper -import com.now.domain.model.PlatformAuth import com.now.domain.model.AuthPlatformType import com.now.domain.model.NaagaAuth +import com.now.domain.model.PlatformAuth import com.now.naaga.data.remote.dto.NaagaAuthDto import com.now.naaga.data.remote.dto.PlatformAuthDto @@ -21,4 +21,3 @@ fun NaagaAuthDto.toDomain(): NaagaAuth { fun NaagaAuth.toDto(): NaagaAuthDto { return NaagaAuthDto(accessToken, refreshToken) } - From 5cc22243cb36a4a3a84d97408b5f1305d8deeb36 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 15:32:45 +0900 Subject: [PATCH 27/32] =?UTF-8?q?refactor:=20yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_ci.yml | 48 ++++++++------------------------ 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index b442a57ce..3a6961504 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -38,20 +38,12 @@ jobs: - name: Add Local Properties env: API_KEY: ${{ secrets.BASE_URL }} + KAKAO_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo BASE_URL=\"$API_KEY\" >> ./local.properties - - - name: Add Native Key In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - - - name: Add Redirection scheme In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} - run: | - echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"KAKAO_APP_KEY\" >> ./local.properties + echo kakao_redirection_scheme=\"KAKAO_SCHEME\" >> ./local.properties - name: Run ktlint run: ./gradlew ktlintCheck @@ -86,20 +78,12 @@ jobs: - name: Add Local Properties env: API_KEY: ${{ secrets.BASE_URL }} + KAKAO_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo BASE_URL=\"$API_KEY\" >> ./local.properties - - - name: Add Native Key In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - - - name: Add Redirection scheme In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} - run: | - echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"KAKAO_APP_KEY\" >> ./local.properties + echo kakao_redirection_scheme=\"KAKAO_SCHEME\" >> ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json @@ -137,20 +121,12 @@ jobs: - name: Add Local Properties env: API_KEY: ${{ secrets.BASE_URL }} + KAKAO_APP_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} + KAKAO_SCHEME: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} run: | echo BASE_URL=\"$API_KEY\" >> ./local.properties - - - name: Add Native Key In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_NATIVE_APP_KEY }} - run: | - echo KAKAO_NATIVE_APP_KEY=\"$API_KEY\" >> ./local.properties - - - name: Add Redirection scheme In Local Properties - env: - API_KEY: ${{ secrets.KAKAO_REDIRECTION_SCHEME }} - run: | - echo kakao_redirection_scheme=\"$API_KEY\" >> ./local.properties + echo KAKAO_NATIVE_APP_KEY=\"KAKAO_APP_KEY\" >> ./local.properties + echo kakao_redirection_scheme=\"KAKAO_SCHEME\" >> ./local.properties - name: Add Google Service Json file run: echo '${{ secrets.GOOGLE_SERVICES_JSON_FILE }}' > ./app/google-services.json From 18ba7c5a2181e87daca34fb9d95f1ba4b6d5a2f2 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 16:15:59 +0900 Subject: [PATCH 28/32] =?UTF-8?q?refactor:=20=EC=95=94=ED=98=B8=ED=99=94?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC=20=EB=90=98=EB=8A=94=20EncryptedSharedPre?= =?UTF-8?q?ferences=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 3 +++ .../naaga/data/local/KakaoAuthPreference.kt | 23 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 50bc0b884..3beb62fc2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -99,4 +99,7 @@ dependencies { // kakao Login implementation "com.kakao.sdk:v2-user:2.15.0" + + // EncryptedSharedPreferences + implementation "androidx.security:security-crypto-ktx:1.1.0-alpha03" } diff --git a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt index 3a3880a29..f3b407245 100644 --- a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt +++ b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt @@ -1,14 +1,25 @@ package com.now.naaga.data.local import android.content.Context -import android.content.SharedPreferences +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKey class KakaoAuthPreference(context: Context) : AuthPreference { - private val pref: SharedPreferences = - context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE) + private val masterKey = MasterKey.Builder(context) + .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) + .build() - override fun getAccessToken(): String? { - return pref.getString(ACCESS_TOKEN_KEY, "") + private val pref = + EncryptedSharedPreferences.create( + context, + SECRET_SHARED_PREFS_FILE_NAME, + masterKey, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM, + ) + + override fun getAccessToken(): String { + return pref.getString(ACCESS_TOKEN_KEY, "") ?: "" } override fun setAccessToken(newToken: String) { @@ -16,7 +27,7 @@ class KakaoAuthPreference(context: Context) : AuthPreference { } companion object { - private const val PREFERENCE_NAME = "ACCESS_TOKEN_" + private const val SECRET_SHARED_PREFS_FILE_NAME = "secret_shared_prefs" private const val ACCESS_TOKEN_KEY = "access_token_key" } } From bf96baa6b24e617e730f76d6035ffd3cc83df2a3 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 16:44:19 +0900 Subject: [PATCH 29/32] =?UTF-8?q?feat:=20retrofit=20Header=EC=97=90=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=EC=97=90=EC=84=9C=20=EB=B0=9B=EC=95=84?= =?UTF-8?q?=EC=98=A8=20=ED=86=A0=ED=81=B0=20=EB=84=A3=EC=96=B4=EC=A3=BC?= =?UTF-8?q?=EA=B8=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../naaga/data/remote/retrofit/RetrofitFactory.kt | 6 ++++-- .../now/naaga/presentation/login/NaagaApplication.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt index 6f1d29563..5dc311132 100644 --- a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt +++ b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt @@ -2,6 +2,8 @@ package com.now.naaga.data.remote.retrofit import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import com.now.naaga.BuildConfig +import com.now.naaga.data.local.KakaoAuthPreference +import com.now.naaga.presentation.login.NaagaApplication.Companion.getContext import kotlinx.serialization.json.Json import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType @@ -9,7 +11,6 @@ import okhttp3.OkHttpClient import retrofit2.Retrofit object RetrofitFactory { - private const val BASIC_USER_TOKEN = "Basic MTExQHdvb3dhLmNvbToxMTEx" private const val BASE_URL = BuildConfig.BASE_URL val retrofit: Retrofit = Retrofit.Builder() @@ -19,9 +20,10 @@ object RetrofitFactory { .build() private fun createInterceptor(): Interceptor = Interceptor { chain -> + val token = KakaoAuthPreference(getContext()).getAccessToken() with(chain) { val newRequest = request().newBuilder() - .addHeader("Authorization", BASIC_USER_TOKEN) + .addHeader("Authorization", token) .addHeader("Content-Type", "application/json") .build() proceed(newRequest) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/NaagaApplication.kt b/android/app/src/main/java/com/now/naaga/presentation/login/NaagaApplication.kt index 04f81599e..fa632e8c4 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/NaagaApplication.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/NaagaApplication.kt @@ -1,12 +1,24 @@ package com.now.naaga.presentation.login import android.app.Application +import android.content.Context import com.kakao.sdk.common.KakaoSdk import com.now.naaga.BuildConfig class NaagaApplication : Application() { + init { + instance = this + } + override fun onCreate() { super.onCreate() KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_APP_KEY) } + + companion object { + private var instance: NaagaApplication? = null + fun getContext(): Context { + return instance?.applicationContext ?: throw IllegalStateException() + } + } } From 2d11ffe8a695317c2d26ad83d3d1e30d7d32267d Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 17:07:22 +0900 Subject: [PATCH 30/32] =?UTF-8?q?refactor:=20=EC=B9=B4=EC=B9=B4=EC=98=A4?= =?UTF-8?q?=20=ED=86=A0=ED=81=B0=EC=9D=84=20=ED=95=A8=EC=88=98=20=EC=9D=B8?= =?UTF-8?q?=EC=9E=90=EB=A1=9C=20=EB=B0=9B=EC=95=84=EC=98=A4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../naaga/presentation/login/LoginActivity.kt | 7 +++++- .../presentation/login/LoginViewModel.kt | 22 ++++++++----------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index 4b58459ac..5bf376661 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowInsetsControllerCompat import androidx.lifecycle.ViewModelProvider +import com.kakao.sdk.auth.TokenManagerProvider import com.now.naaga.R import com.now.naaga.data.local.KakaoAuthPreference import com.now.naaga.data.repository.DefaultAuthRepository @@ -25,7 +26,7 @@ class LoginActivity : AppCompatActivity() { initViewModel() setClickListeners() setStatusBar() - viewModel.fetchToken() + getToken()?.let { viewModel.fetchToken(it) } } private fun initViewModel() { @@ -35,6 +36,10 @@ class LoginActivity : AppCompatActivity() { viewModel = ViewModelProvider(this, factory)[LoginViewModel::class.java] } + private fun getToken(): String? { + return TokenManagerProvider.instance.manager.getToken()?.accessToken + } + private fun setClickListeners() { binding.ivLoginKakao.setOnClickListener { loginWithKakao(this) { navigateHome() } diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt index f6fa2020a..790dfb172 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt @@ -1,7 +1,6 @@ package com.now.naaga.presentation.login import androidx.lifecycle.ViewModel -import com.kakao.sdk.auth.TokenManagerProvider import com.now.domain.model.AuthPlatformType.KAKAO import com.now.domain.model.PlatformAuth import com.now.domain.repository.AuthRepository @@ -11,17 +10,14 @@ class LoginViewModel( private val authRepository: AuthRepository, private val authPreference: AuthPreference, ) : ViewModel() { - fun fetchToken() { - val token = TokenManagerProvider.instance.manager.getToken()?.accessToken - token?.let { PlatformAuth(it, KAKAO) }?.let { platformAuth -> - authRepository.getToken( - platformAuth, - callback = { result -> - result - .onSuccess { authPreference.setAccessToken(it.accessToken) } - .onFailure { } - }, - ) - } + fun fetchToken(token: String) { + authRepository.getToken( + PlatformAuth(token, KAKAO), + callback = { result -> + result + .onSuccess { authPreference.setAccessToken(it.accessToken) } + .onFailure { } + }, + ) } } From 73a59ae969e7d9213f4b817314eb1feef2aa0d3b Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 17:34:35 +0900 Subject: [PATCH 31/32] =?UTF-8?q?rename:=20preference=EA=B0=80=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EB=90=9C=20=ED=8C=8C=EC=9D=BC=EB=AA=85=EC=9D=84=20dat?= =?UTF-8?q?asource=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/local/{AuthPreference.kt => AuthDataSource.kt} | 2 +- .../{KakaoAuthPreference.kt => KakaoAuthDataSource.kt} | 2 +- .../com/now/naaga/data/remote/retrofit/RetrofitFactory.kt | 4 ++-- .../java/com/now/naaga/presentation/login/LoginActivity.kt | 4 ++-- .../java/com/now/naaga/presentation/login/LoginViewModel.kt | 6 +++--- .../now/naaga/presentation/login/LoginViewModelFactory.kt | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) rename android/app/src/main/java/com/now/naaga/data/local/{AuthPreference.kt => AuthDataSource.kt} (80%) rename android/app/src/main/java/com/now/naaga/data/local/{KakaoAuthPreference.kt => KakaoAuthDataSource.kt} (94%) diff --git a/android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/AuthDataSource.kt similarity index 80% rename from android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt rename to android/app/src/main/java/com/now/naaga/data/local/AuthDataSource.kt index 7debd08ac..cde90aecc 100644 --- a/android/app/src/main/java/com/now/naaga/data/local/AuthPreference.kt +++ b/android/app/src/main/java/com/now/naaga/data/local/AuthDataSource.kt @@ -1,6 +1,6 @@ package com.now.naaga.data.local -interface AuthPreference { +interface AuthDataSource { fun getAccessToken(): String? fun setAccessToken(newToken: String) } diff --git a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthDataSource.kt similarity index 94% rename from android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt rename to android/app/src/main/java/com/now/naaga/data/local/KakaoAuthDataSource.kt index f3b407245..fd7d15648 100644 --- a/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthPreference.kt +++ b/android/app/src/main/java/com/now/naaga/data/local/KakaoAuthDataSource.kt @@ -4,7 +4,7 @@ import android.content.Context import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKey -class KakaoAuthPreference(context: Context) : AuthPreference { +class KakaoAuthDataSource(context: Context) : AuthDataSource { private val masterKey = MasterKey.Builder(context) .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) .build() diff --git a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt index 5dc311132..d6ca230de 100644 --- a/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt +++ b/android/app/src/main/java/com/now/naaga/data/remote/retrofit/RetrofitFactory.kt @@ -2,7 +2,7 @@ package com.now.naaga.data.remote.retrofit import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import com.now.naaga.BuildConfig -import com.now.naaga.data.local.KakaoAuthPreference +import com.now.naaga.data.local.KakaoAuthDataSource import com.now.naaga.presentation.login.NaagaApplication.Companion.getContext import kotlinx.serialization.json.Json import okhttp3.Interceptor @@ -20,7 +20,7 @@ object RetrofitFactory { .build() private fun createInterceptor(): Interceptor = Interceptor { chain -> - val token = KakaoAuthPreference(getContext()).getAccessToken() + val token = KakaoAuthDataSource(getContext()).getAccessToken() with(chain) { val newRequest = request().newBuilder() .addHeader("Authorization", token) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt index 5bf376661..8fb130b13 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginActivity.kt @@ -8,7 +8,7 @@ import androidx.core.view.WindowInsetsControllerCompat import androidx.lifecycle.ViewModelProvider import com.kakao.sdk.auth.TokenManagerProvider import com.now.naaga.R -import com.now.naaga.data.local.KakaoAuthPreference +import com.now.naaga.data.local.KakaoAuthDataSource import com.now.naaga.data.repository.DefaultAuthRepository import com.now.naaga.databinding.ActivityLoginBinding import com.now.naaga.presentation.beginadventure.BeginAdventureActivity @@ -31,7 +31,7 @@ class LoginActivity : AppCompatActivity() { private fun initViewModel() { val authRepository = DefaultAuthRepository() - val authPreference = KakaoAuthPreference(this) + val authPreference = KakaoAuthDataSource(this) val factory = LoginViewModelFactory(authRepository, authPreference) viewModel = ViewModelProvider(this, factory)[LoginViewModel::class.java] } diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt index 790dfb172..d530f7def 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModel.kt @@ -4,18 +4,18 @@ import androidx.lifecycle.ViewModel import com.now.domain.model.AuthPlatformType.KAKAO import com.now.domain.model.PlatformAuth import com.now.domain.repository.AuthRepository -import com.now.naaga.data.local.AuthPreference +import com.now.naaga.data.local.AuthDataSource class LoginViewModel( private val authRepository: AuthRepository, - private val authPreference: AuthPreference, + private val authDataSource: AuthDataSource, ) : ViewModel() { fun fetchToken(token: String) { authRepository.getToken( PlatformAuth(token, KAKAO), callback = { result -> result - .onSuccess { authPreference.setAccessToken(it.accessToken) } + .onSuccess { authDataSource.setAccessToken(it.accessToken) } .onFailure { } }, ) diff --git a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt index af98c30b6..108d322a0 100644 --- a/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt +++ b/android/app/src/main/java/com/now/naaga/presentation/login/LoginViewModelFactory.kt @@ -3,16 +3,16 @@ package com.now.naaga.presentation.login import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.now.domain.repository.AuthRepository -import com.now.naaga.data.local.AuthPreference +import com.now.naaga.data.local.AuthDataSource class LoginViewModelFactory( private val authRepository: AuthRepository, - private val authPreference: AuthPreference, + private val authDataSource: AuthDataSource, ) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { if (modelClass.isAssignableFrom(LoginViewModel::class.java)) { - return LoginViewModel(authRepository, authPreference) as T + return LoginViewModel(authRepository, authDataSource) as T } else { throw IllegalArgumentException() } From 82a5c97b504d64b2f1b4e339e7c28b067be64346 Mon Sep 17 00:00:00 2001 From: hyunji1203 Date: Wed, 9 Aug 2023 17:42:45 +0900 Subject: [PATCH 32/32] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=9D=B8=EC=9E=90=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/now/naaga/util/UserApiClientExt.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt b/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt index 853533f10..396359a66 100644 --- a/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt +++ b/android/app/src/main/java/com/now/naaga/util/UserApiClientExt.kt @@ -11,20 +11,20 @@ private const val KAKAO_LOGIN_LOG_TAG = "kakao login" private const val KAKAO_LOGIN_FAIL_MESSAGE = "카카오계정으로 로그인 실패" private const val KAKAO_LOGIN_SUCCESS_MESSAGE = "카카오계정으로 로그인 성공" -private fun getLoginCallback(inquiryNextAction: () -> Unit): (OAuthToken?, Throwable?) -> Unit { +private fun getLoginCallback(doNextAction: () -> Unit): (OAuthToken?, Throwable?) -> Unit { val callback: (OAuthToken?, Throwable?) -> Unit = { token, error -> if (error != null) { Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_FAIL_MESSAGE + error) } else if (token != null) { Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_SUCCESS_MESSAGE + token.accessToken) - inquiryNextAction() + doNextAction() } } return callback } -fun loginWithKakao(context: Context, inquiryNextAction: () -> Unit) { - val callback = getLoginCallback(inquiryNextAction) +fun loginWithKakao(context: Context, doNextAction: () -> Unit) { + val callback = getLoginCallback(doNextAction) if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { UserApiClient.instance.loginWithKakaoTalk(context) { token, error -> if (error != null) { @@ -35,7 +35,7 @@ fun loginWithKakao(context: Context, inquiryNextAction: () -> Unit) { UserApiClient.instance.loginWithKakaoAccount(context, callback = callback) } else if (token != null) { Log.d(KAKAO_LOGIN_LOG_TAG, KAKAO_LOGIN_SUCCESS_MESSAGE + token.accessToken) - inquiryNextAction() + doNextAction() } } } else {