Browse Source

issue fixes and ui changes

new_design
Mohan Shiwakoti 1 year ago
parent
commit
8f774040d1
  1. 4
      .idea/assetWizardSettings.xml
  2. 7
      app/src/main/AndroidManifest.xml
  3. 2
      app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt
  4. 2
      app/src/main/java/com/remit/jmecustomer/features/depositslip/view/DepositSlipActivity.java
  5. 80
      app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt
  6. 112
      app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt
  7. 88
      app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAllAdapter.kt
  8. 59
      app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt
  9. 16
      app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt
  10. 70
      app/src/main/java/com/remit/jmecustomer/features/userprofile/view/ProfileFragment.kt
  11. 10
      app/src/main/java/com/remit/jmecustomer/utils/Utils.java
  12. 1
      app/src/main/java/com/remit/jmecustomer/utils/https/ApiEndpoints.java
  13. BIN
      app/src/main/res/drawable-hdpi/icon_location.png
  14. BIN
      app/src/main/res/drawable-hdpi/icon_male_user.png
  15. BIN
      app/src/main/res/drawable-hdpi/icon_people.png
  16. BIN
      app/src/main/res/drawable-hdpi/icon_phone.png
  17. BIN
      app/src/main/res/drawable-ldpi/icon_location.png
  18. BIN
      app/src/main/res/drawable-ldpi/icon_male_user.png
  19. BIN
      app/src/main/res/drawable-ldpi/icon_people.png
  20. BIN
      app/src/main/res/drawable-ldpi/icon_phone.png
  21. BIN
      app/src/main/res/drawable-mdpi/icon_location.png
  22. BIN
      app/src/main/res/drawable-mdpi/icon_male_user.png
  23. BIN
      app/src/main/res/drawable-mdpi/icon_people.png
  24. BIN
      app/src/main/res/drawable-mdpi/icon_phone.png
  25. BIN
      app/src/main/res/drawable-xhdpi/icon_location.png
  26. BIN
      app/src/main/res/drawable-xhdpi/icon_male_user.png
  27. BIN
      app/src/main/res/drawable-xhdpi/icon_people.png
  28. BIN
      app/src/main/res/drawable-xhdpi/icon_phone.png
  29. BIN
      app/src/main/res/drawable-xxhdpi/icon_location.png
  30. BIN
      app/src/main/res/drawable-xxhdpi/icon_male_user.png
  31. BIN
      app/src/main/res/drawable-xxhdpi/icon_people.png
  32. BIN
      app/src/main/res/drawable-xxhdpi/icon_phone.png
  33. BIN
      app/src/main/res/drawable-xxxhdpi/icon_location.png
  34. BIN
      app/src/main/res/drawable-xxxhdpi/icon_male_user.png
  35. BIN
      app/src/main/res/drawable-xxxhdpi/icon_people.png
  36. BIN
      app/src/main/res/drawable-xxxhdpi/icon_phone.png
  37. BIN
      app/src/main/res/drawable/account.png
  38. 29
      app/src/main/res/drawable/account.xml
  39. 17
      app/src/main/res/drawable/change__password.xml
  40. 48
      app/src/main/res/drawable/change_pin.xml
  41. 23
      app/src/main/res/drawable/contact_us.xml
  42. 20
      app/src/main/res/drawable/refer_earn.xml
  43. 16
      app/src/main/res/drawable/reward_points.xml
  44. 19
      app/src/main/res/layout/activity_beneficiary_detail.xml
  45. 1
      app/src/main/res/layout/activity_home_v3.xml
  46. 20
      app/src/main/res/layout/fragment_beneficiary_all.xml
  47. 19
      app/src/main/res/layout/fragment_home_new.xml
  48. 11
      app/src/main/res/layout/fragment_my_transfers.xml
  49. 219
      app/src/main/res/layout/fragment_profile.xml
  50. 47
      app/src/main/res/layout/row_all_beneficiary.xml
  51. 4
      app/src/main/res/xml/file_paths.xml

4
.idea/assetWizardSettings.xml

@ -318,8 +318,8 @@
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="ic_upload_slip" />
<entry key="sourceFile" value="$USER_HOME$/Downloads/JME 2/upload slip.svg" />
<entry key="outputName" value="reward_points" />
<entry key="sourceFile" value="$USER_HOME$/Downloads/Icons_JME 2/reward_points.svg" />
</map>
</option>
</PersistentState>

7
app/src/main/AndroidManifest.xml

@ -21,6 +21,8 @@
android:allowBackup="false"
android:debuggable="false"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
android:hardwareAccelerated="true"
android:label="@string/app_name"
android:largeHeap="true"
android:networkSecurityConfig="@xml/network_security_config"
@ -288,6 +290,11 @@
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name=".features.myTransfers.view.MyBeneficiaryAllActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name="com.remit.jmecustomer.features.walletstatement.view.WalletStatementV2Activity"
android:screenOrientation="portrait"

2
app/src/main/java/com/remit/jmecustomer/features/beneficiaryDetail/BeneficiaryDetailActivity.kt

