diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index bb19250c..54626a7e 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -318,8 +318,8 @@
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e406333c..71d975c1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/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" />
+
$walletNumber$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
+ }
}
\ 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 94ec76e0..22277c13 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
@@ -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)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAllAdapter.kt b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/adapters/MyBeneficiariesAllAdapter.kt
new file mode 100644
index 00000000..d679db04
--- /dev/null
+++ b/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,
+ private val listener: RecipientSelectionListener? = null
+) :
+ RecyclerView.Adapter() {
+ 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?) {
+ 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()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt b/app/src/main/java/com/remit/jmecustomer/features/myTransfers/view/MyBeneficiaryAllActivity.kt
new file mode 100644
index 00000000..e696f3eb
--- /dev/null
+++ b/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? = 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 = 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() {
+ }
+}
\ No newline at end of file
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 1b27bb12..198fd843 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
@@ -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? = 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)
+ startActivity(intent)
+ }
}
override fun onRecipientDeletedSuccessfully(recipientToBeDeleted: String?) {}
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
index 03445e36..5360f70d 100644
--- 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
@@ -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
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/remit/jmecustomer/utils/Utils.java b/app/src/main/java/com/remit/jmecustomer/utils/Utils.java
index c5fbae0d..8e71cf70 100644
--- a/app/src/main/java/com/remit/jmecustomer/utils/Utils.java
+++ b/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);
+ }
+
}
diff --git a/app/src/main/java/com/remit/jmecustomer/utils/https/ApiEndpoints.java b/app/src/main/java/com/remit/jmecustomer/utils/https/ApiEndpoints.java
index 5e6a7a4a..d33c4f2d 100644
--- a/app/src/main/java/com/remit/jmecustomer/utils/https/ApiEndpoints.java
+++ b/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 uploadProfileImage(@Header("Authorization") String token,
@Path("customer") String customerId,
@PartMap() Map partMap,
diff --git a/app/src/main/res/drawable-hdpi/icon_location.png b/app/src/main/res/drawable-hdpi/icon_location.png
new file mode 100644
index 00000000..a4919732
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_male_user.png b/app/src/main/res/drawable-hdpi/icon_male_user.png
new file mode 100644
index 00000000..317f3530
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_people.png b/app/src/main/res/drawable-hdpi/icon_people.png
new file mode 100644
index 00000000..0620346b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-hdpi/icon_phone.png b/app/src/main/res/drawable-hdpi/icon_phone.png
new file mode 100644
index 00000000..398fa4ac
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-ldpi/icon_location.png b/app/src/main/res/drawable-ldpi/icon_location.png
new file mode 100644
index 00000000..27f519fa
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-ldpi/icon_male_user.png b/app/src/main/res/drawable-ldpi/icon_male_user.png
new file mode 100644
index 00000000..04ba0bb0
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-ldpi/icon_people.png b/app/src/main/res/drawable-ldpi/icon_people.png
new file mode 100644
index 00000000..3c306c33
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-ldpi/icon_phone.png b/app/src/main/res/drawable-ldpi/icon_phone.png
new file mode 100644
index 00000000..0b0be263
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-mdpi/icon_location.png b/app/src/main/res/drawable-mdpi/icon_location.png
new file mode 100644
index 00000000..12b871e0
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-mdpi/icon_male_user.png b/app/src/main/res/drawable-mdpi/icon_male_user.png
new file mode 100644
index 00000000..6984c59a
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-mdpi/icon_people.png b/app/src/main/res/drawable-mdpi/icon_people.png
new file mode 100644
index 00000000..bd263051
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-mdpi/icon_phone.png b/app/src/main/res/drawable-mdpi/icon_phone.png
new file mode 100644
index 00000000..d6b60b91
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_location.png b/app/src/main/res/drawable-xhdpi/icon_location.png
new file mode 100644
index 00000000..f1fbe1d0
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_male_user.png b/app/src/main/res/drawable-xhdpi/icon_male_user.png
new file mode 100644
index 00000000..cc9c50fb
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_people.png b/app/src/main/res/drawable-xhdpi/icon_people.png
new file mode 100644
index 00000000..b50f74fd
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_phone.png b/app/src/main/res/drawable-xhdpi/icon_phone.png
new file mode 100644
index 00000000..f88274b0
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_location.png b/app/src/main/res/drawable-xxhdpi/icon_location.png
new file mode 100644
index 00000000..cb3d4e1e
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_male_user.png b/app/src/main/res/drawable-xxhdpi/icon_male_user.png
new file mode 100644
index 00000000..2bdbb5e3
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_people.png b/app/src/main/res/drawable-xxhdpi/icon_people.png
new file mode 100644
index 00000000..23be81e8
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_phone.png b/app/src/main/res/drawable-xxhdpi/icon_phone.png
new file mode 100644
index 00000000..68d94a91
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_location.png b/app/src/main/res/drawable-xxxhdpi/icon_location.png
new file mode 100644
index 00000000..db8dfaed
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_location.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_male_user.png b/app/src/main/res/drawable-xxxhdpi/icon_male_user.png
new file mode 100644
index 00000000..946d4fd9
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_male_user.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_people.png b/app/src/main/res/drawable-xxxhdpi/icon_people.png
new file mode 100644
index 00000000..267dd41a
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_people.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_phone.png b/app/src/main/res/drawable-xxxhdpi/icon_phone.png
new file mode 100644
index 00000000..04f42b1a
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_phone.png differ
diff --git a/app/src/main/res/drawable/account.png b/app/src/main/res/drawable/account.png
deleted file mode 100644
index 7fb28e9f..00000000
Binary files a/app/src/main/res/drawable/account.png and /dev/null differ
diff --git a/app/src/main/res/drawable/account.xml b/app/src/main/res/drawable/account.xml
new file mode 100644
index 00000000..b976353d
--- /dev/null
+++ b/app/src/main/res/drawable/account.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/change__password.xml b/app/src/main/res/drawable/change__password.xml
new file mode 100644
index 00000000..ff8ae552
--- /dev/null
+++ b/app/src/main/res/drawable/change__password.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/change_pin.xml b/app/src/main/res/drawable/change_pin.xml
new file mode 100644
index 00000000..99463a15
--- /dev/null
+++ b/app/src/main/res/drawable/change_pin.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/contact_us.xml b/app/src/main/res/drawable/contact_us.xml
new file mode 100644
index 00000000..cf60f2f2
--- /dev/null
+++ b/app/src/main/res/drawable/contact_us.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/refer_earn.xml b/app/src/main/res/drawable/refer_earn.xml
new file mode 100644
index 00000000..127e4a52
--- /dev/null
+++ b/app/src/main/res/drawable/refer_earn.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/reward_points.xml b/app/src/main/res/drawable/reward_points.xml
new file mode 100644
index 00000000..4b958dc1
--- /dev/null
+++ b/app/src/main/res/drawable/reward_points.xml
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_beneficiary_detail.xml b/app/src/main/res/layout/activity_beneficiary_detail.xml
index fe478b93..d22acbd7 100644
--- a/app/src/main/res/layout/activity_beneficiary_detail.xml
+++ b/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" />
+ />
+ app:layout_constraintTop_toBottomOf="@id/tv_name" />
+ app:layout_constraintTop_toBottomOf="@id/tv_mobile" />
+ app:layout_constraintTop_toBottomOf="@id/tv_relation" />
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home_new.xml b/app/src/main/res/layout/fragment_home_new.xml
index b532580a..62e27f28 100644
--- a/app/src/main/res/layout/fragment_home_new.xml
+++ b/app/src/main/res/layout/fragment_home_new.xml
@@ -1,15 +1,28 @@
-
+
+
+ app:layout_constraintTop_toBottomOf="@id/notificationViewContainer">
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_my_transfers.xml b/app/src/main/res/layout/fragment_my_transfers.xml
index c9193754..7621f992 100644
--- a/app/src/main/res/layout/fragment_my_transfers.xml
+++ b/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">
+ android:layout_centerInParent="true"
+ android:src="@drawable/ic_add_new"
+ android:textSize="@dimen/_24sdp" />
diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml
index 58d0f909..050bb8db 100644
--- a/app/src/main/res/layout/fragment_profile.xml
+++ b/app/src/main/res/layout/fragment_profile.xml
@@ -1,7 +1,8 @@
-
@@ -174,7 +175,7 @@
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
app:srcCompat="@drawable/account"
- app:tint="@color/light_blue" />
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- \
@@ -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" />
+
+
+
+
+
+
+
+
+
+
+
+ android:visibility="gone">
+ app:srcCompat="@drawable/contact_us" />
-
+
diff --git a/app/src/main/res/layout/row_all_beneficiary.xml b/app/src/main/res/layout/row_all_beneficiary.xml
new file mode 100644
index 00000000..9e0f90b6
--- /dev/null
+++ b/app/src/main/res/layout/row_all_beneficiary.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
index 352045e1..03269804 100644
--- a/app/src/main/res/xml/file_paths.xml
+++ b/app/src/main/res/xml/file_paths.xml
@@ -2,6 +2,8 @@
-
+