diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/RefreshTokenResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/RefreshTokenResponse.kt new file mode 100644 index 0000000..5c0cec5 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/RefreshTokenResponse.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +import Response + +data class RefreshTokenResponse( + var response: Response, + val Token: String +) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt index 23eef56..920e355 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt @@ -2,6 +2,7 @@ package com.nivesh.production.bajajfd.repositories import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.model.* +import okhttp3.RequestBody class MainRepository constructor(private val apiInterface: ApiInterface) { @@ -107,4 +108,7 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = apiInterface.paymentReQuery(getRatesRequest, token) + + suspend fun finaliseTokenResponse(requestBody: RequestBody) = + apiInterface.freshToken(requestBody) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index af50bde..e08f736 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -5,6 +5,7 @@ import android.app.Dialog import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.os.Bundle +import android.text.TextUtils import android.util.Log import android.view.View import android.view.WindowManager @@ -24,17 +25,26 @@ import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.fragment.* import com.nivesh.production.bajajfd.ui.providerfactory.* -import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.* import com.nivesh.production.bajajfd.util.Common.Companion.defaultShape import com.nivesh.production.bajajfd.util.Common.Companion.getDate import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation +import com.nivesh.production.bajajfd.util.Constants.Companion.KEY_LOGINTYPE +import com.nivesh.production.bajajfd.util.Constants.Companion.KEY_LOGIN_EMAIL +import com.nivesh.production.bajajfd.util.Constants.Companion.KEY_LOGIN_PASSWORD +import com.nivesh.production.bajajfd.util.Constants.Companion.KEY_LOGIN_SOCIALID import com.nivesh.production.bajajfd.util.Constants.Companion.token -import com.nivesh.production.bajajfd.util.ProgressUtil import com.nivesh.production.bajajfd.util.ProgressUtil.hideLoading import com.nivesh.production.bajajfd.util.ProgressUtil.showLoading -import com.nivesh.production.bajajfd.util.Resource +import com.nivesh.production.bajajfd.util.Utility.Companion.convert_sha256 +import com.nivesh.production.bajajfd.util.Utility.Companion.convert_sha256_2X +import com.nivesh.production.bajajfd.util.Utility.Companion.getDeviceInfo +import com.nivesh.production.bajajfd.util.Utils_Functions.Companion.getCurrentDateStamp import com.nivesh.production.bajajfd.viewModel.* +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject class BajajFdMainActivity : BaseActivity() { @@ -181,7 +191,7 @@ class BajajFdMainActivity : BaseActivity() { setViewPager(stepsCount) checkFDCKYCApi() } - // 650 -> refreshToken() + 650 -> refreshToken() else -> { showDialogValidation(this@BajajFdMainActivity, response.message) } @@ -205,6 +215,112 @@ class BajajFdMainActivity : BaseActivity() { } } + private fun refreshToken() { + if (!Common.isNetworkAvailable(this@BajajFdMainActivity)) { + return + } + var jsonObject: JSONObject? = null + val str2Hash: String? + var strDeviceID = "" + + try { + jsonObject = JSONObject() + jsonObject.put( + "Email_Mob", SharedPrefrenceDataMethods.getLoginEmail( + KEY_LOGIN_EMAIL, + applicationContext + ) + ) + + // jsonObject.put("Uid", SharedPrefrenceDataMethods.getLoginUser_Code(KEY_LOGINUSER_CODE, getApplicationContext())); + jsonObject.put( + "Uid", SharedPrefrenceDataMethods.getUserUid( + Constants.KEY_GET_USER_UID, + applicationContext + ) + ) + + jsonObject.put( + "Soc_Id", SharedPrefrenceDataMethods.getLogin_SOCIALID( + KEY_LOGIN_SOCIALID, + applicationContext + ) + ) + val ed = EncryptionDecryption() + val decryptString = ed.decrypt( + SharedPrefrenceDataMethods.getLoginPassword( + KEY_LOGIN_PASSWORD, + applicationContext + ) + ) + + val strTimeStamp = getCurrentDateStamp() + + if (SharedPrefrenceDataMethods.getLogin_Type(KEY_LOGINTYPE, applicationContext) + .equals("EMAIL",true) + ) { + val strsha256hex_password: String = convert_sha256(decryptString!!) + + str2Hash = convert_sha256_2X(strsha256hex_password + strTimeStamp) + } else { + str2Hash = "" + } + + val deviceInfo: DeviceInfo = getDeviceInfo(applicationContext) + strDeviceID = java.lang.String.valueOf(deviceInfo.device_id) + Log.e("strDeviceID", "-> $strDeviceID") + jsonObject.put("DeviceId", strDeviceID) + + val mediaType = "application/json; charset=utf-8".toMediaType() + val requestBody = jsonObject.toString().toRequestBody(mediaType) + viewModel.getRefreshToken(requestBody, this@BajajFdMainActivity) + + (this@BajajFdMainActivity).viewModel.getFreshTokenMutableData.observe(this){ response -> + when (response){ + is Resource.Success -> { + val refreshTokenResponse: RefreshTokenResponse = + Gson().fromJson(response.data?.toString(),RefreshTokenResponse::class.java) + + if (!TextUtils.isEmpty( + refreshTokenResponse.Token + ) + ) { + SharedPrefrenceDataMethods.setToken( + this, + refreshTokenResponse.Token + ) + } + if (refreshTokenResponse.response.StatusCode == 200 + ) { +// getSubBroker_Encrypt(LoginCode, Api.Subbroker) + getClientDetailsApi(stepCount) + } + } + is Resource.Error -> { + + } + is Resource.Loading -> { + + } + is Resource.DataError ->{ + + } + } + } + + + } catch (e: Exception) { + e.printStackTrace() +// Utility.saveExceptionLog( +// mActivity, +// BaseActivity.TAG, +// Throwable().stackTrace[0].lineNumber.toString(), +// e +// ) + } + + } + private fun setViewPager(stepsCount: Int) { // steps setting setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape(), stepsCount) @@ -329,7 +445,7 @@ class BajajFdMainActivity : BaseActivity() { fdInvestmentDetails.CustomerType = "" } - // 650 -> refreshToken() +// 650 -> refreshToken() else -> { showDialogValidation( this@BajajFdMainActivity, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt index 8c89cd8..4a7e2d8 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt @@ -15,5 +15,6 @@ class Constants() { const val KEY_VERSION_CODE = "Version Code" const val KEY_GCM_APP_ID = "Gcm App Id" val GetFreshToken_V2_Encrypt: String = BASE_URL + "GetToken_V2" + const val KEY_GET_USER_UID = "Get User Uid Code" } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/SharedPrefrenceDataMethods.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/SharedPrefrenceDataMethods.kt index 2085276..ec8c5c7 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/SharedPrefrenceDataMethods.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/SharedPrefrenceDataMethods.kt @@ -61,5 +61,15 @@ class SharedPrefrenceDataMethods { editor?.putString("token", token) editor?.apply() } + + fun getUserUid(Name: String?, context: Context?): String? { + val preferences = context?.let { PreferenceManager.getDefaultSharedPreferences(it) } + return preferences?.getString(Name, "") + } + + fun getLogin_SOCIALID(Name: String?, context: Context?): String? { + val preferences = context?.let { PreferenceManager.getDefaultSharedPreferences(it) } + return preferences?.getString(Name, "") + } } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Utility.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Utility.kt index e8597de..2506b9e 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Utility.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Utility.kt @@ -2,6 +2,7 @@ package com.nivesh.production.bajajfd.util import android.Manifest import android.annotation.SuppressLint +import android.app.Activity import android.content.Context import android.content.pm.PackageManager import android.os.Build diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt index c323cb7..61b714a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt @@ -1,6 +1,7 @@ package com.nivesh.production.bajajfd.viewModel import android.app.Activity +import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -13,6 +14,7 @@ import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch +import okhttp3.RequestBody open class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { @@ -45,6 +47,7 @@ open class BajajFDViewModel(private val mainRepository: MainRepository) : ViewMo if (Common.isNetworkAvailable(activity)) { getFDKYCMutableData.postValue(Resource.Loading()) val response = mainRepository.checkFDKYCRequest(requestBody, token) + Log.e("check_response",response.body().toString()) getFDKYCMutableData.postValue(handleResponse(response)) } } @@ -377,4 +380,14 @@ open class BajajFDViewModel(private val mainRepository: MainRepository) : ViewMo } } + val getFreshTokenMutableData: MutableLiveData> = MutableLiveData() + fun getRefreshToken(requestBody: RequestBody, + activity: Activity) = viewModelScope.launch(handleError(activity)){ + if(Common.isNetworkAvailable(activity)){ + getFreshTokenMutableData.postValue(Resource.Loading()) + val response = mainRepository.finaliseTokenResponse(requestBody) + getFreshTokenMutableData.postValue(handleResponse(response)) + } + } + } \ No newline at end of file