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:
@@ -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.
Reference in New Issue
Block a user