feat: Firebase Cloud Messaging push notifications #66

Merged
rafaga21 merged 7 commits from feat/fcm-notifications into master 2026-06-13 14:05:44 -04:00
2 changed files with 15 additions and 1 deletions
Showing only changes of commit e1e68f5f11 - Show all commits

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.