Merge pull request #2407 from medici/bug/aa-account-discovery

Bug/aa account discovery
This commit is contained in:
rahul bhat
2022-02-07 18:20:25 +05:30
committed by GitHub Enterprise
6 changed files with 58 additions and 10 deletions

View File

@@ -57,6 +57,7 @@ class AggregatorCheckBoxAdapter(
holder.binding.aggregatorBankName.setOnClickListener {
//Allow user to interract only if account is not linked previously
holder.binding.aaBankNameIv.isChecked = !holder.binding.aaBankNameIv.isChecked
oneMoneyAccounts[position].isChecked = !oneMoneyAccounts[position].isChecked
val tag = holder.binding.aaBankNameIv.tag
if (tag is Account) {
updateCheckedUi()
@@ -77,7 +78,14 @@ class AggregatorCheckBoxAdapter(
holder.binding.tagView.visibility = View.GONE
holder.binding.aggregatorBankName.isClickable = true
holder.binding.aaBankNameIv.isEnabled = true
holder.binding.aaBankNameIv.isChecked = false
holder.binding.aaBankNameIv.isChecked = oneMoneyAccounts[position].isChecked
if (holder.binding.aaBankNameIv.isChecked) {
val tag = holder.binding.aaBankNameIv.tag
if (tag is Account) {
updateCheckedUi()
sharedVM.addSelectedAccountData(tag)
}
}
}
updateCheckedUi()
}

View File

@@ -22,6 +22,7 @@ class AggregatorFipAdapter(
private val fipList = oneMoneyFips
private var lastSelectedPosition = 0
override fun onCreateViewHolder(
parent: ViewGroup,
@@ -58,6 +59,14 @@ class AggregatorFipAdapter(
holder.binding.showMaskedNumTv.text = fipList[position].data.maskedAccNumber
holder.binding.fipBankType.text = fipList[position].data.fiType
holder.binding.fipBankNameIv.tag = fipList[position]
if(lastSelectedPosition == position) {
holder.binding.fipBankNameIv.isChecked = true
lastSelectedPosition = -1
val tag = holder.binding.fipBankNameIv.tag
if (tag is Account) {
sharedVM.addConsentAccountData(tag)
}
}
updateCheckedUi()
context?.let {
val logoUrl = sharedVM.fipBankDetail.value?.get(fipList[position].data.fipId)?.logoUrl

View File

@@ -9,6 +9,7 @@ import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import com.navi.common.model.CtaData
import com.navi.common.sharedpref.PreferenceManager
import com.navi.common.utils.CommonUtils
import com.navi.insurance.models.request.FlagUpdateRequest
import com.naviapp.R
import com.naviapp.analytics.utils.NaviAnalytics
@@ -59,6 +60,7 @@ import com.onemoney.sdk.models.output.ConsentDetailsResponse
import com.onemoney.sdk.models.output.FipList
import com.onemoney.sdk.models.output.LoginOtpResponse
import timber.log.Timber
import com.onemoney.sdk.models.input.InputIdentifier
class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, BackListener,
DialogCancelListener, BottomSheetListener {
@@ -156,10 +158,12 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
private fun initUi() {
binding.titleTv.visibility = View.VISIBLE
if (bankName.isNullOrEmpty()) {
binding.bankInfoItem.root.visibility = View.GONE
binding.bankInfoItem.aaBankNameIv.visibility = View.GONE
binding.bankInfoItem.bankNameTv.visibility = View.GONE
binding.bankInfoItem.showBankNameTv.visibility = View.GONE
} else {
binding.bankInfoItem.root.visibility = View.VISIBLE
binding.bankInfoItem.aaBankNameIv.visibility = View.VISIBLE
binding.bankInfoItem.bankNameTv.text = bankName
binding.bankInfoItem.bankNameTv.visibility = View.VISIBLE
@@ -203,18 +207,40 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
showLoader()
fetchLinkedAccount(
onSuccess = {
val linkedAccountsForFip = sharedVM.linkedAccounts.value
val linkedAccountsForFip = sharedVM.linkedAccountsForFip.value
if (linkedAccountsForFip.isNullOrEmpty().not()) {
showConsentScreen(false)
} else {
fetchDiscoveredAccounts()
discoverAccounts()
}
},
onFailure = {
fetchDiscoveredAccounts()
discoverAccounts()
})
}
private fun discoverAccounts() {
showLoader()
val identifier = InputIdentifier()
identifier.category = Constants.CONSENT_IDENTIFIER_CATEGORY
identifier.type = Constants.CONSENT_IDENTIFIER_TYPE
identifier.value = CommonUtils.getPhoneNumber()
val identifiers: MutableList<InputIdentifier> = ArrayList()
identifiers.add(identifier)
val fipId = sharedVM.consentResponseData.value?.fipId.orEmpty()
onemoney?.discoverAccounts(identifiers, fipId, object : AccountDetailsListener {
override fun onSuccess(accountList: MutableList<Account>?) {
hideLoader()
fetchDiscoveredAccounts()
}
override fun onFailure(onemoneyError: OnemoneyError) {
hideLoader()
showErrorScreen(getAggregatorErrorData())
}
})
}
private fun fetchDiscoveredAccounts() {
showLoader()
onemoney?.getDiscoveredAccounts(object : AccountDetailsListener {
@@ -459,6 +485,7 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
// refresh content with consent details
// param: fetchLinkedAccount controls whether to get fresh linked account list from onemoney or not.
private fun showConsentScreen(fetchLinkedAccount: Boolean = false) {
binding.bankInfoItem.root.visibility = View.GONE
binding.bankInfoItem.aaBankNameIv.visibility = View.INVISIBLE
binding.bankInfoItem.bankNameTv.visibility = View.INVISIBLE
binding.bankInfoItem.showBankNameTv.visibility = View.INVISIBLE
@@ -523,6 +550,7 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
//on back press
private fun showLinkingScreen() {
binding.bankInfoItem.root.visibility = View.VISIBLE
binding.bankInfoItem.aaBankNameIv.visibility = View.VISIBLE
binding.bankInfoItem.bankNameTv.visibility = View.VISIBLE
binding.bankInfoItem.showBankNameTv.visibility = View.VISIBLE
@@ -537,7 +565,7 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
binding.consentDetails.visibility = View.GONE
binding.lineView.visibility = View.VISIBLE
binding.rejectConsentBtn.visibility = View.GONE
fetchDiscoveredAccounts()
discoverAccounts()
}
private fun getButtonTitle(): String {
@@ -688,7 +716,7 @@ class AccountAggregatorFragment : BaseFragment(), FooterInteractionListener, Bac
KEY_OTP_DETAILS,
OtpDetails(
getString(R.string.enter_bank_otp_text),
showTermsAndConditions = true,
showTermsAndConditions = false,
showPoweredByIcon = true
)
)

View File

@@ -5,5 +5,6 @@ import com.onemoney.sdk.models.input.Account
data class OneMoneyAccount(
@SerializedName("account") val account: Account? = null,
@SerializedName("isLinked") val isLinked: Boolean = false
@SerializedName("isLinked") val isLinked: Boolean = false,
@SerializedName("isChecked") var isChecked: Boolean = true
)

View File

@@ -162,6 +162,8 @@ object Constants {
const val SA = "sa"
const val URL = "url"
const val ADDITIONAL_DATA_NEEDED = "additional_data_needed"
const val CONSENT_IDENTIFIER_CATEGORY = "STRONG"
const val CONSENT_IDENTIFIER_TYPE = "MOBILE"
const val CONSENT_INITIATOR_PL = "PL"
const val CONSENT_INITIATOR_HL = "HL"
const val EPFO_PAGE_TYPE = "EPFO_PAGE_TYPE"

View File

@@ -707,8 +707,8 @@
<string name="bank_statement_only_option_title">Upload Bank Statement PDF</string>
<string name="bank_statement_only_option_subtitle">Last 6 months downloaded statement</string>
<string name="net_banking_login">Net Banking Login</string>
<string name="account_aggregator_option">Account Aggregator</string>
<string name="account_aggregator_subtitle">OTP based bank statements</string>
<string name="account_aggregator_option">Bank Statement via OTP</string>
<string name="account_aggregator_subtitle">From RBI Licensed Account Aggregator</string>
<string name="login_details_info">We do not store your Login details</string>
<string name="bank_statement_pdf_title">Bank Statement PDF</string>
<string name="web_view_failed">Failed loading app!</string>
@@ -809,7 +809,7 @@
<string name="discovered_accounts">Accounts discovered for your mobile number</string>
<string name="link_accounts">Link these accounts with Onemoney</string>
<string name="fip_list">Accounts linked to Onemoney</string>
<string name="account_number_value">Account %d</string>
<string name="account_number_value">Deposit Account %d</string>
<string name="chat_help">Need Help? Get in touch</string>
<string name="aadhar_pending_msg">We are registering the auto-pay mandate with your bank. It may take up to 2 days.</string>
<string name="auto_pay_setup_failed">Auto-pay setup failed. Please retry again or use another bank</string>