@ -48,7 +48,7 @@ class BeneficiaryDetailActivity : BaseActivity() {
override fun onItemClicked(paymentMethodV3Model: PaymentMethodV3Model) {
isPaymentSelected = true
receiverInfoModel?.paymentMethod = paymentMethodV3Model
receiverInfoModel?.receiverId = paymentMethodV3Model.id
receiverInfoModel?.receiverId = paymentMethodV3Model.agent.id
receiverInfoModel?.agent = paymentMethodV3Model.agent
}

2
app/src/main/java/com/remit/jmecustomer/features/depositslip/view/DepositSlipActivity.java

@ -71,7 +71,7 @@ public class DepositSlipActivity extends BaseActivity implements DepositSlipPres
public static final int GALLERY_REQUEST_ID_FRONT = 6000;
public static final int GALLERY_REQUEST_ID_BACK = 7000;
private static final int COMPRESS_QUALITY = 70;
public static final int COMPRESS_QUALITY = 70;
@BindView(R.id.toolbar_title)
JmeTextView toolBarTitle;

80
app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeActivityV3.kt

@ -6,6 +6,7 @@ import android.os.Bundle
import android.os.Handler
import android.text.Html
import android.view.View
import android.view.ViewGroupOverlay
import android.widget.TextView
import androidx.annotation.LayoutRes
import androidx.appcompat.app.AppCompatActivity
@ -44,6 +45,7 @@ import com.remit.jmecustomer.features.home.presenter.HomeV2PresenterInterface
import com.remit.jmecustomer.features.home.presenter.HomeViewModel
import com.remit.jmecustomer.features.home.view.HomeActivityV2
import com.remit.jmecustomer.features.home.view.HomeFragmentV2
import com.remit.jmecustomer.features.home.view.notifications.DimBackgroundView
import com.remit.jmecustomer.features.homeV3.HomePagerAdapter
import com.remit.jmecustomer.features.kyc.existingCustomer.view.ExistingKYCV3Activity
import com.remit.jmecustomer.features.kyc.newCustomer.view.KYCV3Activity
@ -65,9 +67,7 @@ import com.remit.jmecustomer.features.sendmoney.view.SendMoneyActionListener
import com.remit.jmecustomer.features.sendmoney.view.SendMoneyRequestSummaryActivity
import com.remit.jmecustomer.features.sendmoney.view.SendMoneyScreenManager
import com.remit.jmecustomer.features.settings.view.FingerprintEnablePromptActivity
import com.remit.jmecustomer.features.transactionhistory.RemitTransactionViewModelFactory
import com.remit.jmecustomer.features.transactionhistory.presenter.TransactionHistoryV2Presenter
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
@ -91,7 +91,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
// private HomeV2PresenterInterface presenter;
private var viewModel: HomeViewModel? = null
private val notificationViewBoundry: Rect? = null
private var notificationViewBoundry: Rect? = null
private var isNotificaitonViewActive = false
private var presenter: SendMoneyV2PresenterInterface? = null
private var sendMoneyRequiredData: SendMoneyRequiredDataV3? = null
@ -202,7 +202,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showSendMoneyView() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -214,12 +214,12 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
override fun showTodaysRateView() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
startActivity(Intent(this, ExchangeRateActivity::class.java))
}
override fun showWalletStatment() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -230,7 +230,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showNoticeScreen() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -241,7 +241,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showRecipientView() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -252,7 +252,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showTransactionHistoryView() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -263,7 +263,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showRenewIdScreen() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -274,7 +274,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showDepositSlipScreen() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -285,7 +285,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showTrustDock() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -304,26 +304,26 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
override fun dimOutMenu(notificationViewBoundry: Rect, action: Boolean) {
// val viewGroupOverlay: ViewGroupOverlay = content_view.getOverlay()
// if (action && !isNotificaitonViewActive) {
// val view = DimBackgroundView(content_view.getContext())
// view.left = 0
// view.top = notificationViewBoundry.bottom - statusBarHeight
// view.right = content_view.getWidth()
// view.bottom = content_view.getHeight()
// viewGroupOverlay.clear()
// viewGroupOverlay.add(view)
// view.animate().alpha(.6f).setDuration(100).start()
// }
// if (!action) {
// viewGroupOverlay.clear()
// }
// notificationViewBoundry = notificationViewBoundry
// isNotificaitonViewActive = action
val viewGroupOverlay: ViewGroupOverlay = binding.contentView.getOverlay()
if (action && !isNotificaitonViewActive()) {
val view = DimBackgroundView(binding.contentView.getContext())
view.left = 0
view.top = notificationViewBoundry.bottom - statusBarHeight
view.right = binding.contentView.getWidth()
view.bottom = binding.contentView.getHeight()
viewGroupOverlay.clear()
viewGroupOverlay.add(view)
view.animate().alpha(.6f).setDuration(100).start()
}
if (!action) {
viewGroupOverlay.clear()
}
this.notificationViewBoundry = notificationViewBoundry
isNotificaitonViewActive = action
}
override fun showBankDeposit() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -334,7 +334,7 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
}
override fun showCashPickupRedeem() {
if (isNotificaitonViewActive) return
if (isNotificaitonViewActive()) return
val unverifiedMessage: String = viewModel!!.checkIfUserVerified()
if (unverifiedMessage == null) startActivity(
Intent(
@ -481,22 +481,6 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
Html.fromHtml("$jmeWalletNo\n <b><font color='#ed1c24'> $walletNumber</font></b>$bankName")
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// if (requestCode == APP_UPDATE_REQUEST && resultCode == RESULT_OK) {
// this.viewModel!!.storeAppUpdateDecision(
// data!!.getBooleanExtra(
// AppUpdateActivity.APP_UPDATE_NOT_NOW_TEMPORARY,
// false
// )
// )
// }
if (requestCode == 101 && resultCode == RESULT_OK) {
binding.vpDashboard.currentItem = 0
}
}
override fun onDestroy() {
super.onDestroy()
viewModel!!.onViewDestroyed()
@ -763,4 +747,8 @@ class HomeActivityV3 : BaseActivity(), HomeParentViewContractV2,
true
} else false
}
private fun isNotificaitonViewActive(): Boolean {
return isNotificaitonViewActive && notificationViewBoundry != null
}
}

112
app/src/main/java/com/remit/jmecustomer/features/homeV3/view/HomeFragmentV3.kt

