NTP-15204 | Remove customers/me/profile (#13830)

This commit is contained in:
Shivam Goyal
2024-11-27 14:18:24 +05:30
committed by GitHub
parent 12734bd9a8
commit dc530766ee
26 changed files with 43 additions and 307 deletions

View File

@@ -31,7 +31,6 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.ADVERSE_N
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.DISABLE_ALFRED
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_BATCH_SIZE
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.PULSE_EVENT_INTERVAL_IN_SECS
import com.navi.common.managers.UserManager
import com.navi.common.utils.CommonUtils
import com.navi.common.utils.getSessionId
import com.navi.common.utils.updateSessionId
@@ -168,7 +167,6 @@ object NaviSDKHelper {
NaviTrackEvent.logoutUser()
NaviTrackEvent.firebaseAuthSignOut()
RazorpayHelper().clearRazorPayData(context)
UserManager.clearUser()
DeeplinkManager().logOut()
NaviApplication.instance.naviPayManager.get().onAppLogout()
NaviApplication.instance.notificationManager.get().logout()

View File

@@ -37,10 +37,10 @@ import com.navi.base.deeplink.util.DeeplinkConstants.RELEASE_LOG
import com.navi.base.model.CtaData
import com.navi.base.model.CtaType
import com.navi.base.model.LineItem
import com.navi.base.sharedpref.CommonPrefConstants.CURRENT_USER
import com.navi.base.sharedpref.CommonPrefConstants.USER_EXTERNAL_ID
import com.navi.base.sharedpref.PreferenceManager
import com.navi.base.utils.BaseUtils
import com.navi.base.utils.EMPTY
import com.navi.base.utils.orFalse
import com.navi.base.utils.orZero
import com.navi.base.utils.replaceAngularBrackets
@@ -58,7 +58,6 @@ import com.navi.chat.utils.getCrmWebViewIntent
import com.navi.coin.navigator.NaviCoinDeepLinkNavigator
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
import com.navi.common.model.ModuleNameV2
import com.navi.common.model.UserDetail
import com.navi.common.navigation.NavArgs
import com.navi.common.ui.activity.NaviWebViewActivity
import com.navi.common.utils.Constants.ADDITIONAL_PARAMETERS
@@ -166,7 +165,7 @@ import timber.log.Timber
object NaviDeepLinkNavigator : DeepLinkListener {
private const val POST_OFFER_GENERATION = "POST_OFFER_GENERATION"
const val LOAN_APPLICATION = "LOAN_APPLICATION"
private const val LOAN_APPLICATION = "LOAN_APPLICATION"
private const val APP_SETTINGS = "APP_SETTINGS"
const val FAQ = "faq"
private const val CALL = "call"
@@ -234,7 +233,7 @@ object NaviDeepLinkNavigator : DeepLinkListener {
private const val FEEDBACK_SCREEN = "feedback_screen"
private const val DIGITAL_GOLD_FTUE = "digitalGoldFTUE"
private const val PAYMENT_BEHAVIOUR = "PAYMENT_BEHAVIOUR"
const val BANK_ACCOUNT_CHANGE = "bank_account_change"
private const val BANK_ACCOUNT_CHANGE = "bank_account_change"
private const val PAYMENT_HANDLER = "PAYMENT_HANDLER"
private const val COIN = "coin"
private const val ACCOUNT_AGGREGATOR = "ACCOUNT_AGGREGATOR_V2"
@@ -553,13 +552,7 @@ object NaviDeepLinkNavigator : DeepLinkListener {
NaviChatSystemLocalData(
source = shareableLink.orEmpty(),
sourceId = sourceId.orEmpty(),
currentUserName =
PreferenceManager.getSecureObject(
CURRENT_USER,
UserDetail::class.java
)
?.name
.orEmpty(),
currentUserName = EMPTY,
externalCustomerId =
PreferenceManager.getStringPreference(USER_EXTERNAL_ID)
.orEmpty(),

View File

@@ -16,12 +16,10 @@ import androidx.lifecycle.ViewModelProvider
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.model.CtaData
import com.navi.base.model.LineItem
import com.navi.base.utils.BaseUtils
import com.navi.base.utils.orFalse
import com.navi.common.model.GroupFaq
import com.navi.common.model.ModuleNameV2
import com.navi.common.ui.activity.BaseActivity
import com.navi.common.utils.observeNonNull
import com.navi.common.utils.observeNullable
import com.naviapp.R
import com.naviapp.analytics.utils.NaviAnalytics
@@ -32,15 +30,13 @@ import com.naviapp.dashboard.menu.customersupport.listeners.FaqInteractionListen
import com.naviapp.dashboard.viewmodels.DashboardSharedVM
import com.naviapp.databinding.ActivityCustomerSupportBinding
import com.naviapp.network.ApiErrorTagType
import com.naviapp.utils.*
import com.naviapp.utils.Constants.HOME_LOAN
import com.naviapp.utils.IntentConstants
import com.naviapp.utils.onPageSelected
class CustomerSupportActivity : BaseActivity(), View.OnClickListener, FaqInteractionListener {
private lateinit var binding: ActivityCustomerSupportBinding
private val viewModel by lazy { ViewModelProvider(this).get(DashboardSharedVM::class.java) }
private var userName: String? = null
private var userPhoneNumber: String? = null
private var userEmail: String? = null
private val naviAnalyticsEventTracker = NaviAnalytics.naviAnalytics.CustomerSupport()
private var shouldRefresh: Boolean? = false
private var product: String? = null
@@ -110,19 +106,11 @@ class CustomerSupportActivity : BaseActivity(), View.OnClickListener, FaqInterac
hideLoader()
it?.let { groupFaqs -> initData(groupFaqs) }
}
viewModel.userProfile.observeNonNull(this) {
userName = it.name
userPhoneNumber = it.phoneNumber
userEmail = it.email
}
}
private fun initUI() {
showLoader(isShimmerEffect = true)
viewModel.fetchFaqs(product, subProduct, screenName)
if (BaseUtils.isUserLoggedIn()) {
viewModel.fetchUserProfileData(naeScreenName = screenName)
}
binding.sectionHeading.sectionHeadingTv.text = resources.getString(R.string.faqs_text)
binding.sectionHeading.backIv.setOnClickListener(this)
}

View File

@@ -14,13 +14,6 @@ import com.naviapp.utils.retrofitService
import com.naviapp.utils.superAppRetrofitService
class DashboardRepository : ResponseCallback() {
suspend fun fetchUserProfile(naeScreenName: String) =
apiResponseCallback(
retrofitService().fetchUserProfile(),
metricInfo =
MetricInfo.AppMetric(screen = naeScreenName, isNae = { !it.isSuccessWithData() })
)
suspend fun fetchFaqs(product: String?, subProduct: String?, naeScreenName: String) =
apiResponseCallback(
superAppRetrofitService().fetchFaqs(product, subProduct),

View File

@@ -16,7 +16,6 @@ import com.navi.common.viewmodel.BaseVM
import com.navi.payment.paymenthandler.model.PaymentStatusData
import com.naviapp.dashboard.repositories.DashboardRepository
import com.naviapp.models.GiPaymentError
import com.naviapp.models.UserProfile
import com.naviapp.models.response.CustomerSupportOptionsResponse
import com.naviapp.network.ApiErrorTagType
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -34,10 +33,6 @@ class DashboardSharedVM(private val repository: DashboardRepository = DashboardR
_pgRepaymentStatus.value = data
}
private val _userProfile = MutableLiveData<UserProfile>()
val userProfile: LiveData<UserProfile>
get() = _userProfile
private val _faqs = MutableLiveData<List<GroupFaq>>()
val faqs: LiveData<List<GroupFaq>>
get() = _faqs
@@ -69,17 +64,6 @@ class DashboardSharedVM(private val repository: DashboardRepository = DashboardR
}
}
fun fetchUserProfileData(needToShowError: Boolean = false, naeScreenName: String) {
coroutineScope.launch {
val response = repository.fetchUserProfile(naeScreenName = naeScreenName)
if (response.error == null && response.errors.isNullOrEmpty()) {
_userProfile.value = response.data
} else if (needToShowError) {
setErrorData(response.errors, response.error)
}
}
}
fun logout(naeScreenName: String) {
coroutineScope.launch {
val response = repository.logout(naeScreenName = naeScreenName)

View File

@@ -38,7 +38,6 @@ import com.navi.base.model.GenericAnalytics
import com.navi.base.model.GenericAnalyticsData
import com.navi.base.model.NaviClickAction
import com.navi.base.model.NaviWidgetClickWithActionData
import com.navi.base.sharedpref.CommonPrefConstants.CURRENT_USER
import com.navi.base.sharedpref.PreferenceManager
import com.navi.base.utils.AppLaunchUtils
import com.navi.base.utils.BaseUtils
@@ -61,12 +60,10 @@ import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.RESOURCE_MANAGER_ENABLED
import com.navi.common.handler.CollectRequestPopupEventHandler
import com.navi.common.managers.PermissionsManager
import com.navi.common.managers.UserManager
import com.navi.common.model.AppUpgradeResponse
import com.navi.common.model.ModuleName
import com.navi.common.model.ModuleNameV2
import com.navi.common.model.PreviousScreenNameRequest
import com.navi.common.model.UserDetail
import com.navi.common.model.common.NetworkConnectivityNudgeData
import com.navi.common.network.models.GenericErrorResponse
import com.navi.common.resourcemanager.manager.ResourceManager
@@ -335,7 +332,6 @@ class HomePageActivity :
handleStatusBarColor()
startPeriodicDataUploadWorker()
initPaymentListener()
fetchOtherModulesData()
initHomeScreenActions()
navigateToHomeTab(isResetCall = true)
redirectToTab()
@@ -346,16 +342,6 @@ class HomePageActivity :
AppLoadTimerMapper.setAppLaunchEventStatus(intent.action != Intent.ACTION_MAIN)
}
private fun fetchOtherModulesData() {
if (BaseUtils.isUserLoggedIn()) {
fetchUserProfileData()
}
}
private fun fetchUserProfileData() {
dashboardSharedVM.fetchUserProfileData(naeScreenName = screenName)
}
private fun handleStatusBarColor() {
when (sharedVM.getSelectedTabId()) {
BottomBarTabType.HOME.name -> {
@@ -492,7 +478,6 @@ class HomePageActivity :
registrationVM.createNewSessionIfRequired(naeScreenName = screenName)
observeCachedResponse()
observeLoggedOut()
observeUserProfile()
observeHomeFeaturesData()
observeGIPaymentFailed()
observeNpsRatingSubmitResponse()
@@ -885,15 +870,6 @@ class HomePageActivity :
}
}
private fun observeUserProfile() {
dashboardSharedVM.userProfile.observeNonNull(this) {
val userDetail =
UserDetail(name = it.name.orEmpty(), phoneNumber = it.phoneNumber.orEmpty())
PreferenceManager.saveObjectSecurely(CURRENT_USER, userDetail)
UserManager.setUserDetail(userDetail)
}
}
private fun initErrors() {
initError(registrationVM)
initError(dashboardSharedVM)

View File

@@ -1,22 +0,0 @@
/*
*
* * Copyright © 2019-2023 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.models
import android.os.Parcelable
import com.google.gson.annotations.SerializedName
import com.navi.common.model.BankDetail
import kotlinx.parcelize.Parcelize
@Parcelize
data class UserProfile(
@SerializedName("name") var name: String? = null,
@SerializedName("email") var email: String? = null,
@SerializedName("phoneNumber") val phoneNumber: String? = null,
@SerializedName("bankAccount") var bankDetails: BankDetail? = null,
@SerializedName("insurance") val hasInsurance: Boolean? = null
) : Parcelable

View File

@@ -26,7 +26,6 @@ import com.navi.common.model.InitiateRescheduleLoanAgreementGenerationRequest
import com.navi.common.model.InitiateRescheduleLoanAgreementGenerationResponse
import com.navi.common.model.ModuleName
import com.navi.common.model.PaymentOrderDetail
import com.navi.common.model.ProfileResponse
import com.navi.common.model.UploadDataAsyncResponse
import com.navi.common.model.UserDataWrapper
import com.navi.common.network.EnableRequestBodyLogging
@@ -83,7 +82,6 @@ import com.naviapp.models.EnachData
import com.naviapp.models.LoginSettings
import com.naviapp.models.RedirectPageStatus
import com.naviapp.models.UserInstalledApp
import com.naviapp.models.UserProfile
import com.naviapp.models.request.AutoPayOptionData
import com.naviapp.models.request.CrossSellProductDetailsRequest
import com.naviapp.models.request.CustomPaymentRequest
@@ -276,9 +274,6 @@ interface RetrofitService {
@Path("loan_account_number") loanAccountNumber: String
): Response<GenericResponse<List<TransactionDetail>>>
@GET("/customer-service/customers/me/profile")
suspend fun fetchUserProfile(): Response<GenericResponse<UserProfile>>
@GET("/faq")
suspend fun fetchFaqs(
@Query("product") product: String? = null,
@@ -356,9 +351,6 @@ interface RetrofitService {
@Body autoPayOptionData: AutoPayOptionData
): Response<GenericResponse<UploadDataAsyncResponse>>
@GET("customer-service/customers/me/profile")
suspend fun fetchProfileDetails(): Response<GenericResponse<ProfileResponse>>
// Logout
@POST("/auth/v1/logout") suspend fun logout(): Response<GenericResponse<SuccessResponse>>

View File

@@ -38,8 +38,6 @@ class PaymentRepository @Inject constructor() : ResponseCallback() {
): RepoResult<AsyncRequestData<PaymentOrderDetail>> =
apiResponseCallback(retrofitService().getRepaymentDetail(requestId, repaymentType))
suspend fun fetchProfileDetails() = apiResponseCallback(retrofitService().fetchProfileDetails())
suspend fun postPgRepaymentStatus(
loanAccountNumber: String,
data: PaymentStatusData

View File

@@ -10,11 +10,11 @@ package com.naviapp.payment.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.utils.EMPTY
import com.navi.base.utils.orZero
import com.navi.common.model.GroupFaq
import com.navi.common.model.ModuleNameV2
import com.navi.common.model.PaymentOrderDetail
import com.navi.common.model.ProfileResponse
import com.navi.common.model.UploadDataAsyncResponse
import com.navi.common.network.models.ErrorMetaData
import com.navi.common.utils.CommonNaviAnalytics
@@ -82,8 +82,6 @@ class PaymentVM : BaseVM() {
MutableStateFlow<GenericWidgetState>(GenericWidgetState.Init)
val loanForeclosureResponse = _loanForeclosureResponse.asStateFlow()
private val profileResponse = MutableLiveData<ProfileResponse>()
private val _prePaymentDetails = MutableLiveData<PrePaymentDetailsResponse>()
val prePaymentDetails: LiveData<PrePaymentDetailsResponse>
get() = _prePaymentDetails
@@ -148,9 +146,7 @@ class PaymentVM : BaseVM() {
return@launch
}
_paymentOrderData.value = response.data?.details
if (profileResponse.value == null)
fetchProfileDetails(response.data?.details, amount)
else populatePaymentData(response.data?.details, amount)
populatePaymentData(response.data?.details, amount)
} else {
isPaymentLoaderShowing = false
updateErrorMessage(response.error)
@@ -158,29 +154,16 @@ class PaymentVM : BaseVM() {
}
}
private fun fetchProfileDetails(data: PaymentOrderDetail?, amount: Amount?) {
coroutineScope.launch {
val response = repository.fetchProfileDetails()
profileResponse.value = response.data
if (response.error == null) {
populatePaymentData(data, amount)
} else {
updateErrorMessage(response.error)
}
}
}
private fun populatePaymentData(orderDetail: PaymentOrderDetail?, amount: Amount?) {
val paymentReq = PaymentRequest()
amount?.let {
paymentReq.name = profileResponse.value?.name
paymentReq.name = EMPTY
/** Amount is always passed in currency subunits Eg: "500" = INR 5.00 */
paymentReq.amount = (it.value.orZero() * RUPEES_IN_PAISA).toString()
paymentReq.currency = it.currency
paymentReq.orderId = orderDetail?.orderDetail?.orderId
paymentReq.notes = Notes(orderDetail?.paymentReferenceId)
paymentReq.prefill =
Prefill(profileResponse.value?.email, profileResponse.value?.phoneNumber)
paymentReq.prefill = Prefill(EMPTY, EMPTY)
paymentReq.method = orderDetail?.hidePaymentMethod
_paymentDetail.value = paymentReq
}

View File

@@ -17,10 +17,9 @@ import android.view.ViewStub
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import com.navi.analytics.utils.NaviTrackEvent
import com.navi.base.sharedpref.CommonPrefConstants.CURRENT_USER
import com.navi.base.sharedpref.CommonPrefConstants.USER_EXTERNAL_ID
import com.navi.base.sharedpref.PreferenceManager
import com.navi.base.utils.BaseUtils
import com.navi.base.utils.EMPTY
import com.navi.base.utils.orTrue
import com.navi.chat.models.NaviChatSystemLocalData
import com.navi.chat.utils.CHAT_ACTIVITY
@@ -32,7 +31,6 @@ import com.navi.chat.utils.TIMESTAMP
import com.navi.chat.utils.TRACKING_UUID
import com.navi.chat.utils.navigateToCrm
import com.navi.common.R as CommonR
import com.navi.common.model.UserDetail
import com.navi.common.ui.fragment.BaseBottomSheet
import com.navi.common.utils.bankDetailsAutoDebitFaqs
import com.navi.common.utils.bankDetailsFaqs
@@ -93,19 +91,6 @@ class CustomerSupportFragment : BaseBottomSheet(), View.OnClickListener {
binding.sendEmailIbv.setOnClickListener(this)
binding.faqsIbv.setOnClickListener(this)
binding.itcvChat.setOnClickListener(this)
viewModel.userProfile.observeNonNull(this) {
val bundle = Bundle()
if (loanType == Constants.TYPE_HOME_LOAN) {
bundle.putString(KEY_PRODUCT, Constants.HOME_LOAN)
}
ScreenNavigator.instance.startActivity(
activity,
ScreenNavigator.EMAIL_US_SCREEN,
isRootActivity = false,
bundle = bundle
)
hideLoader()
}
viewModel.customerSupportOptionsResponse.observeNonNull(this) {
customerSupportOptionResponse ->
@@ -187,14 +172,22 @@ class CustomerSupportFragment : BaseBottomSheet(), View.OnClickListener {
override fun onClick(v: View?) {
when (v?.id) {
R.id.send_email_ibv -> {
showLoader()
faqEventTracker.onHelpBottomSheetSendEmailClicked(
arguments?.getString(CUST_SCREEN_NAME).orEmpty(),
loanType
)
eventTracker.onSendEmailTap(arguments?.getString(CUST_SCREEN_NAME).orEmpty())
if (BaseUtils.isUserLoggedIn())
viewModel.fetchUserProfileData(true, naeScreenName = screenName)
val bundle = Bundle()
if (loanType == Constants.TYPE_HOME_LOAN) {
bundle.putString(KEY_PRODUCT, Constants.HOME_LOAN)
}
ScreenNavigator.instance.startActivity(
activity,
ScreenNavigator.EMAIL_US_SCREEN,
isRootActivity = false,
bundle = bundle
)
}
R.id.faqs_ibv -> {
faqEventTracker.onHelpBottomSheetFaqClicked(
@@ -212,10 +205,7 @@ class CustomerSupportFragment : BaseBottomSheet(), View.OnClickListener {
NaviChatSystemLocalData(
source = touchPointName.orEmpty(),
sourceId = DEFAULT_SOURCE_ID_FOR_PL,
currentUserName =
PreferenceManager.getSecureObject(CURRENT_USER, UserDetail::class.java)
?.name
.orEmpty(),
currentUserName = EMPTY,
externalCustomerId =
PreferenceManager.getStringPreference(USER_EXTERNAL_ID).orEmpty()
)