From df1e06d102113bb543978b7e218735361ba3f218 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Thu, 28 Mar 2024 19:15:29 +0900
Subject: [PATCH 01/21] =?UTF-8?q?Rename=20:=20package=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 2 +-
.../youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt | 2 +-
.../{permission => setting}/OnboardingPermissionActivity.kt | 2 +-
app/src/main/res/layout/activity_onboarding_permission.xml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
rename app/src/main/java/com/dongyang/android/youdongknowme/ui/view/{permission => setting}/OnboardingPermissionActivity.kt (98%)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6f2de646..d5dc75f8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,7 +22,7 @@
android:theme="@style/Theme.YouDongKnowMe"
android:usesCleartextTraffic="true">
+ tools:context=".ui.view.setting.OnboardingPermissionActivity">
Date: Thu, 28 Mar 2024 19:39:31 +0900
Subject: [PATCH 02/21] =?UTF-8?q?refactor=20:=20firstLaunch=20=EC=84=A4?=
=?UTF-8?q?=EC=A0=95=20=EB=8B=A8=EC=88=9C=ED=99=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/repository/DepartRepository.kt | 1 -
.../data/repository/KeywordRepository.kt | 6 ------
.../ui/view/depart/DepartViewModel.kt | 10 ----------
.../ui/view/depart/OnboardingDepartActivity.kt | 15 +++------------
.../ui/view/keyword/KeywordActivity.kt | 2 --
.../ui/view/keyword/KeywordViewModel.kt | 13 -------------
.../ui/view/keyword/OnboardingKeywordActivity.kt | 11 ++++-------
.../view/setting/OnboardingPermissionActivity.kt | 1 +
.../ui/view/setting/SettingViewModel.kt | 2 +-
9 files changed, 9 insertions(+), 52 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/DepartRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/DepartRepository.kt
index 8b2e8361..0a458760 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/DepartRepository.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/DepartRepository.kt
@@ -9,7 +9,6 @@ class DepartRepository {
SharedPreference.setDepartment(department.name)
SharedPreference.setCode(department.code)
}
- fun getIsFirstLaunch(): Boolean = SharedPreference.getIsFirstLaunch()
fun getUserDepartment(): String {
return SharedPreference.getDepartment()
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/KeywordRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/KeywordRepository.kt
index 5a0cb236..d1569748 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/KeywordRepository.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/KeywordRepository.kt
@@ -15,10 +15,4 @@ class KeywordRepository(
suspend fun updateUserKeywords(isSubscribe: Boolean, name: String) {
keywordDao.updateKeyword(isSubscribe, name)
}
-
- fun getIsFirstLaunch(): Boolean = SharedPreference.getIsFirstLaunch()
-
- fun setIsFirstLaunch(isFirstLaunch: Boolean) {
- SharedPreference.setIsFirstLaunch(isFirstLaunch)
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/DepartViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/DepartViewModel.kt
index fda685f6..4e2c1090 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/DepartViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/DepartViewModel.kt
@@ -6,10 +6,6 @@ import com.dongyang.android.youdongknowme.data.repository.DepartRepository
import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
class DepartViewModel(private val departRepository: DepartRepository) : BaseViewModel() {
-
- private val _isFirstLaunch: MutableLiveData = MutableLiveData(false)
- val isFirstLaunch: LiveData get() = _isFirstLaunch
-
private val _myDepartment: MutableLiveData = MutableLiveData()
val myDepartment: LiveData get() = _myDepartment
@@ -31,10 +27,4 @@ class DepartViewModel(private val departRepository: DepartRepository) : BaseView
fun setSelectPosition(position: Int) {
_selectDepartPosition.postValue(position)
}
-
- fun checkFirstLaunch() {
- if (departRepository.getIsFirstLaunch()) {
- _isFirstLaunch.value = true
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
index 07d2f7ee..4ddf6ee3 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
@@ -25,8 +25,6 @@ class OnboardingDepartActivity : BaseActivity("")
override fun initStartView() {
- viewModel.checkFirstLaunch()
-
// 학과 리스트
items =
resources.getStringArray(R.array.dmu_department_list).toCollection(ArrayList())
@@ -99,16 +97,9 @@ class OnboardingDepartActivity : BaseActivity) {
return binding.btnOnboardingDepartNext.setOnClickListener {
viewModel.setDepartment(items[viewModel.selectDepartPosition.value ?: 0])
- if (viewModel.isFirstLaunch.value == true) {
- val intent = Intent(this, OnboardingKeywordActivity::class.java)
- startActivity(intent)
- finish()
- } else {
- val intent = Intent(this, MainActivity::class.java)
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
- startActivity(intent)
- finish()
- }
+ val intent = Intent(this, OnboardingKeywordActivity::class.java)
+ startActivity(intent)
+ finish()
}
}
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
index 44f631c4..ffdae329 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
@@ -35,11 +35,9 @@ class KeywordActivity : BaseActivity()
}
override fun initAfterBinding() {
- viewModel.checkFirstLaunch()
viewModel.getLocalKeywordList()
binding.btnKeywordComplete.setOnClickListener {
- viewModel.subscribeCheckedKeyword()
setResult(RESULT_OK)
finish()
}
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordViewModel.kt
index 68f48b58..181cc761 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordViewModel.kt
@@ -15,9 +15,6 @@ class KeywordViewModel(
private val firebaseMessaging = FirebaseMessaging.getInstance()
- private val _isFirstLaunch: MutableLiveData = MutableLiveData(false)
- val isFirstLaunch: LiveData get() = _isFirstLaunch
-
private val _localKeywordList: MutableLiveData> = MutableLiveData()
val localKeywordList: LiveData> get() = _localKeywordList
@@ -32,16 +29,6 @@ class KeywordViewModel(
}
}
- fun checkFirstLaunch() {
- if (keywordRepository.getIsFirstLaunch()) {
- _isFirstLaunch.value = true
- }
- }
-
- fun setFirstLaunch(isFirstLaunch: Boolean) {
- keywordRepository.setIsFirstLaunch(isFirstLaunch)
- }
-
fun subscribeCheckedKeyword() {
for (localKeyword in localKeywordList.value ?: emptyList()) {
if (checkKeywordList.contains(localKeyword.name)) {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
index 2e30b4ab..b12e0e98 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
@@ -18,7 +18,7 @@ class OnboardingKeywordActivity : BaseActivity
Date: Fri, 29 Mar 2024 07:17:40 +0900
Subject: [PATCH 03/21] =?UTF-8?q?feat=20:=20initToken=20=ED=86=B5=EC=8B=A0?=
=?UTF-8?q?=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../youdongknowme/data/remote/entity/Token.kt | 12 ++++++++++++
.../data/remote/service/TokenService.kt | 14 ++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 app/src/main/java/com/dongyang/android/youdongknowme/data/remote/entity/Token.kt
create mode 100644 app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/entity/Token.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/entity/Token.kt
new file mode 100644
index 00000000..31978b52
--- /dev/null
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/entity/Token.kt
@@ -0,0 +1,12 @@
+package com.dongyang.android.youdongknowme.data.remote.entity
+
+import com.google.gson.annotations.SerializedName
+
+data class Token (
+ @SerializedName("token")
+ val token: String,
+ @SerializedName("department")
+ val department: String,
+ @SerializedName("topics")
+ val topics: List,
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
new file mode 100644
index 00000000..bcc753e0
--- /dev/null
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
@@ -0,0 +1,14 @@
+package com.dongyang.android.youdongknowme.data.remote.service
+
+import com.dongyang.android.youdongknowme.data.remote.entity.Token
+import retrofit2.http.Body
+import retrofit2.http.POST
+import retrofit2.http.Path
+import retrofit2.http.Query
+
+interface TokenService {
+ @POST("token/v1/dmu/initToken")
+ suspend fun setInitToken(
+ @Body data: Token,
+ )
+}
\ No newline at end of file
From c14cb27931463c4f500e09de9f0ea6d2ca75e980 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Fri, 29 Mar 2024 07:27:32 +0900
Subject: [PATCH 04/21] =?UTF-8?q?refactor=20:=20=EC=95=8C=EB=A6=BC=20?=
=?UTF-8?q?=EA=B6=8C=ED=95=9C=20=EC=84=A4=EC=A0=95=20=EB=B2=84=EC=A0=84=20?=
=?UTF-8?q?=ED=99=95=EC=9D=B8=20=EB=B0=8F=20=ED=95=A8=EC=88=98=ED=99=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ui/view/splash/SplashActivity.kt | 37 +++++++++++--------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
index 5bd26d49..b7f93977 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
@@ -26,6 +26,7 @@ class SplashActivity : BaseActivity() {
override val viewModel: SplashViewModel by viewModel()
private var intentJob: Job? = null
+ var intent = MainActivity.createIntent(this@SplashActivity)
override fun initStartView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
@@ -43,21 +44,7 @@ class SplashActivity : BaseActivity() {
delay(SPLASH_TIME_MILLIS)
if (viewModel.isFirstLaunch.value == true) {
- val intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
-
- if (PackageManager.PERMISSION_DENIED == ContextCompat.checkSelfPermission(
- this@SplashActivity, Manifest.permission.POST_NOTIFICATIONS
- )
- ) {
- // 알림 권한 설정 허용
- ActivityCompat.requestPermissions(
- this@SplashActivity, arrayOf(Manifest.permission.POST_NOTIFICATIONS), REQUEST_PERMISSION_CODE
- )
- } else {
- // 알림 권한 설정 미허용
- startActivity(intent)
- finish()
- }
+ permissionCheck()
} else {
intent = MainActivity.createIntent(this@SplashActivity)
startActivity(intent)
@@ -72,6 +59,7 @@ class SplashActivity : BaseActivity() {
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+
if (requestCode == REQUEST_PERMISSION_CODE) {
// 권한 설정 결과 처리
intent = if (viewModel.isFirstLaunch.value == true) {
@@ -84,6 +72,25 @@ class SplashActivity : BaseActivity() {
}
}
+ private fun permissionCheck() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ if (PackageManager.PERMISSION_DENIED == ContextCompat.checkSelfPermission(
+ this@SplashActivity, Manifest.permission.POST_NOTIFICATIONS
+ )
+ ) {
+ // 알림 권한 설정 허용
+ ActivityCompat.requestPermissions(
+ this@SplashActivity,
+ arrayOf(Manifest.permission.POST_NOTIFICATIONS),
+ REQUEST_PERMISSION_CODE
+ )
+ } else {
+ // 알림 권한 설정 미허용
+ startActivity(intent)
+ finish()
+ }
+ }
+ }
override fun onBackPressed() {
intentJob?.cancel()
From 08994c5685019d0876a3b25b9a8363d2d932e058 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 15:39:39 +0900
Subject: [PATCH 05/21] =?UTF-8?q?fix=20:=20intent=20=EC=98=A4=EB=A5=98=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/splash/SplashActivity.kt | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
index b7f93977..6dd70dc1 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
@@ -26,7 +26,6 @@ class SplashActivity : BaseActivity() {
override val viewModel: SplashViewModel by viewModel()
private var intentJob: Job? = null
- var intent = MainActivity.createIntent(this@SplashActivity)
override fun initStartView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
From 95bb0c106e221cca890ccd10c9762036439439f4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 15:39:59 +0900
Subject: [PATCH 06/21] =?UTF-8?q?feat=20:=20fcm=20=ED=86=A0=ED=81=B0=20?=
=?UTF-8?q?=EB=93=B1=EB=A1=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/data/local/SharedPreference.kt | 4 ++++
.../com/dongyang/android/youdongknowme/service/FCMService.kt | 1 +
.../android/youdongknowme/ui/view/setting/SettingViewModel.kt | 2 +-
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
index 3f72ffb7..5b9aceb7 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
@@ -57,4 +57,8 @@ object SharedPreference {
fun getFCMToken(): String = pref?.getString(FCM_TOKEN, "0") ?: "0"
fun setFcmToken(token: String) = pref?.edit()?.putString(FCM_TOKEN, token)?.apply()
+ // FCM 토큰
+ private const val FCM_TOKEN = "NO_TOKEN"
+ fun getFCMToken(): String = pref?.getString(FCM_TOKEN, "0") ?: "0"
+ fun setFcmToken(token: String) = pref?.edit()?.putString(FCM_TOKEN, token)?.apply()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt b/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
index d87e19bc..cde0cfb1 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
@@ -12,6 +12,7 @@ import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.ui.view.main.MainActivity
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
+import timber.log.Timber
class FCMService : FirebaseMessagingService() {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingViewModel.kt
index dbdf27ac..29d51831 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingViewModel.kt
@@ -63,7 +63,7 @@ class SettingViewModel(private val settingRepository: SettingRepository) : BaseV
val myDepartment = settingRepository.getUserDepartment()
_myDepartment.postValue(myDepartment)
}
-
+
fun getUserTopic() {
viewModelScope.launch {
val keyword = settingRepository.getUserTopic()
From 4e3fe27f1ada69dc2dda1eb29217fe8112e503ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 15:40:38 +0900
Subject: [PATCH 07/21] =?UTF-8?q?feat=20:=20initToken=20=EA=B8=B0=EB=8A=A5?=
=?UTF-8?q?=20=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/repository/MainRepository.kt | 36 ++++++++
.../ui/view/main/MainActivity.kt | 4 +-
.../ui/view/main/MainViewModel.kt | 88 ++++++++++++++++++-
3 files changed, 123 insertions(+), 5 deletions(-)
create mode 100644 app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
new file mode 100644
index 00000000..30ec8c99
--- /dev/null
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
@@ -0,0 +1,36 @@
+package com.dongyang.android.youdongknowme.data.repository
+
+import com.dongyang.android.youdongknowme.data.local.SharedPreference
+import com.dongyang.android.youdongknowme.data.local.dao.KeywordDao
+import com.dongyang.android.youdongknowme.data.remote.entity.Token
+import com.dongyang.android.youdongknowme.data.remote.service.TokenService
+import com.dongyang.android.youdongknowme.standard.network.ErrorResponseHandler
+import com.dongyang.android.youdongknowme.standard.network.NetworkResult
+import com.dongyang.android.youdongknowme.standard.network.RetrofitObject
+
+class MainRepository(
+ private val keywordDao: KeywordDao,
+ private val errorResponseHandler: ErrorResponseHandler
+) {
+ fun getUserDepartment(): String {
+ return SharedPreference.getDepartment()
+ }
+
+ suspend fun getUserTopic(): List {
+ val subscribedTopic = keywordDao.getSubscribedKeywords()
+ return subscribedTopic.map { it.englishName }
+ }
+
+ suspend fun setUserToken(
+ data: Token
+ ): NetworkResult {
+ return try {
+ val response = RetrofitObject.getNetwork().create(TokenService::class.java)
+ .setInitToken(data)
+ NetworkResult.Success(response)
+ } catch (exception: Exception) {
+ val error = errorResponseHandler.getError(exception)
+ NetworkResult.Error(error)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index f57227a5..6dbb3220 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -34,12 +34,10 @@ class MainActivity : BaseActivity() {
navController.navigatorProvider += navigator
navController.setGraph(R.navigation.dmu_navigation)
binding.mainNvBottom.setupWithNavController(navController)
-
- getFcmToken()
}
override fun initDataBinding() = Unit
-
+
override fun initAfterBinding() = Unit
private fun getFcmToken() {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index e7d3dd51..167b90f5 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -1,7 +1,91 @@
package com.dongyang.android.youdongknowme.ui.view.main
+import android.util.Log
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.viewModelScope
+import com.dongyang.android.youdongknowme.data.remote.entity.Token
+import com.dongyang.android.youdongknowme.data.repository.KeywordRepository
+import com.dongyang.android.youdongknowme.data.repository.MainRepository
import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
+import com.dongyang.android.youdongknowme.standard.network.NetworkResult
+import com.dongyang.android.youdongknowme.ui.view.util.Event
+import com.google.firebase.messaging.FirebaseMessaging
+import kotlinx.coroutines.launch
+import timber.log.Timber
-class MainViewModel : BaseViewModel() {
- // NOT IMPLEMENTS
+class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel() {
+ private val _errorState: MutableLiveData> = MutableLiveData()
+ val errorState: LiveData> = _errorState
+
+ private val _isLoading: MutableLiveData = MutableLiveData()
+ val isLoading: LiveData = _isLoading
+
+ private val _isError: MutableLiveData = MutableLiveData()
+ val isError: LiveData = _isError
+
+ private val _myDepartment: MutableLiveData = MutableLiveData()
+ val myDepartment: LiveData get() = _myDepartment
+
+ private val _myTopics: MutableLiveData> = MutableLiveData()
+ val myTopics: LiveData> get() = _myTopics
+
+ private val _FCMToken: MutableLiveData = MutableLiveData()
+ val FCMToken: LiveData get() = _FCMToken
+
+ fun initFirebaseMessaging() {
+ FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
+ if (task.isSuccessful) {
+ _FCMToken.value = task.result
+ getUserDepartment()
+ getUserTopic()
+ } else {
+ _isError.value = true
+ }
+ }
+ }
+
+ private fun getUserDepartment() {
+ val myDepartment = mainRepository.getUserDepartment()
+ _myDepartment.postValue(myDepartment)
+ }
+
+ private fun getUserTopic() {
+ viewModelScope.launch {
+ val keyword = mainRepository.getUserTopic()
+ _myTopics.value = keyword
+ }
+ }
+
+ fun setInitToken() {
+ _isLoading.postValue(true)
+ viewModelScope.launch {
+ when (val result = myTopics.value?.let {
+ Token(
+ token = FCMToken.value.toString(),
+ department = myDepartment.value.toString(),
+ topics = it
+ )
+ }?.let {
+ mainRepository.setUserToken(
+ it
+ )
+ }) {
+ is NetworkResult.Success -> {
+ _isLoading.postValue(false)
+ _isError.postValue(false)
+ }
+
+ is NetworkResult.Error -> {
+ handleError(result, _errorState)
+ _isLoading.postValue(false)
+ _isError.postValue(true)
+ }
+ }
+ }
+
+ Log.d("initToken", FCMToken.value.toString())
+ Log.d("initToken", myDepartment.value.toString())
+ Log.d("initToken", myTopics.value.toString())
+ }
}
\ No newline at end of file
From 88c6b671d4dbb3875d49714c717d0f45f9450a9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 15:40:49 +0900
Subject: [PATCH 08/21] =?UTF-8?q?refactor=20:=20kotlin=20=ED=8C=8C?=
=?UTF-8?q?=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
---
.../android/youdongknowme/standard/di/KoinModules.kt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt b/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
index 97164703..9d1b8a29 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
@@ -9,6 +9,7 @@ import com.dongyang.android.youdongknowme.data.repository.AlarmRepository
import com.dongyang.android.youdongknowme.data.repository.CafeteriaRepository
import com.dongyang.android.youdongknowme.data.repository.DepartRepository
import com.dongyang.android.youdongknowme.data.repository.KeywordRepository
+import com.dongyang.android.youdongknowme.data.repository.MainRepository
import com.dongyang.android.youdongknowme.data.repository.NoticeRepository
import com.dongyang.android.youdongknowme.data.repository.ScheduleRepository
import com.dongyang.android.youdongknowme.data.repository.SettingRepository
@@ -20,6 +21,7 @@ import com.dongyang.android.youdongknowme.ui.view.depart.DepartViewModel
import com.dongyang.android.youdongknowme.ui.view.detail.DetailViewModel
import com.dongyang.android.youdongknowme.ui.view.keyword.KeywordViewModel
import com.dongyang.android.youdongknowme.ui.view.license.LicenseViewModel
+import com.dongyang.android.youdongknowme.ui.view.main.MainViewModel
import com.dongyang.android.youdongknowme.ui.view.notice.NoticeViewModel
import com.dongyang.android.youdongknowme.ui.view.schedule.ScheduleViewModel
import com.dongyang.android.youdongknowme.ui.view.search.SearchViewModel
@@ -98,6 +100,9 @@ val viewModelModule = module {
viewModel {
SearchViewModel(get())
}
+ viewModel{
+ MainViewModel(get())
+ }
}
val repositoryModule = module {
@@ -125,6 +130,9 @@ val repositoryModule = module {
single {
CafeteriaRepository(get())
}
+ single{
+ MainRepository(get(), get())
+ }
}
val utilModule = module {
From 4e7895e046f2d7e274652d982d85ee641bcbcfba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 16:23:24 +0900
Subject: [PATCH 09/21] =?UTF-8?q?refactor=20:=20=ED=95=99=EA=B3=BC=20?=
=?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B0=8F=20=EC=88=9C=EC=84=9C=20=EC=A1=B0?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../youdongknowme/standard/util/Constants.kt | 2 --
.../youdongknowme/standard/util/Department.kt | 32 ++++++++++---------
2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Constants.kt b/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Constants.kt
index ea528b73..b3b3fe12 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Constants.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Constants.kt
@@ -31,6 +31,4 @@ object CODE {
const val HOTEL_TOURISM_CODE = 604
const val MANAGEMENT_INFORMATION_CODE = 605
const val BIG_DATA_MANAGEMENT_CODE = 606
-
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Department.kt b/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Department.kt
index 4a7d01b9..d394107d 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Department.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/standard/util/Department.kt
@@ -6,56 +6,56 @@ sealed class Department(
) {
object Mechanical : Department("기계공학과", CODE.MECHANICAL_ENGINE_CODE)
object MechanicalDesign : Department("기계설계공학과", CODE.MECHANICAL_DESIGN_CODE)
+ object Automation : Department("로봇공학과", CODE.ROBOT_ENGINE_CODE)
+ object Robot : Department("자동화공학과", CODE.AUTOMATION_ENGINE_CODE)
object Electrical : Department("전기공학과", CODE.ELECTRICAL_ENGINE_CODE)
object InfoElectrical : Department("정보전자공학과", CODE.INFO_ELECTRONIC_ENGINE_CODE)
object Semiconductor : Department("반도체전자공학과", CODE.SEMICONDUCTOR_ENGINE_CODE)
object InfoCommunication : Department("정보통신공학과", CODE.INFO_COMMUNICATION_ENGINE_CODE)
object FireManagement : Department("소방안전관리과", CODE.FIRE_MANAGEMENT_CODE)
- object ComputerSoftware : Department("컴퓨터소프트웨어공학과", CODE.COMPUTER_SOFTWARE_ENGINE_CODE)
object ComputerInfo : Department("컴퓨터정보공학과", CODE.COMPUTER_INFO_ENGINE_CODE)
+ object ComputerSoftware : Department("컴퓨터소프트웨어공학과", CODE.COMPUTER_SOFTWARE_ENGINE_CODE)
object Artificial : Department("인공지능소프트웨어학과", CODE.ARTIFICIAL_ENGINE_CODE)
object Biochemical : Department("생명화학공학과", CODE.BIOCHEMICAL_ENGINE_CODE)
object BioConvergence : Department("바이오융합공학과", CODE.BIO_CONVERGENCE_ENGINE_CODE)
object Architecture : Department("건축과", CODE.ARCHITECTURE_CODE)
object InteriorDesign : Department("실내건축디자인과", CODE.INTERIOR_DESIGN_CODE)
object VisualDesign : Department("시각디자인과", CODE.VISUAL_DESIGN_CODE)
- object ArVrContent : Department("AR-VR콘텐츠디자인과", CODE.AR_VR_CONTENT_CODE)
+ object ArVrContents : Department("AR-VR콘텐츠디자인과", CODE.AR_VR_CONTENT_CODE)
object Business : Department("경영학과", CODE.BUSINESS_ADMINISTRATION_CODE)
object TaxAccounting : Department("세무회계학과", CODE.TAX_ACCOUNTING_CODE)
object DistributionMarketing : Department("유통마케팅학과", CODE.DISTRIBUTION_MARKETING_CODE)
object HotelTourism : Department("호텔관광학과", CODE.HOTEL_TOURISM_CODE)
- object ManagementInformation : Department("경영정보학과", CODE.MANAGEMENT_INFORMATION_CODE)
+ object BusinessInfo : Department("경영정보학과", CODE.MANAGEMENT_INFORMATION_CODE)
object BigDataManagement : Department("빅데이터경영과", CODE.BIG_DATA_MANAGEMENT_CODE)
- object Robot : Department("로봇공학과", CODE.ROBOT_ENGINE_CODE)
- object Automation : Department("자동화공학과", CODE.AUTOMATION_ENGINE_CODE)
companion object {
fun getDepartment(department: String): Department {
return when (department) {
- "경영학과" -> Business
- "경영정보학과" -> ManagementInformation
"기계공학과" -> Mechanical
"기계설계공학과" -> MechanicalDesign
+ "로봇공학과" -> Robot
+ "자동화공학과" -> Automation
"전기공학과" -> Electrical
"정보전자공학과" -> InfoElectrical
"반도체전자공학과" -> Semiconductor
"정보통신공학과" -> InfoCommunication
"소방안전관리과" -> FireManagement
- "컴퓨터소프트웨어공학과" -> ComputerSoftware
"컴퓨터정보공학과" -> ComputerInfo
+ "컴퓨터소프트웨어공학과" -> ComputerSoftware
"인공지능소프트웨어학과" -> Artificial
"생명화학공학과" -> Biochemical
"바이오융합공학과" -> BioConvergence
"건축과" -> Architecture
"실내건축디자인과" -> InteriorDesign
"시각디자인과" -> VisualDesign
- "AR-VR콘텐츠디자인과" -> ArVrContent
+ "AR-VR콘텐츠디자인과" -> ArVrContents
+ "경영학과" -> Business
"세무회계학과" -> TaxAccounting
"유통마케팅학과" -> DistributionMarketing
"호텔관광학과" -> HotelTourism
+ "경영정보학과" -> BusinessInfo
"빅데이터경영과" -> BigDataManagement
- "로봇공학과" -> Robot
- "자동화공학과" -> Automation
else -> throw IllegalArgumentException("올바른 타입이 아닙니다.")
}
}
@@ -64,25 +64,27 @@ sealed class Department(
return arrayListOf(
Mechanical,
MechanicalDesign,
+ Automation,
+ Robot,
Electrical,
InfoElectrical,
Semiconductor,
InfoCommunication,
- ComputerSoftware,
- ComputerInfo,
FireManagement,
+ ComputerInfo,
+ ComputerSoftware,
Artificial,
Biochemical,
BioConvergence,
Architecture,
InteriorDesign,
VisualDesign,
- ArVrContent,
+ ArVrContents,
Business,
TaxAccounting,
DistributionMarketing,
HotelTourism,
- ManagementInformation,
+ BusinessInfo,
BigDataManagement
)
}
From a0bd8d909a4eee54c41cdcf6004f4b9c2e7b640f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 16:23:46 +0900
Subject: [PATCH 10/21] =?UTF-8?q?refactor=20:=20=ED=82=A4=EC=9B=8C?=
=?UTF-8?q?=EB=93=9C=20=EC=98=81=EB=AC=B8=EB=AA=85=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../youdongknowme/standard/di/KoinModules.kt | 30 +++++++++----------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt b/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
index 9d1b8a29..8873109c 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/standard/di/KoinModules.kt
@@ -143,23 +143,23 @@ val utilModule = module {
private val defaultKeywordList = arrayListOf(
KeywordEntity("시험", "exam", false),
- KeywordEntity("수강", "course", false),
- KeywordEntity("특강", "lecture", false),
- KeywordEntity("계절학기", "season", false),
- KeywordEntity("휴학", "leave", false),
- KeywordEntity("복학", "return", false),
- KeywordEntity("졸업", "graduation", false),
- KeywordEntity("전과", "transfer", false),
- KeywordEntity("학기포기", "drop", false),
+ KeywordEntity("수강", "signup", false),
+ KeywordEntity("특강", "speciallecture", false),
+ KeywordEntity("계절학기", "seasonalsemester", false),
+ KeywordEntity("휴학", "leaveofabsence", false),
+ KeywordEntity("복학", "returntoschool", false),
+ KeywordEntity("졸업", "graduate", false),
+ KeywordEntity("전과", "switchmajors", false),
+ KeywordEntity("학기포기", "givingupthesemester", false),
KeywordEntity("장학", "scholarship", false),
- KeywordEntity("국가장학", "nationalScholarship", false),
- KeywordEntity("등록", "tuition", false),
- KeywordEntity("채용", "recruitment", false),
+ KeywordEntity("국가장학", "nationalscholarship", false),
+ KeywordEntity("등록", "registration", false),
+ KeywordEntity("채용", "employment", false),
KeywordEntity("공모전", "contest", false),
KeywordEntity("대회", "competition", false),
- KeywordEntity("현장실습", "field", false),
- KeywordEntity("봉사", "service", false),
+ KeywordEntity("현장실습", "fieldtraining", false),
+ KeywordEntity("봉사", "volunteer", false),
KeywordEntity("기숙사", "dormitory", false),
- KeywordEntity("동아리", "club", false),
- KeywordEntity("학생회", "studentCouncil", false),
+ KeywordEntity("동아리", "group", false),
+ KeywordEntity("학생회", "studentcouncil", false),
)
From 7ceb25881bcc3990c007b9b55be021519044ec02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 16:26:26 +0900
Subject: [PATCH 11/21] =?UTF-8?q?refactor=20:=20token=20=EB=B0=9C=ED=96=89?=
=?UTF-8?q?=20=EC=9C=84=EC=B9=98=20=EB=B0=8F=20=ED=95=A8=EC=88=98=20?=
=?UTF-8?q?=EC=9E=AC=EC=84=A4=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/main/MainActivity.kt | 2 ++
.../android/youdongknowme/ui/view/main/MainViewModel.kt | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 6dbb3220..4ba6bf08 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -34,6 +34,8 @@ class MainActivity : BaseActivity() {
navController.navigatorProvider += navigator
navController.setGraph(R.navigation.dmu_navigation)
binding.mainNvBottom.setupWithNavController(navController)
+
+ viewModel.issuedToken()
}
override fun initDataBinding() = Unit
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index 167b90f5..e7ecbfd9 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -33,12 +33,13 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
private val _FCMToken: MutableLiveData = MutableLiveData()
val FCMToken: LiveData get() = _FCMToken
- fun initFirebaseMessaging() {
+ fun issuedToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (task.isSuccessful) {
_FCMToken.value = task.result
getUserDepartment()
getUserTopic()
+ setInitToken()
} else {
_isError.value = true
}
From 6e142e0503d1119640c2e80a781bd557fb63bfb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 17:48:09 +0900
Subject: [PATCH 12/21] =?UTF-8?q?refactor=20:=20firstLaunch=20=EA=B0=90?=
=?UTF-8?q?=EC=A7=80=20=EC=9C=84=EC=B9=98=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/repository/MainRepository.kt | 5 ++++
.../ui/view/main/MainActivity.kt | 10 +++++--
.../ui/view/main/MainViewModel.kt | 18 +++++++----
.../setting/OnboardingPermissionActivity.kt | 1 -
.../ui/view/splash/SplashActivity.kt | 30 ++++++++-----------
5 files changed, 38 insertions(+), 26 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
index 30ec8c99..657ce699 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
@@ -12,6 +12,11 @@ class MainRepository(
private val keywordDao: KeywordDao,
private val errorResponseHandler: ErrorResponseHandler
) {
+ fun getIsFirstLaunch(): Boolean = SharedPreference.getIsFirstLaunch()
+
+ fun setIsFirstLaunch(isFirstLaunch: Boolean) {
+ SharedPreference.setIsFirstLaunch(isFirstLaunch)
+ }
fun getUserDepartment(): String {
return SharedPreference.getDepartment()
}
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 4ba6bf08..92be0c99 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -35,12 +35,16 @@ class MainActivity : BaseActivity() {
navController.setGraph(R.navigation.dmu_navigation)
binding.mainNvBottom.setupWithNavController(navController)
- viewModel.issuedToken()
+ viewModel.checkFirstLaunch()
}
override fun initDataBinding() = Unit
-
- override fun initAfterBinding() = Unit
+
+ override fun initAfterBinding() {
+ if(viewModel.isFirstLaunch.value==true){
+ viewModel.issuedToken()
+ }
+ }
private fun getFcmToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index e7ecbfd9..3ede2937 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -12,6 +12,7 @@ import com.dongyang.android.youdongknowme.standard.network.NetworkResult
import com.dongyang.android.youdongknowme.ui.view.util.Event
import com.google.firebase.messaging.FirebaseMessaging
import kotlinx.coroutines.launch
+
import timber.log.Timber
class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel() {
@@ -32,6 +33,13 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
private val _FCMToken: MutableLiveData = MutableLiveData()
val FCMToken: LiveData get() = _FCMToken
+ private val _isFirstLaunch: MutableLiveData = MutableLiveData(false)
+ val isFirstLaunch: LiveData get() = _isFirstLaunch
+ fun checkFirstLaunch() {
+ if (mainRepository.getIsFirstLaunch()) {
+ _isFirstLaunch.value = true
+ }
+ }
fun issuedToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
@@ -40,6 +48,7 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
getUserDepartment()
getUserTopic()
setInitToken()
+ mainRepository.setIsFirstLaunch(false)
} else {
_isError.value = true
}
@@ -60,6 +69,10 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
fun setInitToken() {
_isLoading.postValue(true)
+ Timber.tag("initToken").d(FCMToken.value.toString())
+ Timber.tag("initToken").d(_myDepartment.value)
+ Timber.tag("initToken").d(_myTopics.value.toString())
+
viewModelScope.launch {
when (val result = myTopics.value?.let {
Token(
@@ -76,7 +89,6 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
_isLoading.postValue(false)
_isError.postValue(false)
}
-
is NetworkResult.Error -> {
handleError(result, _errorState)
_isLoading.postValue(false)
@@ -84,9 +96,5 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
}
}
}
-
- Log.d("initToken", FCMToken.value.toString())
- Log.d("initToken", myDepartment.value.toString())
- Log.d("initToken", myTopics.value.toString())
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
index c72142d6..2b6718df 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
@@ -32,7 +32,6 @@ class OnboardingPermissionActivity :
override fun initAfterBinding() {
binding.btnPermissionComplete.setOnClickListener {
- viewModel.setFirstLaunch(false)
val intent = MainActivity.createIntent(this@OnboardingPermissionActivity)
startActivity(intent)
finish()
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
index 6dd70dc1..41569f72 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
@@ -26,6 +26,7 @@ class SplashActivity : BaseActivity() {
override val viewModel: SplashViewModel by viewModel()
private var intentJob: Job? = null
+ private lateinit var intent: Intent
override fun initStartView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
@@ -41,31 +42,25 @@ class SplashActivity : BaseActivity() {
override fun initAfterBinding() {
intentJob = lifecycleScope.launch {
delay(SPLASH_TIME_MILLIS)
+ }
- if (viewModel.isFirstLaunch.value == true) {
- permissionCheck()
- } else {
- intent = MainActivity.createIntent(this@SplashActivity)
- startActivity(intent)
- finish()
- }
+ if (viewModel.isFirstLaunch.value == true) {
+ permissionCheck()
+ } else {
+ val intent = MainActivity.createIntent(this@SplashActivity)
+ startActivity(intent)
+ finish()
}
}
override fun onRequestPermissionsResult(
- requestCode: Int,
- permissions: Array,
- grantResults: IntArray
+ requestCode: Int, permissions: Array, grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_PERMISSION_CODE) {
- // 권한 설정 결과 처리
- intent = if (viewModel.isFirstLaunch.value == true) {
- OnboardingDepartActivity.createIntent(this@SplashActivity)
- } else {
- MainActivity.createIntent(this@SplashActivity)
- }
+ // 알림 권한 설정 결과 상관 없이 OnboardingDepartActivity로 이동
+ intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
startActivity(intent)
finish()
}
@@ -84,7 +79,8 @@ class SplashActivity : BaseActivity() {
REQUEST_PERMISSION_CODE
)
} else {
- // 알림 권한 설정 미허용
+ // 이미 알림 권한이 허용된 경우
+ intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
startActivity(intent)
finish()
}
From 1bd9d0bd6af5aed9a6a5d9001956b09dcf6a7ae2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 18:46:44 +0900
Subject: [PATCH 13/21] =?UTF-8?q?fix=20:=20firstLaunch=20token=20=EB=93=B1?=
=?UTF-8?q?=EB=A1=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ui/view/main/MainActivity.kt | 5 +--
.../ui/view/main/MainViewModel.kt | 42 +++++++------------
2 files changed, 16 insertions(+), 31 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 92be0c99..024373de 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -36,16 +36,13 @@ class MainActivity : BaseActivity() {
binding.mainNvBottom.setupWithNavController(navController)
viewModel.checkFirstLaunch()
- }
- override fun initDataBinding() = Unit
- override fun initAfterBinding() {
if(viewModel.isFirstLaunch.value==true){
viewModel.issuedToken()
}
}
-
+
private fun getFcmToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index 3ede2937..b460fe19 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -45,47 +45,35 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (task.isSuccessful) {
_FCMToken.value = task.result
- getUserDepartment()
- getUserTopic()
setInitToken()
- mainRepository.setIsFirstLaunch(false)
} else {
_isError.value = true
}
}
}
- private fun getUserDepartment() {
- val myDepartment = mainRepository.getUserDepartment()
- _myDepartment.postValue(myDepartment)
- }
+ fun setInitToken() {
+ _isLoading.postValue(true)
+
+ val department = mainRepository.getUserDepartment()
+ _myDepartment.postValue(department)
- private fun getUserTopic() {
viewModelScope.launch {
+
val keyword = mainRepository.getUserTopic()
_myTopics.value = keyword
- }
- }
- fun setInitToken() {
- _isLoading.postValue(true)
- Timber.tag("initToken").d(FCMToken.value.toString())
- Timber.tag("initToken").d(_myDepartment.value)
- Timber.tag("initToken").d(_myTopics.value.toString())
+ val token = Token(
+ token = FCMToken.value.toString(),
+ department = myDepartment.value ?: "",
+ topics = myTopics.value ?: emptyList()
+ )
- viewModelScope.launch {
- when (val result = myTopics.value?.let {
- Token(
- token = FCMToken.value.toString(),
- department = myDepartment.value.toString(),
- topics = it
- )
- }?.let {
- mainRepository.setUserToken(
- it
- )
- }) {
+ Timber.tag("initToken").d("$token")
+
+ when (val result = mainRepository.setUserToken(token)) {
is NetworkResult.Success -> {
+ mainRepository.setIsFirstLaunch(false)
_isLoading.postValue(false)
_isError.postValue(false)
}
From bc06f87c3f4ccc53a0b3c71ac863554f273bca6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sat, 30 Mar 2024 21:41:02 +0900
Subject: [PATCH 14/21] =?UTF-8?q?refactor=20:=20=EB=AF=B8=EC=82=AC?=
=?UTF-8?q?=EC=9A=A9=20=ED=95=A8=EC=88=98=20=EC=A0=95=EB=A6=AC=20=EB=B0=8F?=
=?UTF-8?q?=20=EC=A0=95=EB=A0=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../youdongknowme/data/repository/MainRepository.kt | 1 +
.../android/youdongknowme/service/FCMService.kt | 1 -
.../ui/view/depart/OnboardingDepartActivity.kt | 6 ++++--
.../youdongknowme/ui/view/keyword/KeywordActivity.kt | 1 -
.../ui/view/keyword/OnboardingKeywordActivity.kt | 3 ++-
.../android/youdongknowme/ui/view/main/MainActivity.kt | 5 +----
.../youdongknowme/ui/view/main/MainViewModel.kt | 10 +++-------
.../youdongknowme/ui/view/splash/SplashActivity.kt | 7 +++----
8 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
index 657ce699..83df601e 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
@@ -17,6 +17,7 @@ class MainRepository(
fun setIsFirstLaunch(isFirstLaunch: Boolean) {
SharedPreference.setIsFirstLaunch(isFirstLaunch)
}
+
fun getUserDepartment(): String {
return SharedPreference.getDepartment()
}
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt b/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
index cde0cfb1..d87e19bc 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/service/FCMService.kt
@@ -12,7 +12,6 @@ import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.ui.view.main.MainActivity
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
-import timber.log.Timber
class FCMService : FirebaseMessagingService() {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
index 4ddf6ee3..c99fdb3e 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
@@ -53,12 +53,14 @@ class OnboardingDepartActivity : BaseActivity()
if (searchText.isEmpty()) {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
index ffdae329..0a7750d8 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/KeywordActivity.kt
@@ -46,7 +46,6 @@ class KeywordActivity : BaseActivity()
}
private fun setCheckChipChange(vararg chipGroups: ChipGroup) {
-
for (chipGroup in chipGroups) {
for (index in 0 until chipGroup.childCount) {
val chip: Chip = chipGroup.getChildAt(index) as Chip
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
index b12e0e98..4e587a17 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/keyword/OnboardingKeywordActivity.kt
@@ -11,7 +11,8 @@ import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup
import org.koin.androidx.viewmodel.ext.android.viewModel
-class OnboardingKeywordActivity : BaseActivity() {
+class OnboardingKeywordActivity :
+ BaseActivity() {
override val layoutResourceId: Int = R.layout.activity_onboarding_keyword
override val viewModel: KeywordViewModel by viewModel()
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 024373de..b1457ce7 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -10,8 +10,6 @@ import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.databinding.ActivityMainBinding
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.ui.view.util.KeepStateNavigator
-import com.google.android.gms.tasks.OnCompleteListener
-import com.google.firebase.messaging.FirebaseMessaging
import org.koin.androidx.viewmodel.ext.android.viewModel
/* 메인 액티비티 */
@@ -37,8 +35,7 @@ class MainActivity : BaseActivity() {
viewModel.checkFirstLaunch()
-
- if(viewModel.isFirstLaunch.value==true){
+ if (viewModel.isFirstLaunch.value == true) {
viewModel.issuedToken()
}
}
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index b460fe19..a6016da4 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -1,11 +1,9 @@
package com.dongyang.android.youdongknowme.ui.view.main
-import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.dongyang.android.youdongknowme.data.remote.entity.Token
-import com.dongyang.android.youdongknowme.data.repository.KeywordRepository
import com.dongyang.android.youdongknowme.data.repository.MainRepository
import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
@@ -13,8 +11,6 @@ import com.dongyang.android.youdongknowme.ui.view.util.Event
import com.google.firebase.messaging.FirebaseMessaging
import kotlinx.coroutines.launch
-import timber.log.Timber
-
class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel() {
private val _errorState: MutableLiveData> = MutableLiveData()
val errorState: LiveData> = _errorState
@@ -33,8 +29,10 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
private val _FCMToken: MutableLiveData = MutableLiveData()
val FCMToken: LiveData get() = _FCMToken
+
private val _isFirstLaunch: MutableLiveData = MutableLiveData(false)
val isFirstLaunch: LiveData get() = _isFirstLaunch
+
fun checkFirstLaunch() {
if (mainRepository.getIsFirstLaunch()) {
_isFirstLaunch.value = true
@@ -59,7 +57,6 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
_myDepartment.postValue(department)
viewModelScope.launch {
-
val keyword = mainRepository.getUserTopic()
_myTopics.value = keyword
@@ -69,14 +66,13 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
topics = myTopics.value ?: emptyList()
)
- Timber.tag("initToken").d("$token")
-
when (val result = mainRepository.setUserToken(token)) {
is NetworkResult.Success -> {
mainRepository.setIsFirstLaunch(false)
_isLoading.postValue(false)
_isError.postValue(false)
}
+
is NetworkResult.Error -> {
handleError(result, _errorState)
_isLoading.postValue(false)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
index 41569f72..ee008372 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
@@ -54,12 +54,13 @@ class SplashActivity : BaseActivity() {
}
override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
+ requestCode: Int,
+ permissions: Array,
+ grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_PERMISSION_CODE) {
- // 알림 권한 설정 결과 상관 없이 OnboardingDepartActivity로 이동
intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
startActivity(intent)
finish()
@@ -72,14 +73,12 @@ class SplashActivity : BaseActivity() {
this@SplashActivity, Manifest.permission.POST_NOTIFICATIONS
)
) {
- // 알림 권한 설정 허용
ActivityCompat.requestPermissions(
this@SplashActivity,
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
REQUEST_PERMISSION_CODE
)
} else {
- // 이미 알림 권한이 허용된 경우
intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
startActivity(intent)
finish()
From b2dc3a02009ef4ecf43c3137d55534f0a5e01e34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Sun, 31 Mar 2024 23:42:53 +0900
Subject: [PATCH 15/21] =?UTF-8?q?refactor=20:=20=EB=B3=80=EC=88=98=20?=
=?UTF-8?q?=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20=ED=95=A8=EC=88=98=20=EC=9D=B8?=
=?UTF-8?q?=EC=9E=90=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/main/MainViewModel.kt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index a6016da4..8103aa49 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -60,13 +60,12 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
val keyword = mainRepository.getUserTopic()
_myTopics.value = keyword
- val token = Token(
+ when (val result = mainRepository.setUserToken(Token(
token = FCMToken.value.toString(),
department = myDepartment.value ?: "",
topics = myTopics.value ?: emptyList()
)
-
- when (val result = mainRepository.setUserToken(token)) {
+ )) {
is NetworkResult.Success -> {
mainRepository.setIsFirstLaunch(false)
_isLoading.postValue(false)
From 32629b714c5023e5b29777da0359293722293414 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Mon, 1 Apr 2024 01:28:53 +0900
Subject: [PATCH 16/21] =?UTF-8?q?refactor=20:=20token=20=EB=B0=9C=ED=96=89?=
=?UTF-8?q?=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/remote/service/TokenService.kt | 3 +-
.../data/repository/MainRepository.kt | 11 ++++-
.../ui/view/main/MainActivity.kt | 15 ++++++-
.../ui/view/main/MainViewModel.kt | 41 ++++++++++++-------
4 files changed, 50 insertions(+), 20 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
index bcc753e0..5e4fd354 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
@@ -1,10 +1,9 @@
package com.dongyang.android.youdongknowme.data.remote.service
+import android.media.session.MediaSession
import com.dongyang.android.youdongknowme.data.remote.entity.Token
import retrofit2.http.Body
import retrofit2.http.POST
-import retrofit2.http.Path
-import retrofit2.http.Query
interface TokenService {
@POST("token/v1/dmu/initToken")
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
index 83df601e..a78b79dc 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/repository/MainRepository.kt
@@ -2,7 +2,6 @@ package com.dongyang.android.youdongknowme.data.repository
import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.data.local.dao.KeywordDao
-import com.dongyang.android.youdongknowme.data.remote.entity.Token
import com.dongyang.android.youdongknowme.data.remote.service.TokenService
import com.dongyang.android.youdongknowme.standard.network.ErrorResponseHandler
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
@@ -27,8 +26,16 @@ class MainRepository(
return subscribedTopic.map { it.englishName }
}
+ fun getFCMToken(): String {
+ return SharedPreference.getFCMToken()
+ }
+
+ fun setFCMToken(token: String) {
+ SharedPreference.setFcmToken(token)
+ }
+
suspend fun setUserToken(
- data: Token
+ data: com.dongyang.android.youdongknowme.data.remote.entity.Token
): NetworkResult {
return try {
val response = RetrofitObject.getNetwork().create(TokenService::class.java)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index b1457ce7..0a9f4c0a 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -10,7 +10,9 @@ import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.databinding.ActivityMainBinding
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.ui.view.util.KeepStateNavigator
+import com.google.firebase.messaging.FirebaseMessaging
import org.koin.androidx.viewmodel.ext.android.viewModel
+import timber.log.Timber
/* 메인 액티비티 */
class MainActivity : BaseActivity() {
@@ -36,7 +38,7 @@ class MainActivity : BaseActivity() {
viewModel.checkFirstLaunch()
if (viewModel.isFirstLaunch.value == true) {
- viewModel.issuedToken()
+ getFcmToken()
}
}
@@ -51,6 +53,17 @@ class MainActivity : BaseActivity() {
})
}
+ private fun getFcmToken() {
+ FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
+ if (task.isSuccessful) {
+ viewModel.setFCMToken(task.result)
+ viewModel.setInitToken()
+ } else {
+ return@addOnCompleteListener
+ }
+ }
+ }
+
companion object {
fun createIntent(context: Context): Intent {
return Intent(context, MainActivity::class.java)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index 8103aa49..a1827967 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -3,13 +3,14 @@ package com.dongyang.android.youdongknowme.ui.view.main
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
+import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.data.remote.entity.Token
import com.dongyang.android.youdongknowme.data.repository.MainRepository
import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
import com.dongyang.android.youdongknowme.ui.view.util.Event
-import com.google.firebase.messaging.FirebaseMessaging
import kotlinx.coroutines.launch
+import timber.log.Timber
class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel() {
private val _errorState: MutableLiveData> = MutableLiveData()
@@ -33,33 +34,36 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
private val _isFirstLaunch: MutableLiveData = MutableLiveData(false)
val isFirstLaunch: LiveData get() = _isFirstLaunch
+ init{
+ getUserDepart()
+ getUserTopic()
+ }
+
fun checkFirstLaunch() {
if (mainRepository.getIsFirstLaunch()) {
_isFirstLaunch.value = true
}
}
- fun issuedToken() {
- FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
- if (task.isSuccessful) {
- _FCMToken.value = task.result
- setInitToken()
- } else {
- _isError.value = true
- }
+ fun setFCMToken(token: String){
+ mainRepository.setFCMToken(token)
+ _FCMToken.postValue(token)
+ }
+
+ fun getUserDepart(){
+ _myDepartment.value = mainRepository.getUserDepartment()
+ }
+
+ fun getUserTopic(){
+ viewModelScope.launch {
+ _myTopics.value = mainRepository.getUserTopic()
}
}
fun setInitToken() {
_isLoading.postValue(true)
- val department = mainRepository.getUserDepartment()
- _myDepartment.postValue(department)
-
viewModelScope.launch {
- val keyword = mainRepository.getUserTopic()
- _myTopics.value = keyword
-
when (val result = mainRepository.setUserToken(Token(
token = FCMToken.value.toString(),
department = myDepartment.value ?: "",
@@ -68,8 +72,15 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
)) {
is NetworkResult.Success -> {
mainRepository.setIsFirstLaunch(false)
+ _isFirstLaunch.postValue(false)
_isLoading.postValue(false)
_isError.postValue(false)
+
+ Timber.tag("initToken").d(Token(
+ token = FCMToken.value.toString(),
+ department = myDepartment.value ?: "",
+ topics = myTopics.value ?: emptyList()
+ ).toString())
}
is NetworkResult.Error -> {
From c39cc430df7b93bd7e00d565d5dc68151285dfda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Mon, 1 Apr 2024 01:29:52 +0900
Subject: [PATCH 17/21] =?UTF-8?q?refactor=20:=20=EB=AF=B8=EC=82=AC?=
=?UTF-8?q?=EC=9A=A9=20=ED=95=A8=EC=88=98=20=EB=B0=8F=20=EC=A4=84=EB=B0=94?=
=?UTF-8?q?=EA=BF=88=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/data/remote/service/TokenService.kt | 1 -
.../youdongknowme/ui/view/depart/OnboardingDepartActivity.kt | 3 +--
.../android/youdongknowme/ui/view/main/MainViewModel.kt | 1 -
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
index 5e4fd354..16be4721 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/remote/service/TokenService.kt
@@ -1,6 +1,5 @@
package com.dongyang.android.youdongknowme.data.remote.service
-import android.media.session.MediaSession
import com.dongyang.android.youdongknowme.data.remote.entity.Token
import retrofit2.http.Body
import retrofit2.http.POST
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
index c99fdb3e..26c42af1 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/depart/OnboardingDepartActivity.kt
@@ -53,8 +53,7 @@ class OnboardingDepartActivity : BaseActivity
Date: Mon, 1 Apr 2024 01:33:30 +0900
Subject: [PATCH 18/21] =?UTF-8?q?refactor=20:=20intent=20=EB=B0=A9?=
=?UTF-8?q?=EC=8B=9D=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/splash/SplashActivity.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
index ee008372..28addd73 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/splash/SplashActivity.kt
@@ -26,7 +26,7 @@ class SplashActivity : BaseActivity() {
override val viewModel: SplashViewModel by viewModel()
private var intentJob: Job? = null
- private lateinit var intent: Intent
+ private var intent = OnboardingDepartActivity.createIntent(this@SplashActivity)
override fun initStartView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
@@ -47,7 +47,7 @@ class SplashActivity : BaseActivity() {
if (viewModel.isFirstLaunch.value == true) {
permissionCheck()
} else {
- val intent = MainActivity.createIntent(this@SplashActivity)
+ intent = MainActivity.createIntent(this@SplashActivity)
startActivity(intent)
finish()
}
From 46f51cbbb64785a64416c6e677c5a16a11647008 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Mon, 1 Apr 2024 01:34:24 +0900
Subject: [PATCH 19/21] =?UTF-8?q?refactor=20:=20=EB=AF=B8=EC=82=AC?=
=?UTF-8?q?=EC=9A=A9=20Timber=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/main/MainActivity.kt | 1 -
.../android/youdongknowme/ui/view/main/MainViewModel.kt | 7 -------
2 files changed, 8 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 0a9f4c0a..8a4d64fe 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -12,7 +12,6 @@ import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.ui.view.util.KeepStateNavigator
import com.google.firebase.messaging.FirebaseMessaging
import org.koin.androidx.viewmodel.ext.android.viewModel
-import timber.log.Timber
/* 메인 액티비티 */
class MainActivity : BaseActivity() {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index bce6df33..21eedea0 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -9,7 +9,6 @@ import com.dongyang.android.youdongknowme.standard.base.BaseViewModel
import com.dongyang.android.youdongknowme.standard.network.NetworkResult
import com.dongyang.android.youdongknowme.ui.view.util.Event
import kotlinx.coroutines.launch
-import timber.log.Timber
class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel() {
private val _errorState: MutableLiveData> = MutableLiveData()
@@ -74,12 +73,6 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
_isFirstLaunch.postValue(false)
_isLoading.postValue(false)
_isError.postValue(false)
-
- Timber.tag("initToken").d(Token(
- token = FCMToken.value.toString(),
- department = myDepartment.value ?: "",
- topics = myTopics.value ?: emptyList()
- ).toString())
}
is NetworkResult.Error -> {
From 4673c46968702e444aaacc8660d89360a965a00d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Mon, 1 Apr 2024 16:43:12 +0900
Subject: [PATCH 20/21] =?UTF-8?q?refactor=20:=20=ED=95=A8=EC=88=98=20priva?=
=?UTF-8?q?te=20=EC=B2=98=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/youdongknowme/ui/view/main/MainViewModel.kt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
index 21eedea0..c9cc52b3 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainViewModel.kt
@@ -48,11 +48,11 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
_FCMToken.postValue(token)
}
- fun getUserDepart(){
+ private fun getUserDepart(){
_myDepartment.value = mainRepository.getUserDepartment()
}
- fun getUserTopic(){
+ private fun getUserTopic(){
viewModelScope.launch {
_myTopics.value = mainRepository.getUserTopic()
}
From 0925c6884464cbd67abbd40651e0822f87658c91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=A1=B0=ED=9D=AC=EC=9A=B0?=
<84004687+huiwoo-jo@users.noreply.github.com>
Date: Mon, 1 Apr 2024 17:00:44 +0900
Subject: [PATCH 21/21] =?UTF-8?q?fix=20:=20=EC=B6=A9=EB=8F=8C=20=EC=98=A4?=
=?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../youdongknowme/data/local/SharedPreference.kt | 5 -----
.../youdongknowme/ui/view/main/MainActivity.kt | 13 +++----------
2 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt b/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
index 5b9aceb7..64fad322 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/data/local/SharedPreference.kt
@@ -56,9 +56,4 @@ object SharedPreference {
private const val FCM_TOKEN = "NO_TOKEN"
fun getFCMToken(): String = pref?.getString(FCM_TOKEN, "0") ?: "0"
fun setFcmToken(token: String) = pref?.edit()?.putString(FCM_TOKEN, token)?.apply()
-
- // FCM 토큰
- private const val FCM_TOKEN = "NO_TOKEN"
- fun getFCMToken(): String = pref?.getString(FCM_TOKEN, "0") ?: "0"
- fun setFcmToken(token: String) = pref?.edit()?.putString(FCM_TOKEN, token)?.apply()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
index 8a4d64fe..3a09c085 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/main/MainActivity.kt
@@ -10,6 +10,7 @@ import com.dongyang.android.youdongknowme.data.local.SharedPreference
import com.dongyang.android.youdongknowme.databinding.ActivityMainBinding
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.ui.view.util.KeepStateNavigator
+import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.messaging.FirebaseMessaging
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -40,17 +41,9 @@ class MainActivity : BaseActivity() {
getFcmToken()
}
}
-
- private fun getFcmToken() {
- FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
- if (!task.isSuccessful) {
- return@OnCompleteListener
- }
- val token = task.result
- SharedPreference.setFcmToken(token)
- })
- }
+ override fun initDataBinding() = Unit
+ override fun initAfterBinding() = Unit
private fun getFcmToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->