Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package id.co.bri.brimons.features.openaccountns.ui.activity
- import android.animation.Animator
- import android.animation.AnimatorListenerAdapter
- import android.animation.ValueAnimator
- import android.app.Activity
- import android.content.Intent
- import android.os.Bundle
- import android.view.View
- import androidx.recyclerview.widget.LinearLayoutManager
- import androidx.recyclerview.widget.RecyclerView
- import dagger.hilt.android.AndroidEntryPoint
- import id.co.bri.brimons.R
- import id.co.bri.brimons.adapters.DetailTransaksiRevampAdapter
- import id.co.bri.brimons.databinding.ActivityOpenAccountNonSuccessBinding
- import id.co.bri.brimons.features.openaccountns.contract.IPresenter.IOpenAccountNonSuccessPresenter
- import id.co.bri.brimons.features.openaccountns.contract.IView.IOpenAccountNonSuccessView
- import id.co.bri.brimons.features.openaccountns.utils.ConstantOpenAccount.JunioEndpoint.V3_OPEN_ACCOUNT_JUNIO_PAYMENT
- import id.co.bri.brimons.features.openaccountns.utils.ConstantOpenAccount.ValasEndpoint.V3_OPEN_ACCOUNT_VALAS_PAYMENT
- import id.co.bri.brimons.models.apimodel.response.ReceiptRevampResponse
- import id.co.bri.brimons.ui.activities.base.NewSkinBaseActivity
- import id.co.bri.brimons.ui.activities.bukarekeningreskin.ReceiptTabunganNewSkinActivity
- import id.co.bri.brimons.ui.activities.dashboard.DashboardIBReskinActivity
- import id.co.bri.brimons.uikit.extension.view.gone
- import id.co.bri.brimons.uikit.extension.view.visible
- import javax.inject.Inject
- @AndroidEntryPoint
- class OpenAccountNonSuccessActivity : NewSkinBaseActivity(), IOpenAccountNonSuccessView {
- private lateinit var binding: ActivityOpenAccountNonSuccessBinding
- @Inject
- lateinit var presenter: IOpenAccountNonSuccessPresenter<IOpenAccountNonSuccessView>
- private var detailTransaksiRevampAdapter: DetailTransaksiRevampAdapter? = null
- private var sumberTransaksiRevAdapter: DetailTransaksiRevampAdapter? = null
- private var isHide: Boolean = false
- companion object {
- enum class STATUS {
- PENDING, FAILED
- }
- private var mPendingResponse: ReceiptRevampResponse? = null
- private var mStatus: STATUS = STATUS.PENDING
- private var mProductType: String = ""
- fun launchIntent(
- caller: Activity,
- paymentResponse: ReceiptRevampResponse,
- status: STATUS,
- productType: String,
- ) {
- val intent = Intent(caller, OpenAccountNonSuccessActivity::class.java)
- mPendingResponse = paymentResponse
- mStatus = status
- mProductType = productType
- caller.startActivity(intent)
- }
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityOpenAccountNonSuccessBinding.inflate(layoutInflater)
- setContentView(binding.root)
- injectDependency()
- setupView()
- }
- private fun injectDependency() {
- presenter.view = this
- presenter.start()
- }
- private fun setupView() {
- with(binding) {
- setStatusColorAndStatusBar(R.color.highlightColor, View.SYSTEM_UI_FLAG_VISIBLE)
- tvContactSubtitle.text = mPendingResponse?.contactInfo?.description
- tvTitleTime.text = mPendingResponse?.transactionDate
- when (mStatus) {
- STATUS.PENDING -> {
- animationView.setImageResource(R.drawable.hour_glass_pending)
- tvTitle.text = getString(R.string.open_account_pending_title)
- buttonPrimary.text = getString(R.string.retry)
- buttonPrimary.setOnClickListener {
- presenter.checkStatus(
- endpointUrl = setPaymentEndpointUrl(),
- referenceNumber = mPendingResponse?.referenceNumber.orEmpty()
- )
- }
- buttonSecondary.text = getString(R.string.help_center)
- buttonSecondary.setOnClickListener {
- //TODO Pusat Banuan
- }
- }
- STATUS.FAILED -> {
- animationView.setImageResource(R.drawable.ic_open_account_failed)
- tvTitle.text = getString(R.string.open_account_failed_title)
- buttonPrimary.text = getString(R.string.create_report)
- buttonPrimary.setOnClickListener {
- //TODO Buat laporan
- }
- buttonSecondary.text = getString(R.string.mengerti)
- buttonSecondary.setOnClickListener {
- startActivity(
- Intent(
- this@OpenAccountNonSuccessActivity,
- DashboardIBReskinActivity::class.java
- )
- )
- finish()
- }
- }
- }
- initDetail()
- }
- }
- private fun initDetail() {
- binding.llSeeDetail.setOnClickListener {
- if (isHide) {
- isHiding(false)
- } else {
- isHiding(true)
- }
- }
- binding.rvReferenceView.apply {
- setHasFixedSize(true)
- layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
- detailTransaksiRevampAdapter =
- DetailTransaksiRevampAdapter(mPendingResponse?.referenceDataView, context)
- adapter = detailTransaksiRevampAdapter
- }
- binding.rvHeaderDataView.apply {
- setHasFixedSize(true)
- layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
- detailTransaksiRevampAdapter =
- DetailTransaksiRevampAdapter(mPendingResponse?.headerDataView, context)
- adapter = detailTransaksiRevampAdapter
- }
- binding.rvNomorRekening.apply {
- setHasFixedSize(true)
- layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
- detailTransaksiRevampAdapter =
- DetailTransaksiRevampAdapter(mPendingResponse?.transactionDataViewPending, context)
- adapter = detailTransaksiRevampAdapter
- }
- binding.rvSetoranAwal.apply {
- setHasFixedSize(true)
- layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
- sumberTransaksiRevAdapter =
- DetailTransaksiRevampAdapter(mPendingResponse?.amountDataView, context)
- adapter = sumberTransaksiRevAdapter
- }
- if (mPendingResponse?.amountDataView == null) {
- binding.viewAmountDataView.visibility = View.GONE
- }
- }
- private fun setPaymentEndpointUrl(): String {
- return when {
- //Britama
- mProductType.equals("TA", ignoreCase = true) -> {
- ""
- }
- //Valas
- mProductType.equals("TM", ignoreCase = true) -> {
- V3_OPEN_ACCOUNT_VALAS_PAYMENT
- }
- //Bisnis
- mProductType.equals("VM", ignoreCase = true) -> {
- ""
- }
- //Rencana
- mProductType.equals("BF", ignoreCase = true) -> {
- ""
- }
- //Junio
- mProductType.equals("VA", ignoreCase = true) -> {
- V3_OPEN_ACCOUNT_JUNIO_PAYMENT
- }
- else -> ""
- }
- }
- private fun isHiding(isHiding: Boolean) {
- isHide = isHiding
- binding.tvDetail.text = if (isHiding) getString(R.string.sembunyikan) else getString(R.string.lihat_detail)
- val rotationAngle = if (isHiding) 180f else 0f
- binding.ivDetailArrow.animate().rotation(rotationAngle).setDuration(300).start()
- if (isHiding) {
- binding.llDetail.visible()
- binding.llContact.visible()
- binding.llDetail.post {
- binding.llDetail.measure(
- View.MeasureSpec.makeMeasureSpec(binding.llDetail.width, View.MeasureSpec.EXACTLY),
- View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
- )
- val targetHeight = binding.llDetail.measuredHeight
- runHeightAnimator(0, targetHeight)
- }
- } else {
- val initialHeight = binding.llDetail.height
- runHeightAnimator(initialHeight, 0) {
- binding.llDetail.gone()
- binding.llContact.gone()
- }
- }
- }
- private fun runHeightAnimator(start: Int, end: Int, onEnd: (() -> Unit)? = null) {
- ValueAnimator.ofInt(start, end).apply {
- duration = 300
- addUpdateListener { animation ->
- binding.llDetail.layoutParams.height = animation.animatedValue as Int
- binding.llDetail.requestLayout()
- }
- addListener(object : AnimatorListenerAdapter() {
- override fun onAnimationEnd(animation: Animator) {
- onEnd?.invoke()
- }
- })
- start()
- }
- }
- override fun onSuccessCheckStatus(data: ReceiptRevampResponse) {
- ReceiptTabunganNewSkinActivity.launchIntent(
- this,
- data,
- false,
- getString(R.string.txt_btn_selesai),
- )
- }
- override fun onPendingCheckStatus(data: ReceiptRevampResponse) {
- launchIntent(
- this,
- data,
- STATUS.PENDING,
- mProductType
- )
- finish()
- }
- override fun onFailedCheckStatus(data: ReceiptRevampResponse) {
- launchIntent(
- this,
- data,
- STATUS.FAILED,
- mProductType
- )
- finish()
- }
- override fun onDestroy() {
- presenter.stop()
- super.onDestroy()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment