diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/FcmReq.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/FcmReq.kt index 0f64faf..0c1a9d7 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/FcmReq.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/FcmReq.kt @@ -3,6 +3,6 @@ package com.alya.ecommerce_serang.data.api.dto import com.google.gson.annotations.SerializedName data class FcmReq ( - @SerializedName("fcm_req") + @SerializedName("fcm_token") val fcmToken: String?= null ) \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/LoginActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/auth/LoginActivity.kt index 2b2a48f..56e6213 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/LoginActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/auth/LoginActivity.kt @@ -29,7 +29,7 @@ class LoginActivity : AppCompatActivity() { BaseViewModelFactory { val apiService = ApiConfig.getUnauthenticatedApiService() val userRepository = UserRepository(apiService) - LoginViewModel(userRepository) + LoginViewModel(userRepository, this) } } @@ -46,7 +46,6 @@ class LoginActivity : AppCompatActivity() { FirebaseApp.initializeApp(this) // Request FCM token at app startup - retrieveFCMToken() } private fun setupListeners() { @@ -70,6 +69,7 @@ class LoginActivity : AppCompatActivity() { val sessionManager = SessionManager(this) sessionManager.saveToken(accessToken) + retrieveFCMToken() // sessionManager.saveUserId(response.userId) Toast.makeText(this, "Login Successful", Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/LoginViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/LoginViewModel.kt index 0bc6014..e4a6592 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/LoginViewModel.kt @@ -1,5 +1,6 @@ package com.alya.ecommerce_serang.utils.viewmodel +import android.content.Context import android.util.Log import androidx.lifecycle.LiveData 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.response.auth.FcmTokenResponse 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.UserRepository +import com.alya.ecommerce_serang.utils.SessionManager 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>() val loginState: LiveData> get() = _loginState @@ -23,6 +27,12 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() { private val _message = MutableLiveData() val message: LiveData = _message + private val sessionManager by lazy { SessionManager(context) } + + private fun getAuthenticatedApiService(): ApiService { + return ApiConfig.getApiService(sessionManager) + } + fun login(email: String, password: String) { viewModelScope.launch { _loginState.value = Result.Loading @@ -37,10 +47,12 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() { try { // 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.d("RegisterViewModel", "OTP Response: ${response.message}") + Log.d("LoginViewModel", "OTP Response: ${response.message}") _message.value = response.message ?: "berhasil" // Store the message for UI feedback // Update state to indicate success @@ -52,7 +64,7 @@ class LoginViewModel(private val repository: UserRepository) : ViewModel() { _message.value = exception.localizedMessage ?: "Failed to request OTP" // Log the error for debugging - Log.e("RegisterViewModel", "OTP request failed for: $token", exception) + Log.e("LoginViewModel", "OTP request failed for: $token", exception) } } } diff --git a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterViewModel.kt index 9a47cc0..90c3b5d 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterViewModel.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterViewModel.kt @@ -105,9 +105,9 @@ class RegisterViewModel(private val repository: UserRepository, private val orde try { // Call the repository function to request OTP - val authenticatedApiService = getAuthenticatedApiService() - val authenticatedOrderRepo = UserRepository(authenticatedApiService) - val response: OtpResponse = authenticatedOrderRepo.requestOtpRep(email) +// val authenticatedApiService = getAuthenticatedApiService() +// val authenticatedOrderRepo = UserRepository(authenticatedApiService) + val response: OtpResponse = repository.requestOtpRep(email) // Log and store success message Log.d("RegisterViewModel", "OTP Response: ${response.message}")