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 ->