fix: actively fetch FCM token on login if not cached #63

Merged
rafaga21 merged 1 commits from feat/dashboard-aggregated-chart into master 2026-06-13 13:24:23 -04:00
2 changed files with 15 additions and 1 deletions

View File

@@ -8,10 +8,14 @@ import com.devlab.app.data.api.SessionManager
import com.devlab.app.data.repository.AuthRepository
import com.devlab.app.data.model.FcmRegisterRequest
import com.devlab.app.util.PreferencesManager
import com.google.android.gms.tasks.Tasks
import com.google.firebase.messaging.FirebaseMessaging
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.coroutines.Dispatchers
data class LoginUiState(
val username: String = "",
@@ -100,7 +104,17 @@ class LoginViewModel : ViewModel() {
private suspend fun registerFcmToken() {
try {
val fcmToken = prefs.getFcmToken()
var fcmToken = prefs.getFcmToken()
if (fcmToken.isBlank()) {
fcmToken = withContext(Dispatchers.IO) {
try {
Tasks.await(FirebaseMessaging.getInstance().token)
} catch (_: Exception) { "" }
}
if (fcmToken.isNotBlank()) {
prefs.saveFcmToken(fcmToken)
}
}
if (fcmToken.isNotBlank()) {
val service = RetrofitClient.getApiService()
service.registerFcmToken(FcmRegisterRequest(fcmToken))

Binary file not shown.