@ -6,23 +6,25 @@ import android.content.Context
import android.content.Intent
import android.graphics.Rect
import android.os.Bundle
import android.os.Handler
import android.text.Editable
import android.view.*
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.ViewTreeObserver.OnGlobalLayoutListener
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.Interpolator
import android.view.inputmethod.EditorInfo
import android.widget.EditText
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import android.widget.*
import android.widget.TextView.OnEditorActionListener
import android.widget.Toast
import androidx.core.view.GestureDetectorCompat
import androidx.core.view.ViewCompat
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import androidx.transition.AutoTransition
import androidx.transition.Transition
import androidx.transition.TransitionListenerAdapter
import androidx.transition.TransitionManager
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.remit.jmecustomer.R
@ -40,9 +42,12 @@ 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.home.HomeParentViewContractV2
import com.remit.jmecustomer.features.home.model.BannerImage
import com.remit.jmecustomer.features.home.model.HomeNotificationViewDTO
import com.remit.jmecustomer.features.home.model.HomeViewRelatedDTOV2
import com.remit.jmecustomer.features.home.presenter.HomeViewModel
import com.remit.jmecustomer.features.home.view.notifications.*
import com.remit.jmecustomer.features.homeV3.adpaters.BannerViewAdapter
import com.remit.jmecustomer.features.homeV3.adpaters.SendTypeAdapter
import com.remit.jmecustomer.features.myTransfers.view.MyTransfersFragment
@ -124,6 +129,9 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
viewLifecycleOwner
) { homeViewRelatedDTOV2: HomeViewRelatedDTOV2 ->
setBannerData(homeViewRelatedDTOV2.bannerImages)
if (homeViewRelatedDTOV2.homeNotificationViewDTO != null) {
showNotificationView(homeViewRelatedDTOV2.homeNotificationViewDTO)
}
homeViewModel?.showChangedNotification(homeViewRelatedDTOV2.notificationCount)
}
}
@ -195,6 +203,26 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
)
) else showPopUpMessage(unverifiedMessage, CustomAlertDialog.AlertType.ALERT, null)
}
R.id.notificationViewContainer -> {
handleNotificationOnClick()
}
}
}
private fun handleNotificationOnClick() {
val notificationView: View = binding.notificationViewContainer.getChildAt(0)
if (notificationView == null) return else if (notificationView is KYCNotSubmittedNotificationView || notificationView is TermsNotAcceptedNotificationView) {
homeViewModel!!.showKYCScreen(notificationView is KYCNotSubmittedNotificationView)
} else if (notificationView is KYCNotVerifiedNotificationView) {
// homeViewModel.showKYCScreen();
} else if (notificationView is ChangePinNotificationView || notificationView is ChangePinView) {
homeViewModel!!.showChangePinScreen()
} else if (notificationView is ChangePinNPassNotificationView) {
homeViewModel!!.showChangePinNPassScreen()
} else if (notificationView is ChangePassNotificationView) {
homeViewModel!!.showChangePassScreen()
} else if (notificationView is EmailNotVerifiedView) {
homeViewModel!!.requestForOtp()
}
}
@ -207,7 +235,9 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
val homeActivityV3: HomeActivityV3 = requireActivity() as HomeActivityV3
val transfersFragment =
requireActivity().supportFragmentManager.findFragmentByTag("android:switcher:" + homeActivityV3.binding.vpDashboard.id + ":" + 1) as MyTransfersFragment
transfersFragment.performDefaultAction(countryPaymentService.countryId)
if (homeViewModel?.checkIfUserVerified() == null) {
transfersFragment.performDefaultAction(countryPaymentService.countryId)
}
})
if (!countryListingDialog!!.isAdded) countryListingDialog?.show(
requireActivity().supportFragmentManager,
@ -445,4 +475,74 @@ class HomeFragmentV3 : BaseFragment(), View.OnClickListener,
}
}, 500, 3500)
}
private fun showNotificationView(notificationViewDTO: HomeNotificationViewDTO) {
Handler().postDelayed({
val notificationView =
HomeNotificiationViewFactory.getNotificationView(
notificationViewDTO,
binding.notificationViewContainer.getContext()
)
if (notificationView != null) {
val autoTransition =
AutoTransition()
if (notificationViewDTO.isFocused) {
val notificationViewHeight = IntArray(1)
notificationView.viewTreeObserver
.addOnGlobalLayoutListener(object : OnGlobalLayoutListener {
override fun onGlobalLayout() {
notificationViewHeight[0] = notificationView.height
notificationView.viewTreeObserver
.removeOnGlobalLayoutListener(this)
}
})
binding.scrollViewHomeFragment.setEnableScrolling(false)
autoTransition.addListener(object :
TransitionListenerAdapter() {
override fun onTransitionEnd(transition: Transition) {
super.onTransitionEnd(transition)
val notificationViewContainerPos = IntArray(2)
binding.notificationViewContainer.getLocationInWindow(
notificationViewContainerPos
)
val notificationViewContainerBoundry =
Rect(
0,
notificationViewContainerPos[0],
binding.notificationViewContainer.getWidth(),
notificationViewContainerPos[1] + notificationViewHeight[0]
)
if (activity != null && notificationViewHeight[0] != 0) (activity as HomeParentViewContractV2?)!!.dimOutMenu(
notificationViewContainerBoundry,
true
)
}
}
)
} else {
binding.scrollViewHomeFragment.setEnableScrolling(true)
if (activity != null) (activity as HomeParentViewContractV2?)!!.dimOutMenu(
null,
false
)
}
TransitionManager.beginDelayedTransition(
binding.homeContainerView,
autoTransition
)
notificationView.addNotificationTo(binding.notificationViewContainer)
binding.notificationViewContainer.setVisibility(View.VISIBLE)
binding.notificationViewContainer.setOnClickListener(this)
} else {
TransitionManager.beginDelayedTransition(binding.homeContainerView)
binding.notificationViewContainer.setVisibility(View.GONE)
binding.notificationViewContainer.removeAllViews()
binding.notificationViewContainer.setOnClickListener(null)
if (activity != null) (activity as HomeParentViewContractV2?)!!.dimOutMenu(
null,
false
)
}
}, 500)
}
}

88
app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAllAdapter.kt

@ -0,0 +1,88 @@
import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.remit.jmecustomer.databinding.RowAllBeneficiaryBinding
import com.remit.jmecustomer.databinding.RowFragmentBeneficiariesBinding
import com.remit.jmecustomer.features.beneficiaryDetail.BeneficiaryDetailActivity
import com.remit.jmecustomer.features.homeV3.view.HomeActivityV3
import com.remit.jmecustomer.features.recipientmanagement.adapter.RecipientListingV3RvAdapter
import com.remit.jmecustomer.features.recipientmanagement.model.recipientModelV5.Receiver
import com.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model
import com.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3
class MyBeneficiariesAllAdapter(
private var data: MutableList<Receiver>,
private val listener: RecipientSelectionListener? = null
) :
RecyclerView.Adapter<MyBeneficiariesAllAdapter.ViewHolder>() {
var mContext: Context? = null
init {
}
class ViewHolder(private val binding: RowAllBeneficiaryBinding) :
RecyclerView.ViewHolder(binding.root) {
val bindings: RowAllBeneficiaryBinding = binding
fun bind(item: String) {
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = RowAllBeneficiaryBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
mContext = parent.context;
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = data[position]
holder.bindings.rvInitials.setOnClickListener {
}
holder.bindings.constMain.setOnClickListener {
listener?.onRecipientSelected(item)
}
holder.bindings.rvInitials.setOnClickListener {
listener?.onRecipientSelected(item)
}
holder.bindings.tvName.text = item.fullName
holder.bindings.tvInitial.text = getInitials(item.fullName)
// holder.bind(item)
}
override fun getItemCount(): Int {
return data.size
}
fun setData(recievedData: MutableList<Receiver>?) {
if (recievedData != null && recievedData.size > 0) this.data =
recievedData else this.data.clear()
notifyDataSetChanged()
}
fun getInitials(fullName: String): String {
val names = fullName.split(" ") // Split the full name into separate names
var initials = ""
if (names.size >= 1) {
initials += names[0][0].toUpperCase() // Add the first character of the first name to the initials string
}
if (names.size >= 2) {
initials += names[names.size - 1][0].toUpperCase() // Add the first character of the last name to the initials string
}
return initials
}
interface RecipientSelectionListener {
fun onRecipientSelected(recipientInfoModel: Receiver)
fun proceedToDeleteRecipient(receiverInfoV3Model: Receiver)
fun proceedToEditRecipient(receiverInfoV3Model: Receiver)
fun onAllRecipientDeleted()
}
}

59
app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt

@ -0,0 +1,59 @@
package com.remit.jmecustomer.features.myTransfers.view
import MyBeneficiariesAllAdapter
import android.content.Intent
import android.os.Bundle
import android.os.PersistableBundle
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.remit.jmecustomer.base.BaseActivity
import com.remit.jmecustomer.databinding.FragmentBeneficiaryAllBinding
import com.remit.jmecustomer.features.beneficiaryDetail.BeneficiaryDetailActivity
import com.remit.jmecustomer.features.recipientmanagement.model.recipientModelV5.Receiver
class MyBeneficiaryAllActivity : BaseActivity(),
MyBeneficiariesAllAdapter.RecipientSelectionListener {
private lateinit var binding: FragmentBeneficiaryAllBinding
private var adapter: MyBeneficiariesAllAdapter? = null
private var mainList: ArrayList<Receiver>? = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = FragmentBeneficiaryAllBinding.inflate(layoutInflater)
val view: View = binding.root
setContentView(view)
binding.toolbar.toolbarTitle.text = "All Recepients"
binding.toolbar.ivBack.setOnClickListener {
super.onBackPressed()
}
init()
}
fun init() {
mainList = intent?.getParcelableArrayListExtra("receiver")
var data: ArrayList<Receiver> = ArrayList()
adapter = MyBeneficiariesAllAdapter(data, this)
val layoutManagerVertical = LinearLayoutManager(this)
binding.recipientListRv.layoutManager = layoutManagerVertical
binding.recipientListRv.adapter = adapter
adapter?.setData(mainList)
}
override fun onRecipientSelected(recipientInfoModel: Receiver) {
val intent = Intent(this, BeneficiaryDetailActivity::class.java)
intent.putExtra("receiverInfoModel", recipientInfoModel)
startActivity(intent)
}
override fun proceedToDeleteRecipient(receiverInfoV3Model: Receiver) {
}
override fun proceedToEditRecipient(receiverInfoV3Model: Receiver) {
}
override fun onAllRecipientDeleted() {
}
}

