Merge pull request 'fix: actively fetch FCM token on login if not cached' (#63) from feat/dashboard-aggregated-chart into master

Reviewed-on: #63
This commit was merged in pull request #63.
This commit is contained in:
2026-06-13 13:24:22 -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.repository.AuthRepository
import com.devlab.app.data.model.FcmRegisterRequest import com.devlab.app.data.model.FcmRegisterRequest
import com.devlab.app.util.PreferencesManager 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.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.coroutines.Dispatchers
data class LoginUiState( data class LoginUiState(
val username: String = "", val username: String = "",
@@ -100,7 +104,17 @@ class LoginViewModel : ViewModel() {
private suspend fun registerFcmToken() { private suspend fun registerFcmToken() {
try { 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()) { if (fcmToken.isNotBlank()) {
val service = RetrofitClient.getApiService() val service = RetrofitClient.getApiService()
service.registerFcmToken(FcmRegisterRequest(fcmToken)) service.registerFcmToken(FcmRegisterRequest(fcmToken))

Binary file not shown.