diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 84f7c458..00f8438c 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -317,8 +317,9 @@
diff --git a/app/build.gradle b/app/build.gradle
index e0539678..d2a5752b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -233,6 +233,7 @@ dependencies {
implementation 'io.trustdock.sdk:verification-sandbox-full:2.7.2'
implementation 'com.google.android.flexbox:flexbox:3.0.0'
+ implementation 'me.relex:circleindicator:2.1.4'
diff --git a/app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt b/app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt
index ef28a675..0c6fef1c 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt
@@ -8,6 +8,9 @@ import com.remit.jmecustomer.databinding.ActivityBeneficiaryDetailBinding
import com.remit.jmecustomer.features.beneficiaryDetail.adapters.SendMethodAdapter
import com.remit.jmecustomer.features.recipientlisting.view.recipientaddedit.RecipientAddEditActivity
import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model
+import com.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity
+import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3
+import com.remit.jmecustomer.features.sendmoney.view.SendMoneyV2Activity
class BeneficiaryDetailActivity : BaseActivity() {
@@ -44,9 +47,19 @@ class BeneficiaryDetailActivity : BaseActivity() {
}
binding.agreeButton.setOnClickListener {
- val intent = Intent()
- setResult(RESULT_OK, intent)
- finish()
+ val intent = Intent(
+ this@BeneficiaryDetailActivity,
+ SendMoneyV2Activity::class.java
+ )
+ val sendMoneyRequiredDataV3 = SendMoneyRequiredDataV3(receiverInfoModel)
+ intent.putExtra(
+ RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3,
+ sendMoneyRequiredDataV3
+ )
+ startActivityForResult(
+ intent,
+ RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
+ )
}
}
diff --git a/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/BannerViewAdapter.kt b/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/BannerViewAdapter.kt
new file mode 100644
index 00000000..b7ac0745
--- /dev/null
+++ b/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/BannerViewAdapter.kt
@@ -0,0 +1,65 @@
+package com.remit.jmecustomer.features.homeV3.adpaters
+
+import android.content.Context
+import android.util.DisplayMetrics
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.engine.DiskCacheStrategy
+import com.bumptech.glide.load.resource.bitmap.CenterCrop
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners
+import com.bumptech.glide.request.RequestOptions
+import com.remit.jmecustomer.databinding.BannerItemBinding
+import com.remit.jmecustomer.features.homeV3.models.BannerModel
+
+class BannerViewAdapter(
+ data: List,
+) :
+ RecyclerView.Adapter() {
+ var data: List
+ var mContext: Context? = null
+
+ init {
+ this.data = data
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BannerItemViewHolder {
+ val binding = BannerItemBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ mContext = parent.context
+ return BannerItemViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: BannerItemViewHolder, position: Int) {
+ val imageURl: String = data[position].bannerIcon
+ Glide.with(mContext!!)
+ .load(imageURl).diskCacheStrategy(DiskCacheStrategy.ALL)
+ .transform(CenterCrop(), RoundedCorners(dpToPx(8, mContext!!)))
+ .into(holder.bindings.offerItemImgView)
+ }
+
+
+ override fun getItemCount(): Int {
+ return data.size
+ }
+
+ private fun dpToPx(dp: Int, context: Context): Int {
+ val displayMetrics = context.resources.displayMetrics
+ return Math.round(
+ dp * (displayMetrics.xdpi /
+ DisplayMetrics.DENSITY_DEFAULT)
+ )
+ }
+
+ class BannerItemViewHolder(private val binding: BannerItemBinding) :
+ RecyclerView.ViewHolder(binding.root) {
+ val bindings: BannerItemBinding = binding
+ fun bind(item: String) {
+
+ }
+ }
+}
diff --git a/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/SendTypeAdapter.kt b/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/SendTypeAdapter.kt
index f3cf285e..c8fbe983 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/SendTypeAdapter.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/homeV3/adpaters/SendTypeAdapter.kt
@@ -4,15 +4,22 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.remit.jmecustomer.databinding.RowSendTypeBinding
+import com.remit.jmecustomer.features.exrate.model.PaymentModeMapper
+import com.remit.jmecustomer.features.exrate.model.datav2.PaymentMode
-class SendTypeAdapter(private val items: List) :
+class SendTypeAdapter(private var items: MutableList) :
RecyclerView.Adapter() {
class ViewHolder(private val binding: RowSendTypeBinding) :
RecyclerView.ViewHolder(binding.root) {
- fun bind(item: String) {
- binding.ivText.text = item
+ fun bind(item: PaymentMode) {
+ binding.ivIcon.setImageResource(
+ PaymentModeMapper.getPaymentModeImageFromId(
+ item.id
+ )
+ )
+ binding.ivText.text = item.description
}
}
@@ -31,4 +38,10 @@ class SendTypeAdapter(private val items: List) :
}
override fun getItemCount(): Int = items.size
+
+ fun setData(serviceAvailable: MutableList) {
+ if (serviceAvailable != null && serviceAvailable.size > 0) this.items =
+ serviceAvailable else this.items.clear()
+ notifyDataSetChanged()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/homeV3/models/BannerModel.kt b/app/src/main/java/com/remit/jmecustomer/features/homeV3/models/BannerModel.kt
new file mode 100644
index 00000000..b75a7396
--- /dev/null
+++ b/app/src/main/java/com/remit/jmecustomer/features/homeV3/models/BannerModel.kt
@@ -0,0 +1,3 @@
+package com.remit.jmecustomer.features.homeV3.models
+
+class BannerModel(var bannerIcon : String)
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt b/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt
index 2567bc5e..2edb7569 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt
@@ -65,15 +65,16 @@ import com.remit.jmecustomer.features.transactionhistory.presenter.TransactionHi
import com.remit.jmecustomer.features.transactionhistory.presenter.TransactionHistoryV2PresenterInterface
import com.remit.jmecustomer.features.transactionhistory.view.RemitTransactionHistoryActivity
import com.remit.jmecustomer.features.trustdock.view.TrustDockActivity
+import com.remit.jmecustomer.features.userprofile.view.ProfileFragment
import com.remit.jmecustomer.features.walletstatement.view.WalletStatementV2Activity
import com.remit.jmecustomer.features.withdraw.view.WithdrawActivity
class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
HomeV2PresenterInterface.HomeV2ContractInterface, SendMoneyActionListener,
- SendMoneyV2ContractInterface ,
+ SendMoneyV2ContractInterface,
TransactionHistoryV2PresenterInterface.TransactionHistoryV2ContractInterface {
- lateinit var binding: ActivityHomeV3Binding
+ lateinit var binding: ActivityHomeV3Binding
private var pagerAdapter: HomePagerAdapter? = null
private val currentFragment: Fragment? = null
private val manager: FragmentManager? = null
@@ -90,7 +91,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
private var presenter: SendMoneyV2PresenterInterface? = null
private var sendMoneyRequiredData: SendMoneyRequiredDataV3? = null
private var presenterTransaction: TransactionHistoryV2Presenter? = null
- lateinit var homeFragmentV3 : HomeFragmentV3
+ lateinit var homeFragmentV3: HomeFragmentV3
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomeV3Binding.inflate(layoutInflater)
@@ -112,7 +113,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
SendMoneyV2ViewModel::class.java
)
homeFragmentV3 = HomeFragmentV3()
- val fragments = listOf(homeFragmentV3, MyTransfersFragment())
+ val fragments = listOf(homeFragmentV3, MyTransfersFragment(), ProfileFragment())
pagerAdapter = HomePagerAdapter(supportFragmentManager, fragments)
binding.vpDashboard.adapter = pagerAdapter
@@ -146,6 +147,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
2 -> {
resetTabs()
tab.setIcon(R.drawable.ic_transfers_selected)
+ binding.vpDashboard.currentItem = 2
}
}
}
@@ -720,13 +722,4 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
true
} else false
}
-
- fun setSendData(sendMoneyRequiredDataV3: SendMoneyRequiredDataV3){
- val factory = SendMoneyViewModelFactory(this, sendMoneyRequiredDataV3)
- presenter = ViewModelProviders.of(this, factory).get(
- SendMoneyV2ViewModel::class.java
- )
- homeFragmentV3.performDefaultAction(factory)
-
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt b/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt
index c07651f2..fe396c86 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt
@@ -1,56 +1,48 @@
package com.remit.jmecustomer.features.homeV3.view
-import android.app.Activity
-import android.content.Context
+import android.graphics.Rect
import android.os.Bundle
-import android.os.Handler
import android.text.Editable
-import android.text.TextWatcher
-import android.view.KeyEvent
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
+import android.view.*
+import android.view.GestureDetector.SimpleOnGestureListener
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.Interpolator
import android.view.inputmethod.EditorInfo
-import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.RelativeLayout
-import android.widget.Spinner
import android.widget.TextView
import android.widget.TextView.OnEditorActionListener
-import androidx.cardview.widget.CardView
-import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.view.GestureDetectorCompat
import androidx.core.view.ViewCompat
-import androidx.core.widget.NestedScrollView
-import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
-import butterknife.BindView
-import butterknife.ButterKnife
+import androidx.recyclerview.widget.PagerSnapHelper
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.remit.jmecustomer.R
import com.remit.jmecustomer.base.BaseFragment
import com.remit.jmecustomer.common.customwidgets.CurrencyFormatterTextWatcher
-import com.remit.jmecustomer.common.customwidgets.CustomAlertDialog
-import com.remit.jmecustomer.common.customwidgets.JmeTextView
import com.remit.jmecustomer.common.customwidgets.exchangecountrylistingdialog.CountryFlagMapper
+import com.remit.jmecustomer.common.customwidgets.exchangecountrylistingdialog.ExchangeRateCurrencyListingDialog
import com.remit.jmecustomer.databinding.FragmentHomeNewBinding
-import com.remit.jmecustomer.features.exrate.model.datav2.ExchangeCalculationModel
+import com.remit.jmecustomer.features.exrate.adapter.PaymentModeRvAdapter
+import com.remit.jmecustomer.features.exrate.gateway.ExchangeRateGateway
+import com.remit.jmecustomer.features.exrate.model.datav2.CountryPaymentService
+import com.remit.jmecustomer.features.exrate.model.datav2.PaymentMode
+import com.remit.jmecustomer.features.exrate.presenter.ExchangeRatePresenter
+import com.remit.jmecustomer.features.exrate.presenter.ExchangeRatePresenterInterface
+import com.remit.jmecustomer.features.exrate.presenter.ExchangeRatePresenterInterface.ExchangeRateContractInterfacee
+import com.remit.jmecustomer.features.homeV3.adpaters.BannerViewAdapter
import com.remit.jmecustomer.features.homeV3.adpaters.SendTypeAdapter
-import com.remit.jmecustomer.features.sendmoney.SendMoneyViewModelFactory
-import com.remit.jmecustomer.features.sendmoney.model.RewardsPointDTO
+import com.remit.jmecustomer.features.homeV3.models.BannerModel
import com.remit.jmecustomer.features.sendmoney.model.amountdetail.AmountDetailRelatedDataModel
-import com.remit.jmecustomer.features.sendmoney.model.amountdetail.RecipientCurrencyModel
-import com.remit.jmecustomer.features.sendmoney.presenter.SendMoneyV2ViewModel
-import com.remit.jmecustomer.features.sendmoney.view.SendMoneyActionListener
import com.remit.jmecustomer.features.sendmoney.view.amountdetail.AmountDetailExRateCountryListingDialog
-import com.remit.jmecustomer.features.sendmoney.view.amountdetail.AmountDetailExRateCountryListingDialog.ExRateCurrencySelectionListener
-import com.remit.jmecustomer.utils.Utils
+import java.util.*
class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
- ExRateCurrencySelectionListener, OnEditorActionListener {
+ OnEditorActionListener, ExchangeRateContractInterfacee,
+ PaymentModeRvAdapter.OnPaymentModeSelectionListener {
+ private var scrollPosition: Int = 0
private var _binding: FragmentHomeNewBinding? = null
private val binding get() = _binding!!
var iv_rewardsPoint: TextInputLayout? = null
@@ -66,14 +58,11 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
private var selectedSendAmount: String? = null
private var selectedsendingCurrency: String? = null
private var sendAmountTextWatcher: SendAmountTextWatcher? = null
- private var recepientAmountTextWatcher: RecipientAmountTextWatcher? = null
private var sendCurrencyFormatterTextWatcher: CurrencyFormatterTextWatcher? = null
private var recepientCurrencyFormatterTextWatcher: CurrencyFormatterTextWatcher? = null
- private var rewardsPointTextWatcher: RewardsPointTextWatcher? = null
private var selectedExRateId: String? = null
private var selectedExRateWithoutTrunc: String? = null
private var selectedTransferAmount: String? = null
- private var viewmodel: SendMoneyV2ViewModel? = null
private var sendMoneyEditText: TextInputEditText? = null
private var recieveMoneyEditText: TextInputEditText? = null
private var continueBtn: RelativeLayout? = null
@@ -83,6 +72,16 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
private var recepientFlagImageView: ImageView? = null
private var recepientCurrencyTextView: TextView? = null
private var btnText: TextView? = null
+ lateinit var presenter: ExchangeRatePresenterInterface
+ private var countryListingDialog: ExchangeRateCurrencyListingDialog? = null
+
+ private var sendMoneyTextWatcher: SendAmountTextWatcher? = null
+ private var receiveMoneyTextWatcher: ReceiveAmountTextWatcher? = null
+ private var gestureDetector: GestureDetectorCompat? = null
+ private var myViewGestureDetector: AmountChangeAndFocusOutDetector? = null
+
+ private val paymentModeRvAdapter: PaymentModeRvAdapter? = null
+ private var sendTypeAdapter: SendTypeAdapter? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -91,7 +90,8 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
_binding = FragmentHomeNewBinding.inflate(inflater, container, false)
setUpData()
init()
- performDefaultAction(null)
+ setBannerData()
+ performDefaultAction()
return binding.root
}
@@ -99,15 +99,21 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
super.onViewCreated(view, savedInstanceState)
}
+ private fun performDefaultAction() {
+ showProgressBar(true, getString(R.string.processing_request_text))
+ presenter.getExrateRelatedData()
+ }
+
private fun setUpData() {
- var list = listOf("Cash Pickup", "Bank Deposit", "Mobile Wallet")
+ val list: MutableList = ArrayList()
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
binding.rvSendType.layoutManager = layoutManager
- var adapter = SendTypeAdapter(list)
- binding.rvSendType.adapter = adapter
+ sendTypeAdapter = SendTypeAdapter(list)
+ binding.rvSendType.adapter = sendTypeAdapter
}
private fun init() {
+ presenter = ExchangeRatePresenter(this, ExchangeRateGateway())
sendMoneyEditText = binding.sendAmountEdTxt
recieveMoneyEditText = binding.receiveAmountEdTxt
transferFeeTxtView = binding.tvTransfer1
@@ -117,417 +123,273 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
recepientCurrencyTextView = binding.tvCurrency2
countrySelectionSpinner = binding.ivCurrency2;
btnText = binding.btnText
- viewmodel = ViewModelProvider(requireActivity())[SendMoneyV2ViewModel::class.java]
- sendAmountTextWatcher = SendAmountTextWatcher()
- recepientAmountTextWatcher = RecipientAmountTextWatcher()
interpolator = AccelerateDecelerateInterpolator()
- setupRecyclerView()
- registerTextWatchers(true)
- viewmodel!!.fetchRewardsLiveData()
- viewmodel!!.subscribeToRewardsPoint().observe(
- viewLifecycleOwner
- ) { rewardsPointDTO: RewardsPointDTO ->
- updateRewardDetails(
- rewardsPointDTO
- )
- }
- }
-
- override fun onStart() {
- super.onStart()
- continueBtn!!.setOnClickListener(this)
- recieveMoneyEditText!!.setOnEditorActionListener(this)
- sendMoneyEditText!!.setOnEditorActionListener(this)
- countrySelectionSpinner!!.setOnClickListener(this)
-// recepientCurrencyTextView!!.setOnClickListener(this)
-// countrySelectionSpinnerArrow!!.setOnClickListener(this)
-// ed_rewardsPoint!!.setOnClickListener(this)
-// ed_rewardsPoint!!.setOnEditorActionListener(this)
- }
-
- override fun onStop() {
- super.onStop()
- continueBtn!!.setOnClickListener(null)
- recieveMoneyEditText!!.setOnEditorActionListener(null)
- sendMoneyEditText!!.setOnEditorActionListener(null)
- countrySelectionSpinner!!.setOnClickListener(null)
-// recepientCurrencyTextView!!.setOnClickListener(null)
-// countrySelectionSpinnerArrow!!.setOnClickListener(null)
-// ed_rewardsPoint!!.setOnClickListener(null)
-// ed_rewardsPoint!!.setOnEditorActionListener(null)
- }
-
- override fun onAttach(context: Context) {
- super.onAttach(context)
- (context as SendMoneyActionListener).updateCurrentIndexFrom(R.layout.fragment_amount_detail_send_money_v2)
- }
-
- override fun onAttach(activity: Activity) {
- super.onAttach(activity)
- (activity as SendMoneyActionListener).updateCurrentIndexFrom(R.layout.fragment_amount_detail_send_money_v2)
- }
-
- override fun onDetach() {
- super.onDetach()
- (activity as SendMoneyActionListener?)!!.updateCurrentScreenByLayoutId(R.layout.fragment_amount_detail_send_money_v2)
+ sendMoneyTextWatcher = SendAmountTextWatcher(sendMoneyEditText)
+ receiveMoneyTextWatcher = ReceiveAmountTextWatcher(recieveMoneyEditText)
+ myViewGestureDetector = AmountChangeAndFocusOutDetector()
+ gestureDetector = GestureDetectorCompat(requireContext(), myViewGestureDetector)
}
- override fun onDestroy() {
- registerTextWatchers(false)
- super.onDestroy()
+ override fun onClick(v: View) {
+ when (v.id) {
+ R.id.agreeButton -> {
+ (requireActivity() as HomeActivityV3).binding.vpDashboard.currentItem = 1
+ }
+ R.id.countrySelectionSpinner, R.id.recepientCurrencyTextView, R.id.iv_currency_2 -> showCountryListinDialog()
+ R.id.exRateCalculateButton -> presenter.calcExrate()
+ }
}
- private fun setupRecyclerView() {}
-
- private fun showCurrencyListingDialog() {
- hideKeyBoard()
- if (amountDetailRelatedData!!.availableCurrencyData == null || amountDetailRelatedData!!.availableCurrencyData.isEmpty()) return
- if (exRateCountryListingDialog == null) exRateCountryListingDialog =
- AmountDetailExRateCountryListingDialog()
- exRateCountryListingDialog!!.setListener(this)
- exRateCountryListingDialog!!.setCountryPaymentData(amountDetailRelatedData!!.availableCurrencyData)
- if (!exRateCountryListingDialog!!.isAdded) exRateCountryListingDialog!!.show(
- activity!!.supportFragmentManager,
+ private fun showCountryListinDialog() {
+ if (countryListingDialog == null) countryListingDialog = ExchangeRateCurrencyListingDialog()
+ countryListingDialog?.setCountryPaymentData(presenter.getAvailableCountryRelatedCurrency())
+ countryListingDialog?.setListener(ExchangeRateCurrencyListingDialog.CountrySelectionListener { countryPaymentService ->
+ presenter.setCountryRelatedCurrencyData(countryPaymentService)
+ countryListingDialog?.dismiss()
+ })
+ if (!countryListingDialog!!.isAdded) countryListingDialog?.show(
+ requireActivity().supportFragmentManager,
"GenericTextListingDialog"
)
}
- fun performDefaultAction(sendMoneyViewModelFactory: SendMoneyViewModelFactory?) {
-
- if(sendMoneyViewModelFactory != null) {
- viewmodel =
- ViewModelProvider(this, sendMoneyViewModelFactory)[SendMoneyV2ViewModel::class.java]
- }
- shouldCaulatedByRecipient = false
- showFootNote(viewmodel!!.footNote)
- viewmodel!!.subscribeToAmountRelatedData().observe(
- viewLifecycleOwner
- ) { data: AmountDetailRelatedDataModel? ->
- amountDetailRelatedData = data
- if (amountDetailRelatedData == null || amountDetailRelatedData!!.defaultSelectedCurrency == null) {
- showSelectedCurrency("", getString(R.string.na_text))
- Handler().postDelayed({
- showPopUpMessage(
- getString(R.string.no_payout_currency_defined_error),
- CustomAlertDialog.AlertType.ALERT,
- null
- )
- }, 350)
- continueBtn!!.setOnClickListener(null)
- } else {
- showSelectedCurrency(
- amountDetailRelatedData!!.defaultSelectedCurrency.countryCode,
- amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode
- )
- updateButtonToCalculate(true)
- }
- }
- viewmodel!!.subscribeToExRateData().observe(
- viewLifecycleOwner
- ) { data: ExchangeCalculationModel ->
- selectedTransferFeeAmount = data.scCharge
- selectedExRate = data.exRateDisplay
- selectedExRateWithoutTrunc = data.exRate
- selectedRecipientAmount = data.getpAmt()
- selectedSendAmount = data.collAmt
- selectedsendingCurrency = data.collCurr
- selectedExRateId = data.exrateId
- selectedTransferAmount = data.getsAmt()
- val transferDisplay =
- " -" + Utils.formatCurrency(
- selectedTransferFeeAmount
- ) + " " + selectedsendingCurrency + "\n (" + getString(R.string.transfer_fee_included_text) + ")"
- val exRateDisplay =
- """ $selectedExRate
- (${getString(R.string.current_exchange_rate_text)})"""
- showTransferfeeAndExRate(true, transferDisplay, exRateDisplay, "")
- showSendAndRecieveAmount(selectedSendAmount, selectedRecipientAmount)
- updateButtonToCalculate(false)
- showFootNote(viewmodel!!.footNote)
+ private fun startSendAmountListener(action: Boolean) {
+ if (action) {
+ binding.sendAmountEdTxt.addTextChangedListener(sendMoneyTextWatcher)
+ } else {
+ binding.sendAmountEdTxt.removeTextChangedListener(sendMoneyTextWatcher)
}
}
- override fun onClick(v: View) {
- when (v.id) {
- R.id.agreeButton -> if (shouldCalculateExRate) {
- forex
- } else {
- if (validateAll()) {
- hideKeyBoard()
- sendMoneyEditText!!.clearFocus()
- recieveMoneyEditText!!.clearFocus()
- viewmodel!!.setSendingAmount(
- sendMoneyEditText!!.text.toString(),
- amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode,
- selectedExRateWithoutTrunc,
- selectedRecipientAmount,
- selectedTransferFeeAmount,
- shouldCaulatedByRecipient,
- selectedExRateId,
- selectedTransferAmount
- )
- // ((SendMoneyActionListener) getActivity()).showTransactionReviewPage();
- (activity as SendMoneyActionListener?)!!.showCCDIPage()
- }
- }
- R.id.countrySelectionSpinner, R.id.recepientCurrencyTextView, R.id.countrySelectionSpinnerArrow -> if (!amountDetailRelatedData!!.availableCurrencyData.isEmpty()) showCurrencyListingDialog()
+ private fun startReceiveAmountListener(action: Boolean) {
+ if (action) {
+ binding.receiveAmountEdTxt.addTextChangedListener(receiveMoneyTextWatcher)
+ } else {
+ binding.receiveAmountEdTxt.removeTextChangedListener(receiveMoneyTextWatcher)
}
}
- private val forex: Unit
- private get() {
- if (shouldCaulatedByRecipient && !validateAmountIsNotEmpty(recieveMoneyEditText!!.text.toString())) {
- showToastMessage(getString(R.string.sending_amount_error))
- return
- }
- if (!shouldCaulatedByRecipient && !validateAmountIsNotEmpty(sendMoneyEditText!!.text.toString())) {
- showToastMessage(getString(R.string.receiving_amount_error))
- return
- }
- if (amountDetailRelatedData != null) {
- viewmodel!!.getForex(
- recieveMoneyEditText!!.text.toString(),
- sendMoneyEditText!!.text.toString(),
- shouldCaulatedByRecipient,
- amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode,
- binding.edRewardsPoint!!.text.toString()
- );
- } else {
- (requireActivity() as HomeActivityV3).binding.vpDashboard.currentItem = 2
- }
- }
+ override fun showPayoutAmount(pAmount: String?) {
+ startReceiveAmountListener(false)
+ binding.receiveAmountEdTxt.setText(pAmount)
+ startReceiveAmountListener(true)
+ }
- private fun showSelectedCurrency(
- selectedCountryCode: String?,
- selectedCountryCurrency: String?
+ override fun showCollectionAmount(pAmount: String?) {
+ startSendAmountListener(false)
+ binding.sendAmountEdTxt.setText(pAmount)
+ startSendAmountListener(true)
+ }
+
+ override fun showSelectedPayoutMode(
+ serviceAvailable: MutableList,
+ selectedIndex: Int
) {
- var flagResId = -1
- if (selectedCountryCode != null) flagResId =
- CountryFlagMapper.getFlagFromCountryCode(selectedCountryCode)
- if (flagResId != -1) recepientFlagImageView!!.setBackgroundResource(flagResId) else recepientFlagImageView!!.setBackgroundResource(
- 0
+ sendTypeAdapter?.setData(serviceAvailable)
+// sendTypeAdapter.setSelectedItem(selectedIndex)
+ }
+
+ override fun showSelectedPayoutCurrency(selectedPayoutCountryCurrency: CountryPaymentService) {
+ recepientCurrencyTextView!!.text = selectedPayoutCountryCurrency.currency
+ recepientFlagImageView!!.setImageResource(
+ CountryFlagMapper.getFlagFromCountryCode(
+ selectedPayoutCountryCurrency.countryCode
+ )
)
- if (selectedCountryCurrency != null) recepientCurrencyTextView!!.text =
- selectedCountryCurrency
}
- private fun showTransferfeeAndExRate(
- action: Boolean,
- transferDisplay: String,
- exRateDisplay: String,
- discountValue: String
+
+ override fun showTransferChargeAndExrate(
+ chargeAmount: String?,
+ exRate: String?,
+ formattedExRate: String?,
+ playAnimation: Boolean
) {
- if (action) {
- if (exchangeRateTxtView!!.visibility == View.VISIBLE) exchangeRateTxtView!!.visibility =
- View.INVISIBLE
- exchangeRateTxtView!!.text = exRateDisplay
+ if (playAnimation) {
+ exchangeRateTxtView!!.visibility = View.INVISIBLE
+ exchangeRateTxtView!!.text = exRate
exchangeRateTxtView!!.translationY = exchangeRateTxtView!!.height.toFloat()
exchangeRateTxtView!!.visibility = View.VISIBLE
ViewCompat.animate(exchangeRateTxtView!!).translationY(0f).setDuration(550)
.setInterpolator(
interpolator
).start()
- if (transferFeeTxtView!!.visibility == View.VISIBLE) transferFeeTxtView!!.visibility =
- View.INVISIBLE
- transferFeeTxtView!!.text = transferDisplay
+ transferFeeTxtView!!.visibility = View.INVISIBLE
+ transferFeeTxtView!!.text = chargeAmount
transferFeeTxtView!!.translationY = transferFeeTxtView!!.height.toFloat()
transferFeeTxtView!!.visibility = View.VISIBLE
ViewCompat.animate(transferFeeTxtView!!).translationY(0f).setDuration(550)
.setInterpolator(
interpolator
).start()
+// jmeExratePC.setVisibility(View.INVISIBLE)
+// jmeExratePC.setAlpha(0f)
+// jmeExratePC.setText(formattedExRate)
+// jmeExratePC.setVisibility(View.INVISIBLE)
+// jmeExratePC.animate().alpha(1f).setDuration(500).withLayer().start()
} else {
- if (exchangeRateTxtView!!.visibility == View.VISIBLE) exchangeRateTxtView!!.visibility =
- View.INVISIBLE
- if (transferFeeTxtView!!.visibility == View.VISIBLE) transferFeeTxtView!!.visibility =
- View.INVISIBLE
+ transferFeeTxtView!!.text = chargeAmount
+ exchangeRateTxtView!!.text = exRate
+// jmeExratePC.setText(formattedExRate)
}
}
- private fun showSendAndRecieveAmount(sendAmount: String?, recieveAmount: String?) {
- updateSendAmount(sendAmount)
- updateRecievingAmount(recieveAmount)
+ override fun showExrateView(task: Runnable?) {
+ showProgressBar(false, getString(R.string.processing_request_text))
+ presenter.onExRateViewLoadedSuccessfully()
}
- private fun validateAmountIsNotEmpty(amount: String?): Boolean {
- return amount != null && amount.length > 0
+ override fun showFootNote(footNote: String) {
+// if (footNote.isEmpty()) {
+// idExFootNoteContainer.setVisibility(View.INVISIBLE)
+// } else {
+// exRateFootNoteText.setText(footNote)
+// idExFootNoteContainer.setVisibility(View.VISIBLE)
+// }
}
- override fun onCurrencySelected(selectedCurrency: RecipientCurrencyModel) {
- if (amountDetailRelatedData != null && amountDetailRelatedData!!.defaultSelectedCurrency != null && amountDetailRelatedData!!.defaultSelectedCurrency.countryName != null && amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode != null && amountDetailRelatedData!!.defaultSelectedCurrency.countryName.length > 0 && amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode.length > 0) {
- if (!amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode.equals(
- selectedCurrency.currencyCode,
- ignoreCase = true
- ) && !amountDetailRelatedData!!.defaultSelectedCurrency.countryName.equals(
- selectedCurrency.countryCode,
- ignoreCase = true
- )
- ) {
- updateRecievingAmount("")
- updateButtonToCalculate(true)
- shouldCaulatedByRecipient = false
- } else forex
- }
- amountDetailRelatedData!!.defaultSelectedCurrency = selectedCurrency
- if (exRateCountryListingDialog != null) exRateCountryListingDialog!!.dismiss()
- exRateCountryListingDialog = null
- showSelectedCurrency(
- amountDetailRelatedData!!.defaultSelectedCurrency.countryCode,
- amountDetailRelatedData!!.defaultSelectedCurrency.currencyCode
- )
+ override fun onPaymentModeSelected(selectedData: PaymentMode?) {
+ presenter.setPaymentMode(selectedData)
+ }
+
+ override fun onStart() {
+ super.onStart()
+// exRateCalculateButton.setOnClickListener(this)
+// iv_back.setOnClickListener(this)
+ binding.receiveAmountEdTxt.setOnEditorActionListener(this)
+ binding.sendAmountEdTxt.setOnEditorActionListener(this)
+ countrySelectionSpinner!!.setOnClickListener(this)
+ recepientCurrencyTextView!!.setOnClickListener(this)
+ recepientFlagImageView?.setOnClickListener(this)
+ binding.agreeButton.setOnClickListener(this)
}
override fun onEditorAction(v: TextView, actionId: Int, event: KeyEvent?): Boolean {
when (v.id) {
- R.id.sendAmountEdTxt, R.id.receiveAmountEdTxt -> {
+ R.id.sendAmountEdTxt -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
- hideKeyBoard()
- forex
+ presenter.setCalcByPayoutAmount(false)
+ presenter.calcExrate()
+ return true
}
- return true
- }
- R.id.ed_rewardsPoint -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
- hideKeyBoard()
- forex
+ presenter.setCalcByPayoutAmount(true)
+ presenter.calcExrate()
+ return true
}
+ }
+ R.id.receiveAmountEdTxt -> if (actionId == EditorInfo.IME_ACTION_DONE) {
+ presenter.setCalcByPayoutAmount(true)
+ presenter.calcExrate()
return true
}
}
return false
}
- private fun validateAll(): Boolean {
- return validateAmountIsNotEmpty(sendMoneyEditText!!.text.toString()) && validateAmountIsNotEmpty(
- recieveMoneyEditText!!.text.toString()
- )
- }
-
- private fun updateButtonToCalculate(action: Boolean) {
- shouldCalculateExRate = action
- if (action) btnText?.text =
- getString(R.string.calculate_text) else btnText?.text =
- getString(R.string.continue_text)
- }
-
- private fun updateSendAmount(amount: String?) {
- registerAvailableTextWatchersForEditText(sendMoneyEditText, false)
- sendMoneyEditText!!.setText(Utils.formatCurrency(amount))
- registerAvailableTextWatchersForEditText(sendMoneyEditText, true)
- }
-
- private fun updateRecievingAmount(amount: String?) {
- registerAvailableTextWatchersForEditText(recieveMoneyEditText, false)
- recieveMoneyEditText!!.setText(Utils.formatCurrency(amount))
- registerAvailableTextWatchersForEditText(recieveMoneyEditText, true)
- }
-
- private fun registerTextWatchers(action: Boolean) {
- if (action) {
- if (sendAmountTextWatcher == null) sendAmountTextWatcher = SendAmountTextWatcher()
- if (recepientAmountTextWatcher == null) recepientAmountTextWatcher =
- RecipientAmountTextWatcher()
- if (recepientCurrencyFormatterTextWatcher == null) recepientCurrencyFormatterTextWatcher =
- CurrencyFormatterTextWatcher(recieveMoneyEditText)
- if (sendCurrencyFormatterTextWatcher == null) sendCurrencyFormatterTextWatcher =
- CurrencyFormatterTextWatcher(sendMoneyEditText)
- if (rewardsPointTextWatcher == null) rewardsPointTextWatcher = RewardsPointTextWatcher()
- sendMoneyEditText!!.addTextChangedListener(sendAmountTextWatcher)
- recieveMoneyEditText!!.addTextChangedListener(recepientAmountTextWatcher)
- sendMoneyEditText!!.addTextChangedListener(sendCurrencyFormatterTextWatcher)
- recieveMoneyEditText!!.addTextChangedListener(recepientCurrencyFormatterTextWatcher)
- binding.edRewardsPoint!!.addTextChangedListener(rewardsPointTextWatcher)
- } else {
- sendMoneyEditText!!.removeTextChangedListener(sendAmountTextWatcher)
- recieveMoneyEditText!!.removeTextChangedListener(recepientAmountTextWatcher)
- sendMoneyEditText!!.removeTextChangedListener(sendCurrencyFormatterTextWatcher)
- recieveMoneyEditText!!.removeTextChangedListener(recepientCurrencyFormatterTextWatcher)
- binding.edRewardsPoint!!.removeTextChangedListener(rewardsPointTextWatcher)
+ inner class AmountChangeAndFocusOutDetector : SimpleOnGestureListener() {
+ override fun onSingleTapUp(e: MotionEvent): Boolean {
+ if (e.action == MotionEvent.ACTION_UP) {
+ if (hasValidOutsideAmountWidgetTouch(e.x, e.y)) {
+ presenter.calcExrate()
+ return true
+ }
+ }
+ return super.onSingleTapUp(e)
}
- }
- private fun registerAvailableTextWatchersForEditText(editText: EditText?, action: Boolean) {
- when (editText!!.id) {
- R.id.sendAmountEdTxt -> if (action) sendMoneyEditText!!.addTextChangedListener(
- sendAmountTextWatcher
- ) else sendMoneyEditText!!.removeTextChangedListener(sendAmountTextWatcher)
- R.id.receiveAmountEdTxt -> if (action) recieveMoneyEditText!!.addTextChangedListener(
- recepientAmountTextWatcher
- ) else recieveMoneyEditText!!.removeTextChangedListener(recepientAmountTextWatcher)
+ private fun hasValidOutsideAmountWidgetTouch(x: Float, y: Float): Boolean {
+ val posX = x.toInt()
+ val posY = y.toInt()
+ val sendMoneyLeftAndTopCoordinates = IntArray(2)
+ val receiveMoneyLeftAndTopCoordinates = IntArray(2)
+
+// sendMoneyViewContainer.getLocationOnScreen(sendMoneyLeftAndTopCoordinates);
+ val sendMoneyBoundRect = Rect(
+ sendMoneyLeftAndTopCoordinates[0], sendMoneyLeftAndTopCoordinates[1],
+ sendMoneyLeftAndTopCoordinates[0] + binding.sendAmountEdTxt.getMeasuredWidth(),
+ sendMoneyLeftAndTopCoordinates[1] + binding.sendAmountEdTxt.getMeasuredHeight()
+ )
+ val receiveMoneyBoundRect = Rect(
+ receiveMoneyLeftAndTopCoordinates[0], receiveMoneyLeftAndTopCoordinates[1],
+ receiveMoneyLeftAndTopCoordinates[0] + binding.receiveAmountEdTxt.getMeasuredWidth(),
+ receiveMoneyLeftAndTopCoordinates[1] + binding.receiveAmountEdTxt.getMeasuredHeight()
+ )
+ return ((binding.receiveAmountEdTxt.hasFocus() || binding.sendAmountEdTxt.hasFocus())
+ && !sendMoneyBoundRect.contains(posX, posY)
+ && !receiveMoneyBoundRect.contains(posX, posY)
+ )
}
}
- private inner class SendAmountTextWatcher : TextWatcher {
+
+ inner class SendAmountTextWatcher(editText: EditText?) :
+ CurrencyFormatterTextWatcher(editText) {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable) {
- shouldCaulatedByRecipient = false
- updateRecievingAmount("")
- updateButtonToCalculate(true)
- showTransferfeeAndExRate(false, "", "", "")
+ super.afterTextChanged(s)
+ presenter.setCalcByPayoutAmount(false)
+ presenter.setCAmount(s.toString())
}
}
- private inner class RecipientAmountTextWatcher : TextWatcher {
+ inner class ReceiveAmountTextWatcher(editText: EditText?) :
+ CurrencyFormatterTextWatcher(editText) {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable) {
- shouldCaulatedByRecipient = true
- updateSendAmount("")
- updateButtonToCalculate(true)
- showTransferfeeAndExRate(false, "", "", "")
+ super.afterTextChanged(s)
+ presenter.setCalcByPayoutAmount(true)
+ presenter.setPAmount(s.toString())
}
}
- private inner class RewardsPointTextWatcher : TextWatcher {
- override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
- override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- val strEnteredVal = binding.edRewardsPoint!!.text.toString()
- if (!strEnteredVal.isEmpty()) {
- val num = strEnteredVal.toInt()
- if (num > rewardPoint!!.toInt()) {
- iv_rewardsPoint!!.error = "You cannot use more than $rewardPoint"
- continueBtn!!.isEnabled = false
- } else {
- iv_rewardsPoint!!.error = null
- continueBtn!!.isEnabled = true
- }
- }
- }
+ fun setBannerData() {
+ val data: MutableList = ArrayList()
+ var url = arrayOf(
+ "https://cdn.imepay.com.np:9001/Handler/AdminImageHandler.ashx?img=GF84cX%2fW3XJc0WxXb93%2fjgTfdYUWuYswsB5R6endZc84sA%2bJ9cUB06Km7M9P1ULW," +
+ "https://cdn.imepay.com.np:9001/Handler/AdminImageHandler.ashx?img=GF84cX%2fW3XJc0WxXb93%2fjgTfdYUWuYswsB5R6endZc84sA%2bJ9cUB06Km7M9P1ULW," +
+ "https://cdn.imepay.com.np:9001/Handler/AdminImageHandler.ashx?img=GF84cX%2fW3XJc0WxXb93%2fjgTfdYUWuYswsB5R6endZc84sA%2bJ9cUB06Km7M9P1ULW"
+ )
- override fun afterTextChanged(s: Editable) {
- shouldCaulatedByRecipient = false
- updateRecievingAmount("")
- updateButtonToCalculate(true)
- showTransferfeeAndExRate(false, "", "", "")
+ for (i in url) {
+ val bannerModel = BannerModel(i)
+ data.add(bannerModel)
}
- }
+ val bannerViewAdapter = BannerViewAdapter(data)
- class CouponDetailViewDTO(var couponName: String, var appliedAmount: String) {
- override fun toString(): String {
- return "CouponDetailViewDTO{" +
- "couponName='" + couponName + '\'' +
- ", appliedAmount='" + appliedAmount + '\'' +
- '}'
+ val lm = LinearLayoutManager(
+ binding.bannerView.getContext(),
+ LinearLayoutManager.HORIZONTAL,
+ false
+ )
+ binding.bannerView.layoutManager = lm
+ binding.bannerView.adapter = bannerViewAdapter
+ binding.bannerView.setOnFlingListener(null)
+ val snapHelper = PagerSnapHelper()
+ snapHelper.attachToRecyclerView(binding.bannerView)
+
+ if (data.size > 1) {
+// bannerView.addItemDecoration(new LinePagerIndicatorDecoration());
+ binding.indicator.attachToRecyclerView(binding.bannerView, snapHelper)
}
- }
- fun showFootNote(footNote: String?) {
-// if (footNote == null || footNote.isEmpty()) {
-// idSendMoneyFootNoteContainer!!.visibility = View.INVISIBLE
-// } else {
-// sendMoneyNoteText!!.text = footNote
-// idSendMoneyFootNoteContainer!!.visibility = View.VISIBLE
-// }
- }
-
- fun updateRewardDetails(rewardsPointDTO: RewardsPointDTO) {
- if (rewardsPointDTO.showRewardPoint.equals("y", ignoreCase = true)) {
- binding.rewardsPointsContainer!!.visibility = View.VISIBLE
- //pointsAvailableText.setText("You have " + rewardsPointDTO.getPoint() + " reward points available");
- binding.pointsAvailableText!!.text = rewardsPointDTO.rewardMessage
- rewardPoint = rewardsPointDTO.point
- }
+ val timer = Timer()
+ timer.scheduleAtFixedRate(object : TimerTask() {
+ override fun run() {
+ if (scrollPosition >= data.size) scrollPosition = 0
+ binding.bannerView.post(Runnable { // scrollPosition = lm.findFirstVisibleItemPosition();
+ ++scrollPosition
+ if (scrollPosition > data.size - 1) {
+ scrollPosition = 0
+ binding.bannerView.scrollToPosition(scrollPosition)
+ } else {
+ binding.bannerView.smoothScrollToPosition(scrollPosition)
+ }
+ })
+ }
+ }, 500, 3500)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAdapter.kt b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAdapter.kt
index d5ec0ca0..7c58201f 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAdapter.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAdapter.kt
@@ -40,13 +40,12 @@ class MyBeneficiariesAdapter(private var data: MutableList
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = data[position]
holder.bindings.rvInitials.setOnClickListener {
- val activity : HomeActivityV3 = mContext as HomeActivityV3
- var intent = Intent(mContext, BeneficiaryDetailActivity::class.java)
- intent.putExtra("receiverInfoModel", item)
- activity.startActivityForResult(intent , 101)
- activity.setSendData(SendMoneyRequiredDataV3(item))
+
+ }
+ holder.bindings.constMain.setOnClickListener{
+ listener?.onRecipientSelected(item)
}
- holder.itemView.setOnClickListener{
+ holder.bindings.rvInitials.setOnClickListener{
listener?.onRecipientSelected(item)
}
holder.bindings.tvName.text = item.fullName
diff --git a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt
index 16e556d8..ffda855e 100644
--- a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt
+++ b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt
@@ -19,6 +19,7 @@ import com.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDi
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog.GenericDialogPromptListener
import com.remit.jmecustomer.databinding.FragmentMyTransfersBinding
+import com.remit.jmecustomer.features.beneficiaryDetail.BeneficiaryDetailActivity
import com.remit.jmecustomer.features.homeV3.view.HomeActivityV3
import com.remit.jmecustomer.features.inboundreceipt.view.InboundRemitReceiptActivity
import com.remit.jmecustomer.features.myTransfers.adapters.RecentTransactionsAdapter
@@ -47,7 +48,7 @@ class MyTransfersFragment : BaseFragment(),
private var adapter: MyBeneficiariesAdapter? = null
private var recentAdapter: RecentTransactionsAdapter? = null
- var presenter: RecipientListingV3PresenterInterface? = null
+ var presenter: RecipientListingV3PresenterInterface? = null
private var searchEditTextTextWatcher: SearchEditTextTextWatcher? = null
private var _binding: FragmentMyTransfersBinding? = null
@@ -80,7 +81,7 @@ class MyTransfersFragment : BaseFragment(),
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
binding.recipientListRv.layoutManager = layoutManager
var data: ArrayList = ArrayList()
- adapter = MyBeneficiariesAdapter(data , this)
+ adapter = MyBeneficiariesAdapter(data, this)
binding.recipientListRv.adapter = adapter
val layoutManagerVertical = LinearLayoutManager(activity)
@@ -95,8 +96,6 @@ class MyTransfersFragment : BaseFragment(),
override fun onStart() {
super.onStart()
- binding.edtSearchTransfers!!.addTextChangedListener(searchEditTextTextWatcher)
- binding.addRecipientView.setOnClickListener(this)
}
override fun onStop() {
@@ -113,6 +112,9 @@ class MyTransfersFragment : BaseFragment(),
presenterTransaction = ViewModelProvider(requireActivity()).get(
TransactionHistoryV2Presenter::class.java
)
+
+ binding.edtSearchTransfers!!.addTextChangedListener(searchEditTextTextWatcher)
+ binding.addRecipientView.setOnClickListener(this)
}
private fun performDefaultAction(savedInstance: Bundle?) {
@@ -128,7 +130,7 @@ class MyTransfersFragment : BaseFragment(),
}
- override fun showAllRecipientToUser(
+ override fun showAllRecipientToUser(
recipientInfoModelList: MutableList,
changeLayoutBehavior: Boolean
) {
@@ -151,7 +153,7 @@ class MyTransfersFragment : BaseFragment(),
override fun onEmailCodeNegativeButtonPressed() {}
- override fun onEmailCodePositiveBtnPressed(emailCode: String?) {
+ override fun onEmailCodePositiveBtnPressed(emailCode: String?) {
presenter?.verifyEmailCode(emailCode)
}
@@ -179,7 +181,7 @@ class MyTransfersFragment : BaseFragment(),
)
}
- override fun redirectToSendMoney(sendMoneyRequiredDataV3: SendMoneyRequiredDataV3?) {
+ override fun redirectToSendMoney(sendMoneyRequiredDataV3: SendMoneyRequiredDataV3?) {
// val intent = Intent(requireContext(), SendMoneyV2Activity::class.java)
// intent.putExtra(
// RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3,
@@ -189,10 +191,9 @@ class MyTransfersFragment : BaseFragment(),
// intent,
// RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3
// )
- (requireActivity() as HomeActivityV3).binding.vpDashboard.currentItem = 0
}
- override fun proceedToEditRecipient(recipientInfoModel: ReceiverInfoV3Model) {
+ override fun proceedToEditRecipient(recipientInfoModel: ReceiverInfoV3Model) {
val intent = Intent(requireContext(), RecipientAddEditV3Activity::class.java)
intent.putExtra(RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3, recipientInfoModel)
startActivityForResult(
@@ -230,15 +231,18 @@ class MyTransfersFragment : BaseFragment(),
)
}
- override fun onRecipientSelected(recipientInfoModel: ReceiverInfoV3Model) {
- if (recipientInfoModel.hasVerifiedOTP) {
- presenter!!.saveSelectedRecipientInfomation(recipientInfoModel)
- } else {
- proceedToShowTermsConditions(recipientInfoModel)
- }
+ override fun onRecipientSelected(recipientInfoModel: ReceiverInfoV3Model) {
+// if (recipientInfoModel.hasVerifiedOTP) {
+// presenter!!.saveSelectedRecipientInfomation(recipientInfoModel)
+// } else {
+// proceedToShowTermsConditions(recipientInfoModel)
+// }
+ val intent = Intent(requireActivity(), BeneficiaryDetailActivity::class.java)
+ intent.putExtra("receiverInfoModel", recipientInfoModel)
+ startActivity(intent)
}
- override fun proceedToDeleteRecipient(receiverInfoV3Model: ReceiverInfoV3Model) {
+ override fun proceedToDeleteRecipient(receiverInfoV3Model: ReceiverInfoV3Model) {
showBeneficiaryDeleteConfirmDialog(receiverInfoV3Model)
}
@@ -262,9 +266,9 @@ class MyTransfersFragment : BaseFragment(),
}
- internal class SearchEditTextTextWatcher : TextWatcherAdapter() {
+ inner class SearchEditTextTextWatcher : TextWatcherAdapter() {
override fun onTextUpdated(text: String) {
-// this.presenter.searchForReciever(text)
+ presenter?.searchForReciever(text)
}
}
diff --git a/app/src/main/java/com/remit/jmecustomer/features/userprofile/view/ProfileFragment.kt b/app/src/main/java/com/remit/jmecustomer/features/userprofile/view/ProfileFragment.kt
new file mode 100644
index 00000000..f3ba5974
--- /dev/null
+++ b/app/src/main/java/com/remit/jmecustomer/features/userprofile/view/ProfileFragment.kt
@@ -0,0 +1,110 @@
+package com.remit.jmecustomer.features.userprofile.view
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.remit.jmecustomer.R
+import com.remit.jmecustomer.base.BaseFragment
+import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog
+import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog.GenericDialogPromptListener
+import com.remit.jmecustomer.databinding.FragmentProfileBinding
+import com.remit.jmecustomer.features.aboutscreen.view.AboutJMERemit
+import com.remit.jmecustomer.features.customersupport.view.CustomerSupportFragment
+import com.remit.jmecustomer.features.depositinfo.view.DepositInfo
+import com.remit.jmecustomer.features.homeV3.view.HomeActivityV3
+import com.remit.jmecustomer.features.homeV3.view.HomeFragmentV3
+import com.remit.jmecustomer.features.loyaltypoints.view.LoyaltyPointsActivity
+import com.remit.jmecustomer.features.mynotifications.view.MyNotificationActivity
+import com.remit.jmecustomer.features.settings.view.SettingsView
+import com.remit.jmecustomer.features.walletstatement.view.WalletStatementV2Activity
+
+class ProfileFragment : BaseFragment(), View.OnClickListener {
+ private var _binding: FragmentProfileBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ _binding = FragmentProfileBinding.inflate(inflater, container, false)
+ init()
+ return binding.root
+ }
+
+ fun init() {
+ binding.llPaymentLayout.setOnClickListener(this)
+ binding.llAboutUsLayout.setOnClickListener(this)
+ binding.llFaqLayout.setOnClickListener(this)
+ binding.rlLogout.setOnClickListener(this)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ }
+
+ override fun onClick(view: View) {
+ when (view.id) {
+ R.id.ll_faq_layout -> {
+ val newFragment = CustomerSupportFragment.newInstance()
+ newFragment.show(requireActivity().supportFragmentManager, "dialog")
+ }
+ R.id.ll_about_us_layout -> startActivity(
+ Intent(
+ requireActivity(),
+ AboutJMERemit::class.java
+ )
+ )
+ R.id.view_setting -> startActivity(Intent(requireActivity(), SettingsView::class.java))
+ R.id.rl_logout -> {
+ showLogoutConfirmationDialog()
+ }
+ R.id.view_account_statement -> startActivity(
+ Intent(
+ requireActivity(),
+ WalletStatementV2Activity::class.java
+ )
+ )
+ R.id.iv_notification -> startActivity(
+ Intent(
+ requireActivity(),
+ MyNotificationActivity::class.java
+ )
+ )
+ R.id.ll_payment_layout -> startActivity(
+ Intent(
+ requireActivity(),
+ DepositInfo::class.java
+ )
+ )
+ R.id.view_loyalty_points -> startActivity(
+ Intent(
+ requireActivity(),
+ LoyaltyPointsActivity::class.java
+ )
+ )
+ }
+ }
+
+ private fun showLogoutConfirmationDialog() {
+ val genericPromptDialog = GenericPromptDialog()
+ genericPromptDialog.setTitleMessage(getString(R.string.logout_text))
+ genericPromptDialog.setBodyMessage(getString(R.string.logout_confirmation_text))
+ genericPromptDialog.setIconsRes(-1)
+ genericPromptDialog.setCancellable(true)
+ genericPromptDialog.setPositiveBtnString(getString(R.string.yes_text))
+ genericPromptDialog.setNegativeBtnString(getString(R.string.no_text))
+ genericPromptDialog.setListener(object : GenericDialogPromptListener {
+ override fun onNegativeBtnPressed() {}
+ override fun onPositiveBtnPressed() {
+ (requireActivity() as HomeActivityV3).performLogout()
+ }
+ })
+ if (!genericPromptDialog.isAdded) genericPromptDialog.show(
+ requireActivity().supportFragmentManager,
+ "PROMPTSENDMONEY"
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/banner_round_bg.xml b/app/src/main/res/drawable/banner_round_bg.xml
new file mode 100644
index 00000000..31855583
--- /dev/null
+++ b/app/src/main/res/drawable/banner_round_bg.xml
@@ -0,0 +1,13 @@
+
+
+
+ -
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/blue_dot.xml b/app/src/main/res/drawable/blue_dot.xml
new file mode 100644
index 00000000..883d7b71
--- /dev/null
+++ b/app/src/main/res/drawable/blue_dot.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/circle_bullet.xml b/app/src/main/res/drawable/circle_bullet.xml
new file mode 100644
index 00000000..1fc0b5ec
--- /dev/null
+++ b/app/src/main/res/drawable/circle_bullet.xml
@@ -0,0 +1,8 @@
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/fingerprint_24px.xml b/app/src/main/res/drawable/fingerprint_24px.xml
new file mode 100644
index 00000000..316c63d9
--- /dev/null
+++ b/app/src/main/res/drawable/fingerprint_24px.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/grey_border_dark_indicator.xml b/app/src/main/res/drawable/grey_border_dark_indicator.xml
new file mode 100644
index 00000000..4bb5877d
--- /dev/null
+++ b/app/src/main/res/drawable/grey_border_dark_indicator.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_language.xml b/app/src/main/res/drawable/ic_language.xml
new file mode 100644
index 00000000..5897fbb8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_language.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ico_profile.png b/app/src/main/res/drawable/ico_profile.png
new file mode 100755
index 00000000..1687e85c
Binary files /dev/null and b/app/src/main/res/drawable/ico_profile.png differ
diff --git a/app/src/main/res/drawable/phonelink_lock_24px.xml b/app/src/main/res/drawable/phonelink_lock_24px.xml
new file mode 100644
index 00000000..ff8ae552
--- /dev/null
+++ b/app/src/main/res/drawable/phonelink_lock_24px.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/round_help_24px.xml b/app/src/main/res/drawable/round_help_24px.xml
new file mode 100644
index 00000000..667b0201
--- /dev/null
+++ b/app/src/main/res/drawable/round_help_24px.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/round_perm_phone_msg_24px.xml b/app/src/main/res/drawable/round_perm_phone_msg_24px.xml
new file mode 100644
index 00000000..cf60f2f2
--- /dev/null
+++ b/app/src/main/res/drawable/round_perm_phone_msg_24px.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/round_person_24px.xml b/app/src/main/res/drawable/round_person_24px.xml
new file mode 100644
index 00000000..a3a1a128
--- /dev/null
+++ b/app/src/main/res/drawable/round_person_24px.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/layout/banner_item.xml b/app/src/main/res/layout/banner_item.xml
new file mode 100644
index 00000000..d0eec1db
--- /dev/null
+++ b/app/src/main/res/layout/banner_item.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/banner_view_layout.xml b/app/src/main/res/layout/banner_view_layout.xml
new file mode 100644
index 00000000..8204ccf7
--- /dev/null
+++ b/app/src/main/res/layout/banner_view_layout.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_home_new.xml b/app/src/main/res/layout/fragment_home_new.xml
index e76bb0b9..65383220 100644
--- a/app/src/main/res/layout/fragment_home_new.xml
+++ b/app/src/main/res/layout/fragment_home_new.xml
@@ -155,7 +155,7 @@
android:layout_width="@dimen/_30sdp"
android:layout_height="@dimen/_30sdp"
android:layout_marginRight="@dimen/_40sdp"
- android:src="@drawable/flag_nepal"
+ android:src="@drawable/flag_japan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_currency"
@@ -362,5 +362,39 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_arrow_right" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml
new file mode 100644
index 00000000..eed21b74
--- /dev/null
+++ b/app/src/main/res/layout/fragment_profile.xml
@@ -0,0 +1,632 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+\
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/row_fragment_beneficiaries.xml b/app/src/main/res/layout/row_fragment_beneficiaries.xml
index 61cb7c52..a76682ed 100644
--- a/app/src/main/res/layout/row_fragment_beneficiaries.xml
+++ b/app/src/main/res/layout/row_fragment_beneficiaries.xml
@@ -2,6 +2,7 @@
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 0873b058..05b37a52 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -80,4 +80,7 @@
#1A0052FF
#0000001F
#CC0000
+ #70e2cecf
+ #e0f4f4f4
+ #F5F5F5
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 17c89f7b..8f0ac3f6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -661,4 +661,5 @@
ID Number
Driving License
Invalid Driving License
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index c9e5ee3c..2116724a 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -21,6 +21,15 @@
- true
+
+
+