16
app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyTransfersFragment.kt

@ -3,6 +3,7 @@ package com.remit.jmecustomer.features.myTransfers.view
import MyBeneficiariesAdapter
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -18,6 +19,7 @@ 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.home.presenter.HomeViewModel
import com.remit.jmecustomer.features.myTransfers.adapters.RecentTransactionsAdapter
import com.remit.jmecustomer.features.recipientmanagement.gateway.recipientlistingV3.RecipientListingV3Gateway
import com.remit.jmecustomer.features.recipientmanagement.model.recipientModelV5.Receiver
@ -55,6 +57,7 @@ class MyTransfersFragment : BaseFragment(),
private var data: MutableList<RecentTransaction>? = null
private var presenterTransaction: TransactionHistoryV2Presenter? = null
private var genericEditTextPromptDialog: GenericEditTextPromptDialog? = null
private var homeViewModel: HomeViewModel? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@ -62,7 +65,9 @@ class MyTransfersFragment : BaseFragment(),
): View? {
_binding = FragmentMyTransfersBinding.inflate(inflater, container, false)
init()
performDefaultAction("151")
if (homeViewModel?.checkIfUserVerified() == null) {
performDefaultAction("151")
}
setUpData()
return binding.root
}
@ -97,6 +102,7 @@ class MyTransfersFragment : BaseFragment(),
}
private fun init() {
homeViewModel = ViewModelProvider(requireActivity()).get(HomeViewModel::class.java)
noTransactionFoundTextView = binding.noTransactionFoundTextView
presenter = RecipientListingV3Presenter(this, RecipientListingV3Gateway())
searchEditTextTextWatcher = SearchEditTextTextWatcher()
@ -126,7 +132,7 @@ class MyTransfersFragment : BaseFragment(),
adapter?.setData(recipientInfoModelList)
recentAdapter?.setData(recentTransactionList)
recentAdapter?.setTransactionClickListener(object :
RecentTransactionsAdapter.OutboundTransactionItemClickListener{
RecentTransactionsAdapter.OutboundTransactionItemClickListener {
override fun navigateToChangeTransactionScreen(itemModel: RecentTransaction) {
val startReceiptActivity = Intent(
activity,
@ -176,6 +182,12 @@ class MyTransfersFragment : BaseFragment(),
}
})
binding.tvSeeAll.setOnClickListener{
val intent = Intent(requireActivity(), MyBeneficiaryAllActivity::class.java)
intent.putParcelableArrayListExtra("receiver", recipientInfoModelList as ArrayList<out Parcelable>)
startActivity(intent)
}
}
override fun onRecipientDeletedSuccessfully(recipientToBeDeleted: String?) {}

70
app/src/main/java/com/remit/jmecustomer/features/userprofile/view/ProfileFragment.kt

@ -23,22 +23,27 @@ import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.signature.ObjectKey
import com.remit.jmecustomer.BuildConfig
import com.remit.jmecustomer.R
import com.remit.jmecustomer.RemitApplication
import com.remit.jmecustomer.base.BaseFragment
import com.remit.jmecustomer.base.PrefKeys
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialog.GenericDialogPromptListener
import com.remit.jmecustomer.common.customwidgets.common.GenericPromptDialogSingleButton
import com.remit.jmecustomer.databinding.FragmentProfileBinding
import com.remit.jmecustomer.features.aboutscreen.view.AboutJMERemit
import com.remit.jmecustomer.features.changepassNPin.view.ChangePassNPinActivity
import com.remit.jmecustomer.features.changetxnpin.view.ChangeTxnPinActivity
import com.remit.jmecustomer.features.customersupport.view.CustomerSupportFragment
import com.remit.jmecustomer.features.depositinfo.view.DepositInfo
import com.remit.jmecustomer.features.depositslip.view.DepositSlipActivity
import com.remit.jmecustomer.features.home.model.HomeViewRelatedDTOV2
import com.remit.jmecustomer.features.home.presenter.HomeViewModel
import com.remit.jmecustomer.features.homeV3.view.HomeActivityV3
import com.remit.jmecustomer.features.loyaltypoints.view.LoyaltyPointsActivity
import com.remit.jmecustomer.features.mynotifications.view.MyNotificationActivity
import com.remit.jmecustomer.features.renewId.view.RenewIdActivity
import com.remit.jmecustomer.features.rewards.view.RewardActivity
import com.remit.jmecustomer.features.security.RemitAuthManager
import com.remit.jmecustomer.features.security.RemitAuthManager1
import com.remit.jmecustomer.features.security.RemitAuthManagerGateway
@ -52,7 +57,6 @@ import com.remit.jmecustomer.features.settings.view.LanguageSelectionListingDial
import com.remit.jmecustomer.features.settings.view.SettingsView
import com.remit.jmecustomer.features.splashscreen.model.LanguageModel
import com.remit.jmecustomer.features.userprofile.UserProfileViewModelFactory
import com.remit.jmecustomer.features.userprofile.model.UploadProfileResponse
import com.remit.jmecustomer.features.userprofile.model.UserProfile
import com.remit.jmecustomer.features.userprofile.presenter.UserProfilePresenterInterface
import com.remit.jmecustomer.features.userprofile.presenter.UserProfilePresenterV2
@ -61,10 +65,9 @@ import com.remit.jmecustomer.utils.Constants
import com.remit.jmecustomer.utils.FileUtils
import com.remit.jmecustomer.utils.Utils
import com.remit.jmecustomer.utils.other.Utility
import id.zelory.compressor.Compressor
import io.reactivex.disposables.Disposable
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.*
class ProfileFragment : BaseFragment(), View.OnClickListener,
@ -72,7 +75,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
CompoundButton.OnCheckedChangeListener {
private var TAG: String? = "TAG"
var selectedImagePath: String = ""
var imgReport1: String? = ""
var imgReport1: String = ""
private var isFromGallery = false
private var mCapturedImageURI: Uri? = null
private val RequestPermissionCode = 9686
@ -110,6 +113,9 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
viewModel = ViewModelProvider(this, UserProfileViewModelFactory(this)).get(
UserProfilePresenterV2::class.java
)
binding.tvRewardPoint.setText(
RemitApplication.getStorage().getString(PrefKeys.REWARD_POINTS, "")
)
homeViewModel = ViewModelProvider(requireActivity()).get(HomeViewModel::class.java)
binding.llPaymentLayout.setOnClickListener(this)
binding.llAboutUsLayout.setOnClickListener(this)
@ -119,6 +125,10 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
binding.llLanguage.setOnClickListener(this)
binding.llContactUsLayout.setOnClickListener(this)
binding.ivProfileImage.setOnClickListener(this)
binding.llChangePassword.setOnClickListener(this)
binding.llReferEarn.setOnClickListener(this)
binding.llLoyaltyPoints.setOnClickListener(this)
binding.llRenewId.setOnClickListener(this)
viewModel!!.subscribeToUserProfileInfoFetchEvent().observe(
this
) { body: UserProfile? ->
@ -230,6 +240,22 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
R.id.iv_profile_image ->
takeUserImageData()
R.id.ll_change_password -> {
startActivity(Intent(requireActivity(), ChangePassNPinActivity::class.java))
}
R.id.ll_refer_earn -> {
startActivity(Intent(requireActivity(), RewardActivity::class.java))
}
R.id.ll_loyalty_points -> {
startActivity(Intent(requireActivity(), LoyaltyPointsActivity::class.java))
}
R.id.ll_renew_id -> {
startActivity(Intent(requireActivity(), RenewIdActivity::class.java))
}
}
}
@ -684,7 +710,9 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
out.flush()
return filename
} catch (e: FileNotFoundException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
}
} else {
// Change according to user requirement
@ -717,6 +745,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
Bitmap.createBitmap(actualWidth, actualHeight, Bitmap.Config.ARGB_8888)
} catch (exception: OutOfMemoryError) {
//IMEPayLogger.Log(exception);
exception.fillInStackTrace()
}
val ratioX = actualWidth / options.outWidth.toFloat()
val ratioY = actualHeight / options.outHeight.toFloat()
@ -759,14 +788,14 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
)
} catch (e: IOException) {
// IMEPayLogger.Log(e)
e.printStackTrace()
}
val out: FileOutputStream
val filename = getFilename()
try {
imgReport1 = filename
out = FileOutputStream(filename)
// write the compressed bitmap at the destination specified by filename.
scaledBitmap!!.compress(Bitmap.CompressFormat.JPEG, 80, out)
scaledBitmap!!.compress(Bitmap.CompressFormat.JPEG, 100, out)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val file = File(filename)
Utils.savebitmap(context, scaledBitmap, file.name)
@ -775,6 +804,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
Log.d(TAG, "TEST:")
}
Log.d(TAG, "compressImageFileName: $filename")
imgReport1 = filename
return filename
}
return ""
@ -812,12 +842,12 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
* @return
*/
fun getFilename(): String {
val targetImageFile: String = Utils.targetFilePath(context, "/IMEpay/profile/")
val targetImageFile: String = Utils.targetFilePath(context, "/JME/profile/")
val file = File(targetImageFile)
if (!file.exists()) {
file.mkdirs()
}
return file.absolutePath + "/" + System.currentTimeMillis() + ".jpg"
return file.absolutePath + "/" + System.currentTimeMillis() + ""
}
var options = RequestOptions()
@ -830,13 +860,21 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
.into(binding.ivProfileImage)
}
private fun getRequestParamsProfileImage(): MultipartBody.Part? {
private fun getRequestParamsProfileImage(): MultipartBody.Part {
val profileImageFile = File(imgReport1)
val profileImageRequest: RequestBody =
RequestBody.create("image*//*".toMediaTypeOrNull(), profileImageFile)
return MultipartBody.Part.createFormData(
"CustomerProfile", profileImageFile.name,
profileImageRequest
)
return Utils.createImageUploadFieldFromFile("CustomerProfile", profileImageFile)
}
private fun createCompressedImageFileFromUri(data: Uri): File? {
var compressedBitmap: File? = null
try {
compressedBitmap = Compressor(requireContext())
.setCompressFormat(Bitmap.CompressFormat.JPEG)
.setQuality(DepositSlipActivity.COMPRESS_QUALITY)
.compressToFile(File(data.path))
} catch (e: Exception) {
e.printStackTrace()
}
return compressedBitmap
}
}

10
app/src/main/java/com/remit/jmecustomer/utils/Utils.java

@ -60,6 +60,7 @@ import static com.remit.jmecustomer.utils.Constants.OTHER_ERROR;
import static com.remit.jmecustomer.utils.Constants.SERVER_ERROR;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
/**
@ -665,4 +666,13 @@ public class Utils {
return body;
}
public static MultipartBody.Part createImageUploadFieldFromFile(String key, File file) {
if (file == null)
return null;
Log.d("file is ", "createImageUploadFieldFromFile: "+file);
RequestBody idImageRequest = RequestBody.create(MediaType.parse("image*//*"), file);
return MultipartBody.Part.createFormData(key, file.getName() + ".jpeg", idImageRequest);
}
}

1
app/src/main/java/com/remit/jmecustomer/utils/https/ApiEndpoints.java

@ -383,7 +383,6 @@ public interface ApiEndpoints {
@Multipart
@POST(API_URL.UPLOAD_PROFILE_IMAGE)
@Headers("Content-Type: application/json")
Observable<ResponseBody> uploadProfileImage(@Header("Authorization") String token,
@Path("customer") String customerId,
@PartMap() Map<String, RequestBody> partMap,

BIN
app/src/main/res/drawable-hdpi/icon_location.png

After

Width: 36  |  Height: 36  |  Size: 3.3 KiB

BIN
app/src/main/res/drawable-hdpi/icon_male_user.png

After

Width: 36  |  Height: 36  |  Size: 2.5 KiB

BIN
app/src/main/res/drawable-hdpi/icon_people.png

After

Width: 36  |  Height: 36  |  Size: 2.5 KiB

BIN
app/src/main/res/drawable-hdpi/icon_phone.png

After

Width: 36  |  Height: 36  |  Size: 1.6 KiB

BIN
app/src/main/res/drawable-ldpi/icon_location.png

After

Width: 18  |  Height: 18  |  Size: 1.1 KiB

BIN
app/src/main/res/drawable-ldpi/icon_male_user.png

After

Width: 18  |  Height: 18  |  Size: 1.0 KiB

BIN
app/src/main/res/drawable-ldpi/icon_people.png

After

Width: 18  |  Height: 18  |  Size: 979 B

BIN
app/src/main/res/drawable-ldpi/icon_phone.png

After

Width: 18  |  Height: 18  |  Size: 766 B

BIN
app/src/main/res/drawable-mdpi/icon_location.png

After

Width: 24  |  Height: 24  |  Size: 1.7 KiB

BIN
app/src/main/res/drawable-mdpi/icon_male_user.png

After

Width: 24  |  Height: 24  |  Size: 1.4 KiB

BIN
app/src/main/res/drawable-mdpi/icon_people.png

After

Width: 24  |  Height: 24  |  Size: 1.3 KiB

BIN
app/src/main/res/drawable-mdpi/icon_phone.png

After

Width: 24  |  Height: 24  |  Size: 935 B

BIN
app/src/main/res/drawable-xhdpi/icon_location.png

After

Width: 48  |  Height: 48  |  Size: 5.2 KiB

BIN
app/src/main/res/drawable-xhdpi/icon_male_user.png

After

Width: 48  |  Height: 48  |  Size: 3.8 KiB

BIN
app/src/main/res/drawable-xhdpi/icon_people.png

After

Width: 48  |  Height: 48  |  Size: 3.8 KiB

BIN
app/src/main/res/drawable-xhdpi/icon_phone.png

After

Width: 48  |  Height: 48  |  Size: 2.4 KiB

BIN
app/src/main/res/drawable-xxhdpi/icon_location.png

After

Width: 72  |  Height: 72  |  Size: 10 KiB

BIN
app/src/main/res/drawable-xxhdpi/icon_male_user.png

After

Width: 72  |  Height: 72  |  Size: 7.3 KiB

BIN
app/src/main/res/drawable-xxhdpi/icon_people.png

After

Width: 72  |  Height: 72  |  Size: 7.3 KiB

BIN
app/src/main/res/drawable-xxhdpi/icon_phone.png

After

Width: 72  |  Height: 72  |  Size: 4.5 KiB

BIN
app/src/main/res/drawable-xxxhdpi/icon_location.png

After

Width: 96  |  Height: 96  |  Size: 17 KiB

BIN
app/src/main/res/drawable-xxxhdpi/icon_male_user.png

After

Width: 96  |  Height: 96  |  Size: 12 KiB

BIN
app/src/main/res/drawable-xxxhdpi/icon_people.png

After

Width: 96  |  Height: 96  |  Size: 12 KiB

BIN
app/src/main/res/drawable-xxxhdpi/icon_phone.png

After

Width: 96  |  Height: 96  |  Size: 6.7 KiB

BIN
app/src/main/res/drawable/account.png

Before

Width: 64  |  Height: 64  |  Size: 1.8 KiB

29
app/src/main/res/drawable/account.xml

@ -0,0 +1,29 @@
<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="M20,17v2H4V17a2,2 0,0 0,0 4H20a2,2 0,0 0,0 -4Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M17,2.414h0a1.415,1.415 0,0 1,-2 0h0a1.415,1.415 0,0 0,-2 0h0a1.415,1.415 0,0 1,-2 0h0a1.415,1.415 0,0 0,-2 0H9a1.415,1.415 0,0 1,-2 0H7a1.415,1.415 0,0 0,-2 0L4.414,3A1.415,1.415 0,0 0,4 4V19H20V4a1.415,1.415 0,0 0,-0.414 -1L19,2.414A1.415,1.415 0,0 0,17 2.414Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M16,9H8A1,1 0,0 1,8 7h8a1,1 0,0 1,0 2Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M12,13H8a1,1 0,0 1,0 -2h4a1,1 0,0 1,0 2Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M16,12m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
android:fillColor="#2e89ff"/>
<path
android:pathData="M12,17H8a1,1 0,0 1,0 -2h4a1,1 0,0 1,0 2Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M16,16m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
android:fillColor="#2e89ff"/>
</vector>

17
app/src/main/res/drawable/change__password.xml

@ -0,0 +1,17 @@
<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,15m-9,0a9,9 0,1 1,18 0a9,9 0,1 1,-18 0"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M12,13a2,2 0,1 0,2 2A2,2 0,0 0,12 13Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M8.006,6.944a3.994,3.994 0,0 1,7.988 0A9.023,9.023 0,0 1,18 8.3L18,7A6,6 0,0 0,6 7L6,8.3A9.023,9.023 0,0 1,8.006 6.944Z"
android:fillColor="#2e89ff"/>
</vector>

48
app/src/main/res/drawable/change_pin.xml

@ -0,0 +1,48 @@
<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.5,6h-1A1.5,1.5 0,0 1,10 4.5v-1A1.5,1.5 0,0 1,11.5 2h1A1.5,1.5 0,0 1,14 3.5v1A1.5,1.5 0,0 1,12.5 6Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M6.5,6h-1A1.5,1.5 0,0 1,4 4.5v-1A1.5,1.5 0,0 1,5.5 2h1A1.5,1.5 0,0 1,8 3.5v1A1.5,1.5 0,0 1,6.5 6Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M18.5,6h-1A1.5,1.5 0,0 1,16 4.5v-1A1.5,1.5 0,0 1,17.5 2h1A1.5,1.5 0,0 1,20 3.5v1A1.5,1.5 0,0 1,18.5 6Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M12.5,12h-1A1.5,1.5 0,0 1,10 10.5v-1A1.5,1.5 0,0 1,11.5 8h1A1.5,1.5 0,0 1,14 9.5v1A1.5,1.5 0,0 1,12.5 12Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M6.5,12h-1A1.5,1.5 0,0 1,4 10.5v-1A1.5,1.5 0,0 1,5.5 8h1A1.5,1.5 0,0 1,8 9.5v1A1.5,1.5 0,0 1,6.5 12Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M18.5,12h-1A1.5,1.5 0,0 1,16 10.5v-1A1.5,1.5 0,0 1,17.5 8h1A1.5,1.5 0,0 1,20 9.5v1A1.5,1.5 0,0 1,18.5 12Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M12.5,18h-1A1.5,1.5 0,0 1,10 16.5v-1A1.5,1.5 0,0 1,11.5 14h1A1.5,1.5 0,0 1,14 15.5v1A1.5,1.5 0,0 1,12.5 18Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M6.5,18h-1A1.5,1.5 0,0 1,4 16.5v-1A1.5,1.5 0,0 1,5.5 14h1A1.5,1.5 0,0 1,8 15.5v1A1.5,1.5 0,0 1,6.5 18Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M18.5,18h-1A1.5,1.5 0,0 1,16 16.5v-1A1.5,1.5 0,0 1,17.5 14h1A1.5,1.5 0,0 1,20 15.5v1A1.5,1.5 0,0 1,18.5 18Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M12.5,24h-1A1.5,1.5 0,0 1,10 22.5v-1A1.5,1.5 0,0 1,11.5 20h1A1.5,1.5 0,0 1,14 21.5v1A1.5,1.5 0,0 1,12.5 24Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
</vector>

23
app/src/main/res/drawable/contact_us.xml

@ -0,0 +1,23 @@
<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="M9.501,2A7.488,7.488 0,0 0,2.783 12.82l-0.754,3.014a0.937,0.937 0,0 0,1.137 1.137l3.014,-0.754A7.5,7.5 0,1 0,9.501 2Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M20.851,16.35l1.121,4.484a0.937,0.937 0,0 1,-1.137 1.137L16.351,20.85Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M16.678,7.323a7.5,7.5 0,0 1,-9.354 9.354,7.5 7.5,0 1,0 9.354,-9.354Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M13.001,9L7.001,9A1,1 0,0 1,7.001 7h6a1,1 0,0 1,0 2Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M11.001,13L7.001,13a1,1 0,0 1,0 -2h4a1,1 0,0 1,0 2Z"
android:fillColor="#2e89ff"/>
</vector>

20
app/src/main/res/drawable/refer_earn.xml

@ -0,0 +1,20 @@
<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="M6,6L18,6a3,3 0,0 1,3 3v3L3,12L3,9A3,3 0,0 1,6 6Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillAlpha="0.35"/>
<path
android:pathData="M6,22L18,22a3,3 0,0 0,3 -3L21,12L3,12v7A3,3 0,0 0,6 22Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M12,4L12,6L10,6a2,2 0,1 1,2 -2Z"
android:fillColor="#2e89ff"/>
<path
android:pathData="M12,4L12,6h2a2,2 0,1 0,-2 -2Z"
android:fillColor="#2e89ff"/>
</vector>

16
app/src/main/res/drawable/reward_points.xml

@ -0,0 +1,16 @@
<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="M18,2H6A1,1 0,0 0,5 3v0.487a2.031,2.031 0,0 0,0.857 1.658l4.757,3.372a2.387,2.387 0,0 0,2.767 0l4.763,-3.377A2.025,2.025 0,0 0,19 3.487V3A1,1 0,0 0,18 2Z"
android:fillColor="#2e89ff"
android:fillType="evenOdd"/>
<path
android:pathData="M11.159,9.506a0.952,0.952 0,0 1,1.682 0l1.6,3.009a0.258,0.258 0,0 0,0.076 0.088,0.266 0.266,0 0,0 0.108,0.046l3.354,0.588a0.952,0.952 0,0 1,0.52 1.6l-2.368,2.447a0.262,0.262 0,0 0,-0.06 0.1,0.254 0.254,0 0,0 -0.01,0.116l0.478,3.372a0.952,0.952 0,0 1,-1.36 0.988l-3.059,-1.5a0.263,0.263 0,0 0,-0.228 0l-3.059,1.5a0.952,0.952 0,0 1,-1.36 -0.988L7.946,17.5a0.259,0.259 0,0 0,-0.07 -0.216L5.508,14.836a0.952,0.952 0,0 1,0.52 -1.6l3.354,-0.588A0.253,0.253 0,0 0,9.49 12.6a0.248,0.248 0,0 0,0.076 -0.088Z"
android:strokeAlpha="0.35"
android:fillColor="#2e89ff"
android:fillType="evenOdd"
android:fillAlpha="0.35"/>
</vector>

19
app/src/main/res/layout/activity_beneficiary_detail.xml

@ -71,10 +71,10 @@
android:layout_height="@dimen/_20sdp"
android:layout_marginStart="@dimen/_11sdp"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/ico_user"
android:src="@drawable/icon_male_user"
app:layout_constraintStart_toEndOf="@id/rv_initials"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:tint="@color/light_blue" />
/>
<TextView
@ -107,10 +107,9 @@
android:layout_height="@dimen/_20sdp"
android:layout_marginStart="@dimen/_11sdp"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/ic_mobile"
android:src="@drawable/icon_phone"
app:layout_constraintStart_toEndOf="@id/rv_initials"
app:layout_constraintTop_toBottomOf="@id/tv_name"
app:tint="@color/light_blue" />
app:layout_constraintTop_toBottomOf="@id/tv_name" />
<TextView
@ -143,10 +142,9 @@
android:layout_height="@dimen/_20sdp"
android:layout_marginStart="@dimen/_11sdp"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/ico_user"
android:src="@drawable/icon_people"
app:layout_constraintStart_toEndOf="@id/rv_initials"
app:layout_constraintTop_toBottomOf="@id/tv_mobile"
app:tint="@color/light_blue" />
app:layout_constraintTop_toBottomOf="@id/tv_mobile" />
<TextView
@ -178,10 +176,9 @@
android:layout_height="@dimen/_20sdp"
android:layout_marginStart="@dimen/_11sdp"
android:layout_marginTop="@dimen/_16sdp"
android:src="@drawable/ic_agent_location"
android:src="@drawable/icon_location"
app:layout_constraintStart_toEndOf="@id/rv_initials"
app:layout_constraintTop_toBottomOf="@id/tv_relation"
app:tint="@color/light_blue" />
app:layout_constraintTop_toBottomOf="@id/tv_relation" />
<TextView

1
app/src/main/res/layout/activity_home_v3.xml

@ -2,6 +2,7 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_view"
xmlns:app="http://schemas.android.com/apk/res-auto">
<include android:id="@+id/toolbar_head"

20
app/src/main/res/layout/fragment_beneficiary_all.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbaar_new"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recipientListRv"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

19
app/src/main/res/layout/fragment_home_new.xml

@ -1,15 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<com.remit.jmecustomer.common.customwidgets.LockableScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollViewHomeFragment"
android:background="#F7F7F7"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/homeContainerView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
app:cardUseCompatPadding="false"
android:visibility="gone"
android:background="@color/white"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/notificationViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/const_top"
android:paddingHorizontal="@dimen/_20sdp"
@ -18,7 +31,7 @@
android:layout_height="wrap_content"
android:background="@drawable/card_bottom_rounded_white"
android:elevation="@dimen/_3sdp"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintTop_toBottomOf="@id/notificationViewContainer">
<TextView
android:id="@+id/txt_accountNo"
@ -421,4 +434,4 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</com.remit.jmecustomer.common.customwidgets.LockableScrollView>

11
app/src/main/res/layout/fragment_my_transfers.xml

@ -17,6 +17,8 @@
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
android:textColor="@color/light_blue"
android:inputType="text"
android:imeOptions="actionDone"
android:background="@drawable/blue_border_background"
android:hint="Search your transfers"
android:padding="@dimen/_10sdp"
@ -90,14 +92,11 @@
android:layout_height="@dimen/_45sdp">
<ImageView
android:textSize="@dimen/_24sdp"
android:layout_centerInParent="true"
android:text="R"
android:textColor="@color/light_blue"
android:src="@drawable/ic_add_vd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:tint="@color/light_blue" />
android:layout_centerInParent="true"
android:src="@drawable/ic_add_new"
android:textSize="@dimen/_24sdp" />
</RelativeLayout>

219
app/src/main/res/layout/fragment_profile.xml

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -174,7 +175,7 @@
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/account"
app:tint="@color/light_blue" />
/>
<LinearLayout
android:layout_width="match_parent"
@ -222,6 +223,140 @@
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
<ImageView
android:id="@+id/ic_reward"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/reward_points"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginLeft="@dimen/_26sdp"
android:layout_toEndOf="@+id/ic_reward"
android:layout_toRightOf="@+id/ic_reward"
android:orientation="vertical">
<TextView
style="@style/TextStyle.SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reward_points_text"
android:textColor="@color/black_opacity_87" />
<TextView
android:id="@+id/tv_reward_point"
style="@style/TextStyle.VolteSemiBold14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_4sdp"
android:layout_marginRight="@dimen/_2sdp"
android:layout_toEndOf="@+id/ic_lock_app"
android:layout_toRightOf="@+id/ic_lock_app"
android:text=""
android:textColor="@color/black_opacity_60" />
</LinearLayout>
<ImageView
android:visibility="gone"
style="@style/TextStyle.VolteSemiBold14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:paddingLeft="@dimen/_5sdp"
android:paddingRight="@dimen/_5sdp"
android:src="@drawable/ic_copy_new" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_loyalty_points"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
<ImageView
android:id="@+id/ic_loyalty_points"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/icv_menu_loyalty_point"
app:tint="@color/light_blue" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginLeft="@dimen/_26sdp"
android:layout_toEndOf="@+id/ic_loyalty_points"
android:layout_toRightOf="@+id/ic_loyalty_points"
android:orientation="vertical">
<TextView
style="@style/TextStyle.SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loyalty_points_text"
android:textColor="@color/black_opacity_87" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_refer_earn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
<ImageView
android:id="@+id/ic_refer_earn"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/refer_earn"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginLeft="@dimen/_26sdp"
android:layout_toEndOf="@+id/ic_refer_earn"
android:layout_toRightOf="@+id/ic_refer_earn"
android:orientation="vertical">
<TextView
style="@style/TextStyle.SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/refer_and_earn_text"
android:textColor="@color/black_opacity_87" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_payment_layout"
android:layout_width="match_parent"
@ -285,6 +420,42 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_renew_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
<ImageView
android:id="@+id/ic_renew_id"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/round_person_24px" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginLeft="@dimen/_26sdp"
android:layout_toEndOf="@+id/ic_renew_id"
android:layout_toRightOf="@+id/ic_renew_id"
android:orientation="vertical">
<TextView
style="@style/TextStyle.SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/renewId_text"
android:textColor="@color/black_opacity_87" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_language"
android:layout_width="match_parent"
@ -317,7 +488,6 @@
android:text="Language Selection"
android:textColor="@color/black_opacity_87" />
\
</LinearLayout>
</RelativeLayout>
@ -335,7 +505,7 @@
android:id="@+id/ic_change_pin"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/round_person_24px" />
app:srcCompat="@drawable/change_pin" />
<LinearLayout
android:layout_width="match_parent"
@ -356,6 +526,41 @@
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll_change_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
<ImageView
android:id="@+id/ic_change_password"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/change__password" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginLeft="@dimen/_26sdp"
android:layout_toEndOf="@+id/ic_change_password"
android:layout_toRightOf="@+id/ic_change_password"
android:orientation="vertical">
<TextView
style="@style/TextStyle.SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/change_password_text"
android:textColor="@color/black_opacity_87" />
</LinearLayout>
</RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fingerprintLockScreen"
android:layout_width="match_parent"
@ -457,7 +662,7 @@
android:layout_gravity="center"
android:orientation="horizontal"
android:padding="@dimen/_13sdp"
android:visibility="visible">
android:visibility="gone">
<ImageView
android:id="@+id/ic_profile_faq"
@ -503,7 +708,7 @@
android:id="@+id/ic_profile_contact_us"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/round_help_24px" />
app:srcCompat="@drawable/contact_us" />
<TextView
@ -632,4 +837,4 @@
</RelativeLayout>
</ScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

47
app/src/main/res/layout/row_all_beneficiary.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/const_main"
android:paddingStart="@dimen/_10sdp"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:id="@+id/rv_initials"
android:background="@drawable/light_blue_circular"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="@dimen/_45sdp"
android:layout_height="@dimen/_45sdp">
<TextView
android:id="@+id/tv_initial"
style="@style/TextStyle.VolteSemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="R"
android:textColor="@color/light_blue"
android:textSize="@dimen/_24sdp" />
</RelativeLayout>
<TextView
android:paddingStart="@dimen/_10sdp"
android:id="@+id/tv_name"
android:text="Rajesh"
android:layout_marginTop="@dimen/_5sdp"
android:textColor="@color/black_opacity_87"
style="@style/TextStyle.VolteSemiBold14"
android:gravity="center"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/rv_initials"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.constraintlayout.widget.ConstraintLayout>

4
app/src/main/res/xml/file_paths.xml

@ -2,6 +2,8 @@
<paths >
<external-files-path name="my_images" path="/" />
<cache-path name="cache" path="/" />
<external-path
name="external_files"
path="." />
</paths>
Loading…
Cancel
Save