update sent fcmtoken

This commit is contained in:
shaulascr
2025-05-20 09:14:13 +07:00
parent e41f599814
commit 0c49be5ae6
4 changed files with 22 additions and 10 deletions

View File

@ -3,6 +3,6 @@ package com.alya.ecommerce_serang.data.api.dto
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
data class FcmReq ( data class FcmReq (
@SerializedName("fcm_req") @SerializedName("fcm_token")
val fcmToken: String?= null val fcmToken: String?= null
) )

View File

@ -29,7 +29,7 @@ class LoginActivity : AppCompatActivity() {
BaseViewModelFactory { BaseViewModelFactory {
val apiService = ApiConfig.getUnauthenticatedApiService() val apiService = ApiConfig.getUnauthenticatedApiService()
val userRepository = UserRepository(apiService) val userRepository = UserRepository(apiService)
LoginViewModel(userRepository) LoginViewModel(userRepository, this)
} }
} }
@ -46,7 +46,6 @@ class LoginActivity : AppCompatActivity() {
FirebaseApp.initializeApp(this) FirebaseApp.initializeApp(this)
// Request FCM token at app startup // Request FCM token at app startup
retrieveFCMToken()
} }
private fun setupListeners() { private fun setupListeners() {
@ -70,6 +69,7 @@ class LoginActivity : AppCompatActivity() {
val sessionManager = SessionManager(this) val sessionManager = SessionManager(this)
sessionManager.saveToken(accessToken) sessionManager.saveToken(accessToken)
retrieveFCMToken()
// sessionManager.saveUserId(response.userId) // sessionManager.saveUserId(response.userId)
Toast.makeText(this, "Login Successful", Toast.LENGTH_SHORT).show() Toast.makeText(this, "Login Successful", Toast.LENGTH_SHORT).show()

View File

@ -1,5 +1,6 @@
package com.alya.ecommerce_serang.utils.viewmodel package com.alya.ecommerce_serang.utils.viewmodel
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
@ -8,11 +9,14 @@ import androidx.lifecycle.viewModelScope
import com.alya.ecommerce_serang.data.api.dto.FcmReq import com.alya.ecommerce_serang.data.api.dto.FcmReq
import com.alya.ecommerce_serang.data.api.response.auth.FcmTokenResponse import com.alya.ecommerce_serang.data.api.response.auth.FcmTokenResponse
import com.alya.ecommerce_serang.data.api.response.auth.LoginResponse import com.alya.ecommerce_serang.data.api.response.auth.LoginResponse
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.api.retrofit.ApiService
import com.alya.ecommerce_serang.data.repository.Result import com.alya.ecommerce_serang.data.repository.Result
import com.alya.ecommerce_serang.data.repository.UserRepository import com.alya.ecommerce_serang.data.repository.UserRepository
import com.alya.ecommerce_serang.utils.SessionManager
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class LoginViewModel(private val repository: UserRepository) : ViewModel() { class LoginViewModel(private val repository: UserRepository, private val context: Context) : ViewModel() {
private val _loginState = MutableLiveData<Result<LoginResponse>>() private val _loginState = MutableLiveData<Result<LoginResponse>>()
val loginState: LiveData<Result<LoginResponse>> get() = _loginState val loginState: LiveData<Result<LoginResponse>> get() = _loginState
@ -23,6 +27,12 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() {
private val _message = MutableLiveData<String>() private val _message = MutableLiveData<String>()
val message: LiveData<String> = _message val message: LiveData<String> = _message
private val sessionManager by lazy { SessionManager(context) }
private fun getAuthenticatedApiService(): ApiService {
return ApiConfig.getApiService(sessionManager)
}
fun login(email: String, password: String) { fun login(email: String, password: String) {
viewModelScope.launch { viewModelScope.launch {
_loginState.value = Result.Loading _loginState.value = Result.Loading
@ -37,10 +47,12 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() {
try { try {
// Call the repository function to request OTP // Call the repository function to request OTP
val response: FcmTokenResponse = repository.sendFcm(token) val authenticatedApiService = getAuthenticatedApiService()
val authenticatedOrderRepo = UserRepository(authenticatedApiService)
val response: FcmTokenResponse = authenticatedOrderRepo.sendFcm(token)
// Log and store success message // Log and store success message
Log.d("RegisterViewModel", "OTP Response: ${response.message}") Log.d("LoginViewModel", "OTP Response: ${response.message}")
_message.value = response.message ?: "berhasil" // Store the message for UI feedback _message.value = response.message ?: "berhasil" // Store the message for UI feedback
// Update state to indicate success // Update state to indicate success
@ -52,7 +64,7 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() {
_message.value = exception.localizedMessage ?: "Failed to request OTP" _message.value = exception.localizedMessage ?: "Failed to request OTP"
// Log the error for debugging // Log the error for debugging
Log.e("RegisterViewModel", "OTP request failed for: $token", exception) Log.e("LoginViewModel", "OTP request failed for: $token", exception)
} }
} }
} }

View File

@ -105,9 +105,9 @@ class RegisterViewModel(private val repository: UserRepository, private val orde
try { try {
// Call the repository function to request OTP // Call the repository function to request OTP
val authenticatedApiService = getAuthenticatedApiService() // val authenticatedApiService = getAuthenticatedApiService()
val authenticatedOrderRepo = UserRepository(authenticatedApiService) // val authenticatedOrderRepo = UserRepository(authenticatedApiService)
val response: OtpResponse = authenticatedOrderRepo.requestOtpRep(email) val response: OtpResponse = repository.requestOtpRep(email)
// Log and store success message // Log and store success message
Log.d("RegisterViewModel", "OTP Response: ${response.message}") Log.d("RegisterViewModel", "OTP Response: ${response.message}")