AE-6300 Custom Toast Change in Bank Details Page (#4327)
* AE-6300 Custom Toast Change in Bank Details Page
This commit is contained in:
committed by
GitHub Enterprise
parent
f77da6a798
commit
8a14f92ffb
@@ -70,6 +70,8 @@ class BankDetailsVM(private val repository: BankDetailsRepository = BankDetailsR
|
||||
val invalidBankCode: LiveData<GenericErrorResponse>
|
||||
get() = _invalidBankCode
|
||||
|
||||
val toastId = MutableLiveData<Int>(null)
|
||||
|
||||
fun addBankDetail(bankDetail: BankDetail, loanApplicationId: String, loanType: String?) {
|
||||
coroutineScope.launch {
|
||||
val response = repository.submitBankDetails(bankDetail, loanApplicationId, loanType)
|
||||
|
||||
@@ -19,12 +19,14 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.navi.amc.common.view.InformationView
|
||||
import com.navi.analytics.utils.NaviTrackEvent
|
||||
import com.navi.analytics.uxcam.UxcamUtil
|
||||
import com.navi.base.model.CtaData
|
||||
@@ -36,6 +38,7 @@ import com.navi.common.utils.toggleViewDisability
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.utils.getFontStyle
|
||||
import com.navi.naviwidgets.base.BaseInputWidget
|
||||
import com.navi.naviwidgets.widgets.textdisplay.Margin
|
||||
import com.navi.naviwidgets.widgets.textdisplay.Padding
|
||||
import com.naviapp.R
|
||||
import com.naviapp.analytics.utils.NaviAnalytics
|
||||
@@ -52,7 +55,7 @@ import com.naviapp.network.ApiErrorTagType.FETCH_LOAN_BASIC_DETAILS_ERROR
|
||||
import com.naviapp.personalloan.getloan.activities.BankAccountVerificationLoaderActivity
|
||||
import com.naviapp.personalloan.getloan.activities.GetLoanActivity
|
||||
import com.naviapp.personalloan.getloan.activities.GetLoanActivity.Companion.IS_FOR_SECOND_LOAN_JOURNEY
|
||||
import com.naviapp.personalloan.getloan.bankdetails.fragments.*
|
||||
import com.naviapp.personalloan.getloan.bankdetails.fragments.BankDetailsFragment
|
||||
import com.naviapp.personalloan.getloan.bankdetails.listeners.FindIfscListener
|
||||
import com.naviapp.personalloan.getloan.bankdetails.listeners.OnSelectBankListener
|
||||
import com.naviapp.personalloan.getloan.bankdetails.viewmodels.BankDetailsVM
|
||||
@@ -673,7 +676,30 @@ class BankDetailsV2Fragment :
|
||||
}
|
||||
?: run {
|
||||
binding.bankNameSearch.setError(getString(R.string.bank_name_error_header))
|
||||
context?.toast(R.string.select_valid_bank)
|
||||
viewModel.toastId.value?.let {
|
||||
binding.root.findViewById<View>(it).visibility = View.VISIBLE
|
||||
} ?: run {
|
||||
val view = context?.let { InformationView(it) }
|
||||
view?.id = View.generateViewId()
|
||||
view?.setProperties(
|
||||
BankDetailsV2Helper.getCustomToastProperties(
|
||||
getString(R.string.select_valid_bank),
|
||||
null
|
||||
),
|
||||
)
|
||||
view?.setMargin(
|
||||
Margin(
|
||||
startDp = 16.0f,
|
||||
endDp = 16.0f,
|
||||
bottomDp = 144.0f
|
||||
)
|
||||
)
|
||||
view?.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||
this.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID
|
||||
}
|
||||
binding.container.addView(view)
|
||||
viewModel.toastId.value = view?.id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -768,6 +794,9 @@ class BankDetailsV2Fragment :
|
||||
bank.name?.let {
|
||||
binding.bankNameSearch.setText(it, false, false)
|
||||
binding.bankNameSearch.setError(null)
|
||||
viewModel.toastId.value?.let { toastIdValue ->
|
||||
binding.root.findViewById<View>(toastIdValue).visibility = View.GONE
|
||||
}
|
||||
}
|
||||
binding.bankAccountNumberLt.updateTextInputData("")
|
||||
binding.ifscLt.widgetBinding.plainTextInput.requestFocus()
|
||||
@@ -781,11 +810,7 @@ class BankDetailsV2Fragment :
|
||||
}
|
||||
|
||||
override fun onClickUnserviceableBank() {
|
||||
context?.toast(
|
||||
getString(R.string.this_bank_is_not_supported),
|
||||
offsetY = 200,
|
||||
length = Toast.LENGTH_SHORT
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
override fun onFooterBackPressed(backCta: CtaData?) {
|
||||
|
||||
@@ -18,17 +18,19 @@ import com.navi.common.utils.observeNonNull
|
||||
import com.naviapp.R
|
||||
import com.naviapp.common.viewmodel.ActiveLoanDetailsVM
|
||||
import com.naviapp.databinding.SelectBankV2LayoutBinding
|
||||
import com.naviapp.models.response.Bank
|
||||
import com.naviapp.models.response.BankDetailsHeaderData
|
||||
import com.naviapp.personalloan.getloan.bankdetails.listeners.OnSelectBankListener
|
||||
import com.naviapp.personalloan.getloan.bankdetails.viewmodels.BankDetailsVM
|
||||
import com.naviapp.personalloanrevamp.getloanRevamp.adapters.SelectBankAdapter
|
||||
import com.naviapp.personalloanrevamp.getloanRevamp.customview.SearchV2Field
|
||||
import com.naviapp.personalloanrevamp.getloanRevamp.helper.BankDetailsV2Helper
|
||||
import com.naviapp.utils.IconUtils
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SelectBankV2Fragment :
|
||||
BaseBottomSheet(), SearchV2Field.SearchFieldListener {
|
||||
BaseBottomSheet(), SearchV2Field.SearchFieldListener, OnSelectBankListener {
|
||||
private lateinit var binding: SelectBankV2LayoutBinding
|
||||
private var adapter: SelectBankAdapter? = null
|
||||
private val viewModel by lazy { ViewModelProvider(this).get(BankDetailsVM::class.java) }
|
||||
@@ -52,7 +54,7 @@ class SelectBankV2Fragment :
|
||||
}
|
||||
|
||||
private fun initUI() {
|
||||
adapter = SelectBankAdapter(bankSelectListener)
|
||||
adapter = SelectBankAdapter(this)
|
||||
binding.bankNameSf.setOnSearchListener(this)
|
||||
binding.bankNameSf.setHint(R.string.search)
|
||||
arguments?.getString(SELECTED_BANK)?.let { binding.bankNameSf.setText(it) }
|
||||
@@ -142,4 +144,19 @@ class SelectBankV2Fragment :
|
||||
HOME_LOAN,
|
||||
ACCOUNT_AGGREGATOR
|
||||
}
|
||||
|
||||
override fun onSelectBank(bank: Bank) {
|
||||
binding.toast.visibility = View.GONE
|
||||
bankSelectListener?.onSelectBank(bank)
|
||||
}
|
||||
|
||||
override fun onClickUnserviceableBank() {
|
||||
binding.toast.setProperties(
|
||||
BankDetailsV2Helper.getCustomToastProperties(
|
||||
getString(R.string.this_bank_is_not_supported_title),
|
||||
getString(R.string.kindly_select_some_other_bank_subtitle)
|
||||
)
|
||||
)
|
||||
bankSelectListener?.onClickUnserviceableBank()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
package com.naviapp.personalloanrevamp.getloanRevamp.helper
|
||||
|
||||
import android.content.Context
|
||||
import com.navi.amc.common.model.InformationCardData
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.textview.model.NaviSpan
|
||||
import com.navi.design.textview.model.TextWithStyle
|
||||
import com.navi.naviwidgets.utils.NaviWidgetIconUtils
|
||||
import com.navi.naviwidgets.widgets.TextInputUtil
|
||||
import com.navi.naviwidgets.widgets.labledtextinput.InputTextWidgetMeta
|
||||
import com.navi.naviwidgets.widgets.labledtextinput.LabeledTextInputWidgetModelV2
|
||||
@@ -38,4 +43,44 @@ object BankDetailsV2Helper {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun getCustomToastProperties(title: String?, subtitle: String?): InformationCardData {
|
||||
return InformationCardData(
|
||||
leftIcon = NaviWidgetIconUtils.ICON_ERROR_OUTLINED_ROUND_EXCLAMATION,
|
||||
rightIcon = NaviWidgetIconUtils.CROSS,
|
||||
bgColor = "#FFFFEAEA",
|
||||
title = getTitleTextProperties(title),
|
||||
subtitle = getSubtitleTextProperties(subtitle)
|
||||
)
|
||||
}
|
||||
|
||||
private fun getTitleTextProperties(title: String?): TextWithStyle? {
|
||||
return title?.let {
|
||||
TextWithStyle(
|
||||
text = title,
|
||||
style = listOf(
|
||||
NaviSpan(
|
||||
fontSize = 14.0,
|
||||
spanColor = "#EF0000",
|
||||
fontName = FontWeightEnum.BOLD.name
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getSubtitleTextProperties(subtitle: String?): TextWithStyle? {
|
||||
return subtitle?.let {
|
||||
TextWithStyle(
|
||||
text = subtitle,
|
||||
style = listOf(
|
||||
NaviSpan(
|
||||
fontSize = 12.0,
|
||||
spanColor = "#4D4D4D",
|
||||
fontName = FontWeightEnum.SEMI_BOLD.name
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,7 @@
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
@@ -193,6 +194,18 @@
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.navi.amc.common.view.InformationView
|
||||
android:id="@+id/toast"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
|
||||
<com.naviapp.common.customview.FooterViewV2
|
||||
android:id="@+id/footer_view"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
@@ -59,6 +60,14 @@
|
||||
android:scrollbars="vertical"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
|
||||
|
||||
<com.navi.amc.common.view.InformationView
|
||||
android:id="@+id/toast"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginTop="-144dp"
|
||||
android:visibility="gone" />
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@@ -413,6 +413,8 @@
|
||||
<string name="otp_via_call_text">You will receive otp via call</string>
|
||||
<string name="supported_banks">All Supported Banks</string>
|
||||
<string name="this_bank_is_not_supported">This bank is not supported. Kindly select some other bank.</string>
|
||||
<string name="this_bank_is_not_supported_title">This bank is not supported.</string>
|
||||
<string name="kindly_select_some_other_bank_subtitle">Kindly select some other bank.</string>
|
||||
<string name="my_loans_menu_item">My Loans</string>
|
||||
<string name="insurance_menu_item">Insurance</string>
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ object NaviWidgetIconUtils {
|
||||
private const val INSURANCE_HAND_SHIELD = "INSURANCE_HAND_SHIELD"
|
||||
private const val RED_ICON_CROSS = "RED_ICON_CROSS"
|
||||
private const val EMPTY_STATE = "EMPTY_STATE"
|
||||
private const val CROSS = "CROSS"
|
||||
const val CROSS = "CROSS"
|
||||
private const val ARROW_TERTIARY = "ARROW_TERTIARY"
|
||||
private const val EXCLAMATION_TOAST = "EXCLAMATION_TOAST"
|
||||
private const val YELLOW_EXCLAMATION_TOAST = "YELLOW_EXCLAMATION_TOAST"
|
||||
@@ -252,6 +252,7 @@ object NaviWidgetIconUtils {
|
||||
private const val ACCOUNT_TYPE_ORANGE = "ACCOUNT_TYPE_ORANGE"
|
||||
private const val VERIFY_OTP_ORANGE = "VERIFY_OTP_ORANGE"
|
||||
private const val ICON_BIG_ERROR_RED = "ICON_BIG_ERROR_RED"
|
||||
const val ICON_ERROR_OUTLINED_ROUND_EXCLAMATION = "ICON_ERROR_OUTLINED_ROUND_EXCLAMATION"
|
||||
|
||||
fun updateIcon(
|
||||
imageDetail: ImageDetail,
|
||||
@@ -528,6 +529,7 @@ object NaviWidgetIconUtils {
|
||||
ACCOUNT_TYPE_ORANGE -> R.drawable.ic_account_type_orange
|
||||
VERIFY_OTP_ORANGE -> R.drawable.ic_verify_otp_orange
|
||||
ICON_BIG_ERROR_RED -> R.drawable.ic_big_error
|
||||
ICON_ERROR_OUTLINED_ROUND_EXCLAMATION -> R.drawable.ic_error_outlined
|
||||
BADGE_PLUS_UPGRADE -> R.drawable.badge_plus_upgrade
|
||||
else -> -1
|
||||
}
|
||||
|
||||
18
navi-widgets/src/main/res/drawable/ic_error_outlined.xml
Normal file
18
navi-widgets/src/main/res/drawable/ic_error_outlined.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M12,3C7.029,3 3,7.029 3,12C3,16.971 7.029,21 12,21C16.971,21 21,16.971 21,12C21,7.029 16.971,3 12,3ZM1,12C1,5.925 5.925,1 12,1C18.075,1 23,5.925 23,12C23,18.075 18.075,23 12,23C5.925,23 1,18.075 1,12Z"
|
||||
android:fillColor="#EF0000"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M12,7C12.552,7 13,7.448 13,8V12C13,12.552 12.552,13 12,13C11.448,13 11,12.552 11,12V8C11,7.448 11.448,7 12,7Z"
|
||||
android:fillColor="#EF0000"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M11,16C11,15.448 11.448,15 12,15H12.01C12.562,15 13.01,15.448 13.01,16C13.01,16.552 12.562,17 12.01,17H12C11.448,17 11,16.552 11,16Z"
|
||||
android:fillColor="#EF0000"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
||||
Reference in New Issue
Block a user