* Shashidhara | Handle no internet on splash screen (#863) * Sat | <Ch-12343> | Hyperverge Selfie (#864) * started... * release 1.1.1 * Shashidhara | Update find ifsc visibility based on bank name validation * back press issue * minor changes * pre populate loan data from edit bank account * added contract * selfie hyperverge * error handlding * added git sttaus * added keys into gradle * added keys into docker file * intro screen hide after 1st time * removed instrauction Co-authored-by: Shashidhara Gopal <shashidhara.gopal@navi.com> * Feature/feedback on get loan journey (#868) * started ... * feedback continue.. * api intgration * feedback success added, api submit * Shashidhara | Toggle sticky footer on permissions screen based on login settings (#865) * Feature/permissions other tasks (#869) * added feedback on permission screen * tutorial page skipped * gps full page skipped * removed red screen from kyc and enach * uxcam id and user peroperty * analytics for submit feedback and api connection timeout * Feature/bank screen enhancements (#870) * Shashidhara | Add disclaimer * Shashidhara | Update edit bank option visibility * Shashidhara | Remove change bank option on mandate success * release 1.1.2 * Shashidhara | Add firebase performance (#871) * spalsh screen changes, feedback keys issue (#872) * minor changes * Mukunda | Fixing basic details and work details firebase keys (#873) * Shashidhara | Add scroll for auto debit screen * fix (#875) * Shashidhara | Update edit bank message * multiple select iusse (#877) Co-authored-by: Shashidhara Gopal <shashidhara.gopal@navi.com> Co-authored-by: Mukunda NS <mukunda.ns@navi.com> Co-authored-by: Shashidhara Gopal <shashidhara.gopal@navi.com> Co-authored-by: Mukunda NS <mukunda.ns@navi.com>
This commit is contained in:
committed by
GitHub Enterprise
parent
b362070db5
commit
c9e4ba0321
@@ -11,9 +11,10 @@ plugins {
|
||||
id('maven')
|
||||
id('com.google.firebase.crashlytics')
|
||||
id('com.google.gms.google-services')
|
||||
id('com.google.firebase.firebase-perf')
|
||||
}
|
||||
|
||||
def VERSION_NAME = "1.1.1"
|
||||
def VERSION_NAME = "1.1.2"
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
@@ -29,7 +30,7 @@ android {
|
||||
applicationId "com.naviapp"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 32
|
||||
versionCode 33
|
||||
versionName VERSION_NAME
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
@@ -261,6 +262,9 @@ dependencies {
|
||||
// Auto fetch phone number
|
||||
implementation 'com.google.android.gms:play-services-auth:18.0.0'
|
||||
|
||||
// Add the dependency for the Performance Monitoring library
|
||||
implementation 'com.google.firebase:firebase-perf:19.0.7'
|
||||
|
||||
// AndroidJUnitRunner and JUnit Rules
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test:rules:1.0.2'
|
||||
|
||||
@@ -147,6 +147,9 @@
|
||||
<meta-data
|
||||
android:name="firebase_analytics_collection_deactivated"
|
||||
android:value="false" />
|
||||
<meta-data
|
||||
android:name="firebase_performance_logcat_enabled"
|
||||
android:value="true" />
|
||||
|
||||
<!-- for Appsflyer install tracking-->
|
||||
<receiver
|
||||
|
||||
@@ -4,7 +4,6 @@ import androidx.lifecycle.MutableLiveData
|
||||
import com.naviapp.appupdate.repository.UpdateAppRepository
|
||||
import com.naviapp.common.BaseVM
|
||||
import com.naviapp.models.response.AppUpgradeResponse
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class UpdateAppVM : BaseVM() {
|
||||
private val repository by lazy { UpdateAppRepository() }
|
||||
@@ -12,14 +11,7 @@ class UpdateAppVM : BaseVM() {
|
||||
val appUpgradeData = MutableLiveData<AppUpgradeResponse>()
|
||||
val shouldUpdate = MutableLiveData<Boolean>()
|
||||
|
||||
fun checkAppUpdate() {
|
||||
coroutineScope.launch {
|
||||
val response = repository.checkAppUpdate()
|
||||
if (response.error == null) {
|
||||
appUpgradeData.value = response.data
|
||||
} else {
|
||||
appUpgradeData.value = null
|
||||
}
|
||||
}
|
||||
fun setData(data: AppUpgradeResponse?) {
|
||||
appUpgradeData.value = data
|
||||
}
|
||||
}
|
||||
@@ -99,15 +99,16 @@ class FeedbackFragment : BaseBottomSheet(), View.OnClickListener {
|
||||
val feedbackOption = FeedbackRowItemBinding.inflate(inflater, null, true)
|
||||
feedbackOption.data = option.desc
|
||||
feedbackOption.feedbackRb.tag = option.code.orEmpty()
|
||||
|
||||
feedbackOption.feedbackRb.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (isChecked && prevSelectedCode != option.code) {
|
||||
if (isChecked && selectedCode != option.code) {
|
||||
prevSelectedCode = selectedCode
|
||||
selectedCode = option.code
|
||||
handleCheckClick()
|
||||
if (!isOptionSelected) {
|
||||
isOptionSelected = true
|
||||
submitButtonState()
|
||||
}
|
||||
prevSelectedCode = selectedCode
|
||||
selectedCode = option.code
|
||||
handleCheckClick()
|
||||
}
|
||||
}
|
||||
binding.feedbackDetailLay.feedbackRg.addView(feedbackOption.root)
|
||||
@@ -157,7 +158,7 @@ class FeedbackFragment : BaseBottomSheet(), View.OnClickListener {
|
||||
if (isOptionSelected) {
|
||||
val comment = binding.feedbackDetailLay.commentEt.text?.toString().orEmpty()
|
||||
val data = FeedbackSubmitData(
|
||||
selectedCode.orEmpty(),
|
||||
screen.orEmpty(),
|
||||
arrayListOf(selectedCode.orEmpty()),
|
||||
comment
|
||||
)
|
||||
|
||||
@@ -86,10 +86,10 @@ fun getEditAccountData(): GenericWarningResponse {
|
||||
null,
|
||||
context.getString(R.string.warning),
|
||||
listOf(
|
||||
Action(context.getString(R.string.cancel)),
|
||||
Action(context.getString(R.string.confirm))
|
||||
Action(context.getString(R.string.confirm)),
|
||||
Action(context.getString(R.string.cancel))
|
||||
),
|
||||
listOf(Field(context.getString(R.string.verify_bank_account_again), null, null))
|
||||
null
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ package com.naviapp.firebasedb
|
||||
|
||||
const val SELFIE = "SELFIE"
|
||||
const val CUSTOMER_DETAILS = "CUSTOMER_DETAILS"
|
||||
const val BASIC_DETAILS = "BASIC_DETAILS"
|
||||
const val WORK_DETAILS = "WORK_DETAILS"
|
||||
const val PAN_DETAILS = "PAN_DETAILS"
|
||||
const val INIT_REPAYMENT = "INIT_REPAYMENT"
|
||||
const val REPAYMENT_CONFIRMATION = "REPAYMENT_CONFIRMATION"
|
||||
|
||||
@@ -48,6 +48,8 @@ class FirebaseDataHelper {
|
||||
SELFIE -> "UPLOAD_SELFIE"
|
||||
LOAN_AGREEMENT_CREATE -> "CREATE_LOAN_AGREEMENT"
|
||||
CUSTOMER_DETAILS -> "UPDATE_CUSTOMER_DETAILS"
|
||||
BASIC_DETAILS -> "UPDATE_BASIC_DETAILS"
|
||||
WORK_DETAILS -> "UPDATE_WORK_DETAILS"
|
||||
PAN_DETAILS -> "UPDATE_PAN_DETAILS"
|
||||
INIT_REPAYMENT -> "INITIATE_REPAYMENT"
|
||||
REPAYMENT_CONFIRMATION -> "REPAYMENT_CONFIRMATION"
|
||||
|
||||
@@ -472,12 +472,12 @@ class BankDetailsAutoDebitFragment : BaseFragment(), View.OnClickListener {
|
||||
private fun handleEditAccountClick() {
|
||||
naviAnalyticsEventTracker.onEditAccountTap()
|
||||
val primaryAction = View.OnClickListener {
|
||||
naviAnalyticsEventTracker.onCancelButtonTap()
|
||||
}
|
||||
val secondaryAction = View.OnClickListener {
|
||||
naviAnalyticsEventTracker.onConfirmButtonTap()
|
||||
navigateToBankDetailsScreen()
|
||||
}
|
||||
val secondaryAction = View.OnClickListener {
|
||||
naviAnalyticsEventTracker.onCancelButtonTap()
|
||||
}
|
||||
try {
|
||||
val waringDialog =
|
||||
ActionWarningFragment.getInstance(
|
||||
|
||||
@@ -16,7 +16,7 @@ object FeedbackPageType {
|
||||
const val WORK_DETAILS_PAGE = "WORK_DETAILS_PAGE"
|
||||
const val PAN_DETAILS_PAGE = "PAN_DETAILS_PAGE"
|
||||
const val LOAN_OFFER_PAGE = "LOAN_OFFER_PAGE"
|
||||
const val KYC_PAGE = "PERMISSIONS_PAGE"
|
||||
const val KYC_PAGE = "KYC_PAGE"
|
||||
const val BANK_DETAILS_PAGE = "BANK_DETAILS_PAGE"
|
||||
const val AUTO_DEBIT_PAGE = "AUTO_DEBIT_PAGE"
|
||||
const val LOAN_AGREEMENT_PAGE = "LOAN_AGREEMENT_PAGE"
|
||||
|
||||
@@ -11,5 +11,5 @@ import com.google.gson.annotations.SerializedName
|
||||
data class FeedbackSubmitData(
|
||||
@SerializedName("pageCode") val collect: String? = null,
|
||||
@SerializedName("feedbackCodes") val feedbackCodesList: ArrayList<String>? = null,
|
||||
@SerializedName("comments") val comments: String? = null
|
||||
@SerializedName("comment") val comments: String? = null
|
||||
)
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.naviapp.models
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.naviapp.models.response.AppUpgradeResponse
|
||||
|
||||
data class LoginSettings(
|
||||
@SerializedName("warning") val warning: Warning? = null,
|
||||
@SerializedName("features") val features: List<Feature>? = null
|
||||
@SerializedName("features") val features: List<Feature>? = null,
|
||||
@SerializedName("appUpgradeSettings") val appUpgradeSettings: AppUpgradeResponse? = null
|
||||
)
|
||||
|
||||
data class Warning(
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.naviapp.network.ApiErrorTagType
|
||||
import com.naviapp.permission.activities.PermissionActivity
|
||||
import com.naviapp.pushnotification.NotificationHandler
|
||||
import com.naviapp.registration.navigator.RegistrationNavigator
|
||||
import com.naviapp.registration.viewmodel.ConfigVM
|
||||
import com.naviapp.registration.viewmodel.RegistrationVM
|
||||
import com.naviapp.sharedpref.PreferenceManager
|
||||
import com.naviapp.tutorial.TutorialActivity
|
||||
@@ -42,9 +43,11 @@ class SplashActivity : BaseActivity() {
|
||||
private lateinit var binding: ActivitySplashScreenBinding
|
||||
|
||||
private val registrationVM by lazy { ViewModelProvider(this).get(RegistrationVM::class.java) }
|
||||
private val configVM by lazy { ViewModelProvider(this).get(ConfigVM::class.java) }
|
||||
|
||||
private var startTime = 0L
|
||||
private val navigator by lazy { RegistrationNavigator() }
|
||||
private var handler: Handler? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -58,7 +61,10 @@ class SplashActivity : BaseActivity() {
|
||||
init()
|
||||
initObservers()
|
||||
loginSettings()
|
||||
checkDevice()
|
||||
}
|
||||
|
||||
private fun loginSettings() {
|
||||
configVM.fetchLoginSettings()
|
||||
}
|
||||
|
||||
private fun loginSettings() {
|
||||
@@ -75,7 +81,11 @@ class SplashActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private val noInternetListener = View.OnClickListener { checkDevice() }
|
||||
private val noInternetListener = View.OnClickListener {
|
||||
if (observeRedirectionStatus()) {
|
||||
registrationVM.getRedirectStatus()
|
||||
}
|
||||
}
|
||||
|
||||
private fun initErrors() {
|
||||
initError(
|
||||
@@ -90,10 +100,13 @@ class SplashActivity : BaseActivity() {
|
||||
private fun observeRedirectionStatus(): Boolean {
|
||||
val sessionToken = PreferenceManager.getStringPreference(SESSION_TOKEN)
|
||||
if (sessionToken.isNullOrBlank()) {
|
||||
navigateToNextScreen()
|
||||
navigateToNextScreen(getDelayBeforeTransition())
|
||||
return false
|
||||
}
|
||||
NotificationHandler.handleFcmToken()
|
||||
return true
|
||||
}
|
||||
|
||||
private fun observeRedirectStatus() {
|
||||
registrationVM.redirectPage.observeNullable(this) { data ->
|
||||
hideLoader()
|
||||
data?.let {
|
||||
@@ -102,22 +115,35 @@ class SplashActivity : BaseActivity() {
|
||||
navigateToNextScreen()
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun initObservers() {
|
||||
loginSettingsObserver()
|
||||
checkDeviceObserver()
|
||||
appUpdateObserver()
|
||||
if (isRegisteredUser()) {
|
||||
NotificationHandler.handleFcmToken()
|
||||
observeRedirectStatus()
|
||||
} else {
|
||||
navigateToNextScreen()
|
||||
}
|
||||
}
|
||||
|
||||
private fun loginSettingsObserver() {
|
||||
registrationVM.loginSettings.observeNonNull(this) { loginSettings ->
|
||||
loginSettings.features?.forEach {
|
||||
PreferenceManager.setBooleanPreference(
|
||||
it.name.orEmpty(),
|
||||
it.enabled.orFalse()
|
||||
)
|
||||
configVM.loginSettings.observeNullable(this) {
|
||||
it?.let { loginSetting ->
|
||||
loginSetting.features?.forEach {
|
||||
PreferenceManager.setBooleanPreference(
|
||||
it.name.orEmpty(),
|
||||
it.enabled.orFalse()
|
||||
)
|
||||
}
|
||||
loginSetting.appUpgradeSettings?.let {
|
||||
appUpgradeVM.setData(it)
|
||||
}
|
||||
} ?: run {
|
||||
if (observeRedirectionStatus()) {
|
||||
registrationVM.getRedirectStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -132,44 +158,30 @@ class SplashActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkDevice() {
|
||||
getDeviceIdentifier().let {
|
||||
registrationVM.checkDevice(it)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkDeviceObserver() {
|
||||
registrationVM.isBlacklisted.observeNullable(this) { isBlocked ->
|
||||
isBlocked?.let {
|
||||
if (it) {
|
||||
toast(R.string.service_not_available)
|
||||
} else {
|
||||
appUpgradeVM.checkAppUpdate()
|
||||
}
|
||||
} ?: run {
|
||||
appUpgradeVM.checkAppUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* observeError fun is for handling error cases. eg : no network, server error, etc
|
||||
* **/
|
||||
|
||||
private fun navigateToNextScreen() {
|
||||
Handler().postDelayed({
|
||||
val nextActivityClass = destination()
|
||||
val intent = Intent(this, nextActivityClass)
|
||||
intent.addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
)
|
||||
if (nextActivityClass == TutorialActivity::class.java) {
|
||||
startActivity(intent, getSharedTransitionBundle())
|
||||
} else {
|
||||
startActivity(intent)
|
||||
}
|
||||
delayFinish()
|
||||
}, getDelayBeforeTransition())
|
||||
private fun navigateToNextScreen(duration: Long = SPLASH_MAX_DELAY) {
|
||||
handler?.removeCallbacksAndMessages(null)
|
||||
handler = Handler()
|
||||
handler?.postDelayed({
|
||||
startNextActivity()
|
||||
}, duration)
|
||||
}
|
||||
|
||||
private fun startNextActivity() {
|
||||
val nextActivityClass = destination()
|
||||
val intent = Intent(this, nextActivityClass)
|
||||
intent.addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
)
|
||||
if (nextActivityClass == TutorialActivity::class.java) {
|
||||
startActivity(intent, getSharedTransitionBundle())
|
||||
} else {
|
||||
startActivity(intent)
|
||||
}
|
||||
delayFinish()
|
||||
}
|
||||
|
||||
private fun getDelayBeforeTransition(): Long {
|
||||
@@ -187,13 +199,21 @@ class SplashActivity : BaseActivity() {
|
||||
|
||||
private fun destination(): Class<out AppCompatActivity> {
|
||||
return when {
|
||||
// isFirstTimeUser() -> TutorialActivity::class.java
|
||||
!(PreferenceManager.getBooleanPreference(PERMISSION_SCREEN_SHOWN)
|
||||
.orFalse()) -> PermissionActivity::class.java
|
||||
// isFirstTimeUser() -> TutorialActivity::class.java
|
||||
isPermissionScreenNeeded() -> PermissionActivity::class.java
|
||||
else -> RegistrationActivity::class.java
|
||||
}
|
||||
}
|
||||
|
||||
private fun isRegisteredUser(): Boolean {
|
||||
val sessionToken = PreferenceManager.getStringPreference(SESSION_TOKEN)
|
||||
return !sessionToken.isNullOrBlank()
|
||||
}
|
||||
|
||||
private fun isPermissionScreenNeeded(): Boolean {
|
||||
return !(PreferenceManager.getBooleanPreference(PERMISSION_SCREEN_SHOWN).orFalse())
|
||||
}
|
||||
|
||||
private fun isFirstTimeUser(): Boolean {
|
||||
return PreferenceManager.getBooleanPreference(NOT_FIRST_TIME_USER).not()
|
||||
}
|
||||
@@ -204,5 +224,6 @@ class SplashActivity : BaseActivity() {
|
||||
companion object {
|
||||
private const val SPLASH_DELAY = 1000L
|
||||
private const val TAG = "SPLASH_ACTIVITY"
|
||||
private const val SPLASH_MAX_DELAY = 10000L
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* *
|
||||
* * Copyright (c) 2020 . All rights reserved @Navi
|
||||
*
|
||||
*/
|
||||
|
||||
package com.naviapp.registration.viewmodel
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.naviapp.common.BaseVM
|
||||
import com.naviapp.models.LoginSettings
|
||||
import com.naviapp.registration.repositories.RegisterRepository
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
|
||||
class ConfigVM : BaseVM(false) {
|
||||
|
||||
private val registerRepository = RegisterRepository()
|
||||
|
||||
private val _loginSettings = MutableLiveData<LoginSettings>()
|
||||
val loginSettings: LiveData<LoginSettings>
|
||||
get() = _loginSettings
|
||||
|
||||
|
||||
fun fetchLoginSettings() {
|
||||
coroutineScope.launch {
|
||||
val response = registerRepository.fetchLoginSettings()
|
||||
Timber.tag("LOGIN SETTINGS").i("$response")
|
||||
if (response.error == null) {
|
||||
_loginSettings.value = response.data
|
||||
} else {
|
||||
_loginSettings.value = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.naviapp.common.BaseVM
|
||||
import com.naviapp.firebasedb.FirebaseStatusType
|
||||
import com.naviapp.models.LoginSettings
|
||||
import com.naviapp.models.RedirectPageStatus
|
||||
import com.naviapp.models.request.LoginRequest
|
||||
import com.naviapp.models.request.OtpRequest
|
||||
@@ -55,10 +54,6 @@ class RegistrationVM : BaseVM() {
|
||||
val privacyPolicy: LiveData<String>
|
||||
get() = _privacyPolicy
|
||||
|
||||
private val _loginSettings = MutableLiveData<LoginSettings>()
|
||||
val loginSettings: LiveData<LoginSettings>
|
||||
get() = _loginSettings
|
||||
|
||||
private val _isBlacklisted = MutableLiveData<Boolean>()
|
||||
val isBlacklisted: LiveData<Boolean>
|
||||
get() = _isBlacklisted
|
||||
@@ -148,16 +143,6 @@ class RegistrationVM : BaseVM() {
|
||||
}
|
||||
}
|
||||
|
||||
fun fetchLoginSettings() {
|
||||
coroutineScope.launch {
|
||||
val response = registerRepository.fetchLoginSettings()
|
||||
Timber.tag("LOGIN SETTINGS").i("$response")
|
||||
if (response.error == null) {
|
||||
_loginSettings.value = response.data
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun checkDevice(deviceId: String) {
|
||||
Timber.i("Device Id $deviceId")
|
||||
val registerRequest = RegisterRequest(deviceId, Constants.CHANNEL_ID)
|
||||
|
||||
@@ -39,10 +39,13 @@ class SelfieVerificationHelper {
|
||||
else
|
||||
HVFaceConfig.LivenessMode.NONE
|
||||
)
|
||||
|
||||
/*
|
||||
if (introShownCount < MAX_NO_SLEFIE_INTRO)
|
||||
hvFaceConfig.isShouldShowInstructionPage = it.showInstructionsPage.orFalse()
|
||||
else
|
||||
hvFaceConfig.isShouldShowInstructionPage = false
|
||||
*/
|
||||
|
||||
if (it.faceCaptureTitle.isNullOrBlank().not())
|
||||
hvFaceConfig.faceCaptureTitle = it.faceCaptureTitle
|
||||
@@ -59,7 +62,7 @@ class SelfieVerificationHelper {
|
||||
|
||||
} ?: run {
|
||||
hvFaceConfig.setLivenessMode(HVFaceConfig.LivenessMode.TEXTURELIVENESS)
|
||||
hvFaceConfig.isShouldShowInstructionPage = false
|
||||
// hvFaceConfig.isShouldShowInstructionPage = false
|
||||
}
|
||||
|
||||
val completionCallback =
|
||||
|
||||
@@ -24,11 +24,7 @@ import com.naviapp.common.navigator.ScreenNavigator
|
||||
import com.naviapp.dashboard.listeners.FragmentInterchangeListener
|
||||
import com.naviapp.databinding.UserProfileFragmentBinding
|
||||
import com.naviapp.errors.activities.ErrorActivity
|
||||
import com.naviapp.firebasedb.CUSTOMER_DETAILS
|
||||
import com.naviapp.firebasedb.FirebaseDataHelper
|
||||
import com.naviapp.firebasedb.FirebaseDataReceiveListener
|
||||
import com.naviapp.firebasedb.FirebaseResponse
|
||||
import com.naviapp.firebasedb.FirebaseStatusType
|
||||
import com.naviapp.firebasedb.*
|
||||
import com.naviapp.models.UserDetail
|
||||
import com.naviapp.network.ApiErrorTagType
|
||||
import com.naviapp.network.ApiErrorTagType.PROFILE_DETAILS_UPLOAD
|
||||
@@ -157,7 +153,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
|
||||
initFirebaseDataReceiver(
|
||||
lifecycle,
|
||||
firebaseDataReceiveListener,
|
||||
CUSTOMER_DETAILS,
|
||||
BASIC_DETAILS,
|
||||
requestId,
|
||||
notificationPath
|
||||
)
|
||||
|
||||
@@ -21,11 +21,7 @@ import com.naviapp.common.navigator.ScreenNavigator
|
||||
import com.naviapp.dashboard.listeners.FragmentInterchangeListener
|
||||
import com.naviapp.databinding.WorkFragmentBinding
|
||||
import com.naviapp.errors.activities.ErrorActivity
|
||||
import com.naviapp.firebasedb.CUSTOMER_DETAILS
|
||||
import com.naviapp.firebasedb.FirebaseDataHelper
|
||||
import com.naviapp.firebasedb.FirebaseDataReceiveListener
|
||||
import com.naviapp.firebasedb.FirebaseResponse
|
||||
import com.naviapp.firebasedb.FirebaseStatusType
|
||||
import com.naviapp.firebasedb.*
|
||||
import com.naviapp.models.UserDetail
|
||||
import com.naviapp.models.response.EmploymentTypeResponse
|
||||
import com.naviapp.network.ApiErrorTagType.WORK_DETAILS_UPLOAD
|
||||
@@ -155,7 +151,7 @@ class WorkFragment : BaseFragment(), View.OnClickListener, View.OnKeyListener,
|
||||
initFirebaseDataReceiver(
|
||||
lifecycle,
|
||||
firebaseDataReceiveListener,
|
||||
CUSTOMER_DETAILS,
|
||||
WORK_DETAILS,
|
||||
requestId,
|
||||
notificationPath
|
||||
)
|
||||
|
||||
@@ -2,122 +2,127 @@
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="@dimen/container_margin"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include
|
||||
android:id="@+id/bank_disclaimer_view"
|
||||
layout="@layout/bank_disclaimer_view"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bank_details_tv"
|
||||
style="@style/TitleFontStyle2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_16"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_disclaimer_view" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/bank_name_iv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_20"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/ic_bank_icon_svg"
|
||||
android:transitionName="@string/bank_name_logo_transition"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_details_tv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bank_name_tv"
|
||||
style="@style/FormElementFontStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_12"
|
||||
android:transitionName="@string/bank_name_transition"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bank_name_iv"
|
||||
app:layout_constraintStart_toEndOf="@id/bank_name_iv"
|
||||
app:layout_constraintTop_toTopOf="@id/bank_name_iv" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/account_number_iv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_20"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/ic_bank_account_number_svg"
|
||||
android:transitionName="@string/account_number_logo_transition"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_name_iv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/account_number_tv"
|
||||
style="@style/FormElementFontStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_12"
|
||||
android:transitionName="@string/account_number_transition"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_number_iv"
|
||||
app:layout_constraintStart_toEndOf="@id/account_number_iv"
|
||||
app:layout_constraintTop_toTopOf="@id/account_number_iv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verified_badge"
|
||||
style="@style/BadgeStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_8"
|
||||
android:background="@drawable/bg_rounded_rect_gray"
|
||||
android:backgroundTint="@color/green"
|
||||
android:paddingStart="@dimen/layout_dp_8"
|
||||
android:paddingTop="@dimen/layout_dp_4"
|
||||
android:paddingEnd="@dimen/layout_dp_8"
|
||||
android:paddingBottom="@dimen/layout_dp_4"
|
||||
android:text="@string/verified"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_number_tv"
|
||||
app:layout_constraintStart_toEndOf="@id/account_number_tv"
|
||||
app:layout_constraintTop_toTopOf="@id/account_number_tv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/edit_account_tv"
|
||||
style="@style/LinkRed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_22"
|
||||
android:text="@string/change_bank"
|
||||
app:layout_constraintStart_toStartOf="@id/account_number_iv"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_number_tv" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="@dimen/layout_dp_32"
|
||||
android:background="?android:attr/listDivider"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/edit_account_tv" />
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="@dimen/container_margin"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<include
|
||||
android:id="@+id/auto_debit_layout"
|
||||
layout="@layout/auto_debit_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_32"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/divider" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<include
|
||||
android:id="@+id/bank_disclaimer_view"
|
||||
layout="@layout/bank_disclaimer_view"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bank_details_tv"
|
||||
style="@style/TitleFontStyle2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_16"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_disclaimer_view" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/bank_name_iv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_20"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/ic_bank_icon_svg"
|
||||
android:transitionName="@string/bank_name_logo_transition"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_details_tv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bank_name_tv"
|
||||
style="@style/FormElementFontStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_12"
|
||||
android:transitionName="@string/bank_name_transition"
|
||||
app:layout_constraintBottom_toBottomOf="@id/bank_name_iv"
|
||||
app:layout_constraintStart_toEndOf="@id/bank_name_iv"
|
||||
app:layout_constraintTop_toTopOf="@id/bank_name_iv" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/account_number_iv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_20"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/ic_bank_account_number_svg"
|
||||
android:transitionName="@string/account_number_logo_transition"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/bank_name_iv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/account_number_tv"
|
||||
style="@style/FormElementFontStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_12"
|
||||
android:transitionName="@string/account_number_transition"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_number_iv"
|
||||
app:layout_constraintStart_toEndOf="@id/account_number_iv"
|
||||
app:layout_constraintTop_toTopOf="@id/account_number_iv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verified_badge"
|
||||
style="@style/BadgeStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_dp_8"
|
||||
android:background="@drawable/bg_rounded_rect_gray"
|
||||
android:backgroundTint="@color/green"
|
||||
android:paddingStart="@dimen/layout_dp_8"
|
||||
android:paddingTop="@dimen/layout_dp_4"
|
||||
android:paddingEnd="@dimen/layout_dp_8"
|
||||
android:paddingBottom="@dimen/layout_dp_4"
|
||||
android:text="@string/verified"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_number_tv"
|
||||
app:layout_constraintStart_toEndOf="@id/account_number_tv"
|
||||
app:layout_constraintTop_toTopOf="@id/account_number_tv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/edit_account_tv"
|
||||
style="@style/LinkRed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_22"
|
||||
android:text="@string/change_bank"
|
||||
app:layout_constraintStart_toStartOf="@id/account_number_iv"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_number_tv" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="@dimen/layout_dp_32"
|
||||
android:background="?android:attr/listDivider"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/edit_account_tv" />
|
||||
|
||||
<include
|
||||
android:id="@+id/auto_debit_layout"
|
||||
layout="@layout/auto_debit_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_32"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/divider" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</layout>
|
||||
@@ -28,6 +28,7 @@
|
||||
android:layout_marginEnd="@dimen/layout_dp_32"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:clickable="true"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
<string name="same_bank_account_will_be_used_to_get_loan_to_setup_auto_debit">Same bank account will be used to get loan & to setup auto-debit of EMIs</string>
|
||||
<string name="change_bank">Change Bank?</string>
|
||||
<string name="feedback_submit_hint">Leave a feedback…(optional)</string>
|
||||
<string name="feedback_title">It seems your are leaving!</string>
|
||||
<string name="feedback_title">It seems you are leaving!</string>
|
||||
<string name="feedback_subtitle">What went wrong?</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="feedback_submitted_desc">Thank you for sharing the \nfeedback with us.</string>
|
||||
|
||||
@@ -17,6 +17,7 @@ buildscript {
|
||||
|
||||
// Add the Crashlytics Gradle plugin.
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta04'
|
||||
classpath 'com.google.firebase:perf-plugin:1.3.1'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user