feat/fcm-notifications #67

Closed
rafaga21 wants to merge 28 commits from feat/fcm-notifications into master
2 changed files with 19 additions and 4 deletions
Showing only changes of commit e37ff8aa9f - Show all commits

View File

@@ -68,7 +68,8 @@ dependencies {
implementation(platform("com.google.firebase:firebase-bom:34.14.1")) implementation(platform("com.google.firebase:firebase-bom:34.14.1"))
implementation("com.google.firebase:firebase-analytics") implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-messaging-ktx:24.1.0") implementation("com.google.firebase:firebase-messaging-ktx")
implementation("com.google.firebase:firebase-common-ktx")
debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest") debugImplementation("androidx.compose.ui:ui-test-manifest")

View File

@@ -1,5 +1,6 @@
package com.devlab.app.ui.login package com.devlab.app.ui.login
import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.devlab.app.ServerManagerApp import com.devlab.app.ServerManagerApp
@@ -43,6 +44,7 @@ class LoginViewModel : ViewModel() {
isConnected = true, isConnected = true,
username = savedUsername username = savedUsername
) )
registerFcmToken()
} }
} }
} }
@@ -109,7 +111,10 @@ class LoginViewModel : ViewModel() {
fcmToken = withContext(Dispatchers.IO) { fcmToken = withContext(Dispatchers.IO) {
try { try {
Tasks.await(FirebaseMessaging.getInstance().token) Tasks.await(FirebaseMessaging.getInstance().token)
} catch (_: Exception) { "" } } catch (e: Exception) {
Log.e(TAG, "Failed to fetch FCM token from Firebase: ${e.message}")
""
}
} }
if (fcmToken.isNotBlank()) { if (fcmToken.isNotBlank()) {
prefs.saveFcmToken(fcmToken) prefs.saveFcmToken(fcmToken)
@@ -118,7 +123,16 @@ class LoginViewModel : ViewModel() {
if (fcmToken.isNotBlank()) { if (fcmToken.isNotBlank()) {
val service = RetrofitClient.getApiService() val service = RetrofitClient.getApiService()
service.registerFcmToken(FcmRegisterRequest(fcmToken)) service.registerFcmToken(FcmRegisterRequest(fcmToken))
Log.d(TAG, "FCM token registered with backend")
} else {
Log.w(TAG, "FCM token is blank, skipping registration")
} }
} catch (_: Exception) { } } catch (e: Exception) {
Log.e(TAG, "FCM token registration failed: ${e.message}")
}
} }
}
companion object {
private const val TAG = "LoginViewModel"
}
}