feat/fcm-notifications #67
@@ -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")
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user