From dedc6f74b6bbfa321a85f5f089fb5a8c9987d4cd Mon Sep 17 00:00:00 2001 From: Mayank Sheoran Date: Thu, 20 Jul 2023 16:04:53 +0530 Subject: [PATCH] TP-35278 | separate doc download support in LoanAggreementV2Activity (#7191) * TP-35278 | first commit * TP-35278 | fix 1.0 --- .../response/FetchLoanAgreementResponse.kt | 3 ++- .../naviapp/network/retrofit/RetrofitService.kt | 3 ++- .../repositories/LoanAgreementRepository.kt | 4 ++-- .../viewmodels/LoanAgreementV2VM.kt | 4 ++-- .../dynamic/activity/LoanAgreementV2Activity.kt | 16 +++++++++++++++- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/naviapp/models/response/FetchLoanAgreementResponse.kt b/app/src/main/java/com/naviapp/models/response/FetchLoanAgreementResponse.kt index 131e3ea323..d11c69b056 100644 --- a/app/src/main/java/com/naviapp/models/response/FetchLoanAgreementResponse.kt +++ b/app/src/main/java/com/naviapp/models/response/FetchLoanAgreementResponse.kt @@ -18,9 +18,10 @@ data class FetchLoanAgreementResponse( data class Details( @SerializedName("uri") val uri: String?, @SerializedName("rawCopyUri") val rawUri: String?, + @SerializedName("documentName") val documentName: String? = null, @SerializedName("documentReferenceId") val documentReferenceId: String?, @SerializedName("sanctionLetter") val sanctionLetter: SanctionLetterDetails? = null, - @SerializedName("balanceTransferRequestLetter") val balanceTransferDoc: SanctionLetterDetails? = null + @SerializedName("balanceTransferRequestLetter") val balanceTransferDoc: SanctionLetterDetails? = null, ) data class SanctionLetterDetails( diff --git a/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt b/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt index 12bd6466b6..faf3237c28 100644 --- a/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt @@ -1378,7 +1378,8 @@ interface RetrofitService { @GET("/loan-origination-manager/loan-applications/{loanApplicationId}/v2/loan-agreement-view") suspend fun fetchLoanAgreementPollingDetails( - @Path("loanApplicationId") loanApplicationId: String + @Path("loanApplicationId") loanApplicationId: String, + @Query("documentType") documentType: String? = null ): Response> @GET("/litmus-proxy/v1/proxy/experiment") diff --git a/app/src/main/java/com/naviapp/personalloan/getloan/loanagreement/repositories/LoanAgreementRepository.kt b/app/src/main/java/com/naviapp/personalloan/getloan/loanagreement/repositories/LoanAgreementRepository.kt index 3204b36250..5cac1997f6 100644 --- a/app/src/main/java/com/naviapp/personalloan/getloan/loanagreement/repositories/LoanAgreementRepository.kt +++ b/app/src/main/java/com/naviapp/personalloan/getloan/loanagreement/repositories/LoanAgreementRepository.kt @@ -30,8 +30,8 @@ class LoanAgreementRepository : ResponseCallback() { suspend fun fetchLoanAgreementV2View(loanApplicationId: String) = apiResponseCallback(retrofitService().fetchLoanAgreementV2View(loanApplicationId)) - suspend fun fetchLoanAgreementPollingDetails(loanApplicationId: String) = - apiResponseCallback(retrofitService().fetchLoanAgreementPollingDetails(loanApplicationId)) + suspend fun fetchLoanAgreementPollingDetails(loanApplicationId: String, documentType: String? = null) = + apiResponseCallback(retrofitService().fetchLoanAgreementPollingDetails(loanApplicationId, documentType)) suspend fun fetchAsyncRequestDataForLoanAgreementPage(requestId: String) = apiResponseCallback(retrofitService().fetchAsyncRequestDataForLoanAgreementPage(requestId)) diff --git a/app/src/main/java/com/naviapp/personalloanrevamp/getloanRevamp/viewmodels/LoanAgreementV2VM.kt b/app/src/main/java/com/naviapp/personalloanrevamp/getloanRevamp/viewmodels/LoanAgreementV2VM.kt index eed41d0171..d49f55cffb 100644 --- a/app/src/main/java/com/naviapp/personalloanrevamp/getloanRevamp/viewmodels/LoanAgreementV2VM.kt +++ b/app/src/main/java/com/naviapp/personalloanrevamp/getloanRevamp/viewmodels/LoanAgreementV2VM.kt @@ -80,9 +80,9 @@ class LoanAgreementV2VM : BaseVM() { } } - fun fetchLoanAgreementPollingDetails(loanApplicationId: String) { + fun fetchLoanAgreementPollingDetails(loanApplicationId: String, documentType: String? = null) { coroutineScope.launch { - val response = repository.fetchLoanAgreementPollingDetails(loanApplicationId) + val response = repository.fetchLoanAgreementPollingDetails(loanApplicationId, documentType) if (response.isValidResponse()) { _loanAgreementPollingDetails.value = response.data } else { diff --git a/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/activity/LoanAgreementV2Activity.kt b/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/activity/LoanAgreementV2Activity.kt index 4fbffa261f..1087276f84 100644 --- a/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/activity/LoanAgreementV2Activity.kt +++ b/navi_pl_dynamic/src/main/java/com/navi/pl/dynamic/activity/LoanAgreementV2Activity.kt @@ -16,6 +16,7 @@ import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import com.google.android.play.core.splitcompat.SplitCompat +import com.navi.base.model.CtaData import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.orElse import com.navi.common.firebasedb.FirebaseStatusType @@ -45,16 +46,22 @@ class LoanAgreementV2Activity : BaseActivity(), NaviHeaderView.InteractionListen private var loanAgreementV2Data: FetchLoanAgreementV2Response? = null private val helpEventTracker by lazy { NaviAnalytics.naviAnalytics.Faq() } private val loanAgreementEventTracker by lazy { NaviAnalytics.naviAnalytics.LoanAgreement(screenName) } + private var documentType: String? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.pl_activity_loan_agreement_v2) super.setContentView(binding.root) + getCtaParameters() initError(viewModel, actionErrorV2Enabled = true) initListeners() initObserver() fetchLoanAgreementPollingDetails() } + private fun getCtaParameters() { + documentType = intent.extras?.getString(DOCUMENT_TYPE) + } + private fun initListeners() { binding.headerView.setOnInteractionListener(this) binding.sanctionLetterDownloader.setOnClickListener { @@ -90,6 +97,12 @@ class LoanAgreementV2Activity : BaseActivity(), NaviHeaderView.InteractionListen downloadUrl = loanAgreementV2Data?.content?.details?.balanceTransferDoc?.uri, destinationPath = BALANCE_TRANSFER_FILE_NAME, ) + loanAgreementV2Data?.content?.details?.documentName?.let { documentName -> + downloadDocuments( + downloadUrl = loanAgreementV2Data?.content?.details?.uri, + destinationPath = documentName, + ) + } } private fun initObserver() { @@ -190,7 +203,7 @@ class LoanAgreementV2Activity : BaseActivity(), NaviHeaderView.InteractionListen if(isDataPollingEnabled){ PreferenceManager.getStringPreference(LOAN_APPLICATION_ID)?.let { startShimmer() - viewModel.fetchLoanAgreementPollingDetails(it) + viewModel.fetchLoanAgreementPollingDetails(it, documentType) } } else{ @@ -242,6 +255,7 @@ class LoanAgreementV2Activity : BaseActivity(), NaviHeaderView.InteractionListen const val TAG = "LOAN_AGREEMENT_V2" const val SANCTION_LETTER_FILE_NAME = "Navi_Personal_loan_Sanction_letter" const val BALANCE_TRANSFER_FILE_NAME = "Balance_Transfer_Request_letter" + const val DOCUMENT_TYPE = "documentType" } override fun attachBaseContext(newBase: Context?) {