Skip to content

Commit

Permalink
refactor : token 발행 위치 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
huiwoo-jo committed Mar 31, 2024
1 parent 4423435 commit ef29b48
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<Unit> {
return try {
val response = RetrofitObject.getNetwork().create(TokenService::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import com.dongyang.android.youdongknowme.R
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<ActivityMainBinding, MainViewModel>() {
Expand All @@ -35,14 +37,25 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
viewModel.checkFirstLaunch()

if (viewModel.isFirstLaunch.value == true) {
viewModel.issuedToken()
getFcmToken()
}
}

override fun initDataBinding() = Unit

override fun initAfterBinding() = Unit

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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Event<Int>> = MutableLiveData()
Expand All @@ -33,33 +34,36 @@ class MainViewModel(private val mainRepository: MainRepository) : BaseViewModel(
private val _isFirstLaunch: MutableLiveData<Boolean> = MutableLiveData(false)
val isFirstLaunch: LiveData<Boolean> 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 ?: "",
Expand All @@ -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 -> {
Expand Down

0 comments on commit ef29b48

Please sign in to comment.