diff --git a/android/app/src/main/java/com/devlab/app/ui/login/LoginViewModel.kt b/android/app/src/main/java/com/devlab/app/ui/login/LoginViewModel.kt index 9764107..31aa938 100644 --- a/android/app/src/main/java/com/devlab/app/ui/login/LoginViewModel.kt +++ b/android/app/src/main/java/com/devlab/app/ui/login/LoginViewModel.kt @@ -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)) diff --git a/public/sysadmin.apk b/public/sysadmin.apk index 4884f61..2a1a304 100644 Binary files a/public/sysadmin.apk and b/public/sysadmin.apk differ