finormaic ui, api
This commit is contained in:
@@ -7,15 +7,17 @@
|
||||
package com.naviapp.common.customview
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.PorterDuff
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import com.naviapp.R
|
||||
import com.naviapp.common.listeners.CtaListener
|
||||
import com.naviapp.databinding.TextIconViewWithTickBinding
|
||||
import com.naviapp.databinding.ViewTagBinding
|
||||
|
||||
|
||||
class TextIconViewWithTick(context: Context?, attrs: AttributeSet?) : LinearLayout(context, attrs) {
|
||||
@@ -31,8 +33,29 @@ class TextIconViewWithTick(context: Context?, attrs: AttributeSet?) : LinearLayo
|
||||
)
|
||||
}
|
||||
|
||||
fun setData(description: String?, status: Boolean? = null, iconCode: String? = null) {
|
||||
description?.let {
|
||||
binding.contentTv.visibility = View.VISIBLE
|
||||
binding.contentTv.text = it
|
||||
}
|
||||
status?.let {
|
||||
if (it) {
|
||||
binding.root.setBackgroundResource(R.drawable.bg_rounded_12_rect_gray)
|
||||
binding.statusIv.setImageResource(R.drawable.ic_green_tick)
|
||||
} else {
|
||||
binding.root.setBackgroundResource(R.drawable.bg_rounded_rect_green_border)
|
||||
binding.statusIv.setColorFilter(
|
||||
ContextCompat.getColor(
|
||||
context,
|
||||
R.color.view_background_color_five
|
||||
), PorterDuff.Mode.SRC_IN
|
||||
)
|
||||
binding.statusIv.setImageResource(R.drawable.ic_arrow_right_svg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setListener(clickListener: CtaListener?){
|
||||
fun setListener(clickListener: CtaListener?) {
|
||||
this.clickListener = clickListener
|
||||
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import com.figg.sdk.android.FinoramicSdk
|
||||
import com.naviapp.BuildConfig
|
||||
import com.naviapp.models.FinormicData
|
||||
import com.naviapp.models.FinoramicData
|
||||
import com.naviapp.sharedpref.PreferenceManager
|
||||
import com.naviapp.utils.PROD
|
||||
import com.naviapp.utils.USER_EXTERNAL_ID
|
||||
@@ -18,11 +18,11 @@ import com.naviapp.utils.log
|
||||
|
||||
class FinoramicHelper {
|
||||
|
||||
fun init(data: FinormicData, context: Context?) {
|
||||
fun init(data: FinoramicData, context: Context?) {
|
||||
context?.apply { initImp(data, this) }
|
||||
}
|
||||
|
||||
private fun initImp(data: FinormicData, context: Context) {
|
||||
private fun initImp(data: FinoramicData, context: Context) {
|
||||
val externalUserId = PreferenceManager.getStringPreference(USER_EXTERNAL_ID)
|
||||
val map = mutableMapOf<String, String>()
|
||||
map["CLIENT_ID"] = "3e922551-cb04-499a-ab5d-c37e1be93369"//data.clientId.orEmpty()
|
||||
|
||||
@@ -9,10 +9,10 @@ package com.naviapp.models
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class NaviProviderConfig(
|
||||
@SerializedName("finoramic") val finoramic: FinormicData? = null
|
||||
@SerializedName("finoramic") val finoramic: FinoramicData? = null
|
||||
)
|
||||
|
||||
data class FinormicData(
|
||||
data class FinoramicData(
|
||||
@SerializedName("enabled") val enabled: Boolean? = null,
|
||||
@SerializedName("clientId") val clientId: String? = null,
|
||||
@SerializedName("clientSecret") val clientSecret: String? = null,
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.naviapp.firebasedb.*
|
||||
import com.naviapp.homeloan.common.listener.FooterInteractionListener
|
||||
import com.naviapp.homeloan.common.listener.HeaderInteractionListener
|
||||
import com.naviapp.models.CtaData
|
||||
import com.naviapp.models.FinormicData
|
||||
import com.naviapp.models.FinoramicData
|
||||
import com.naviapp.models.UserDetail
|
||||
import com.naviapp.network.ApiErrorTagType.PROFILE_DETAILS_UPLOAD
|
||||
import com.naviapp.personalloan.getloan.kyc.fragments.KycFragment
|
||||
@@ -85,7 +85,13 @@ class ProfileFragment : BaseFragment(),
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
activity?.let {
|
||||
val sharedViewModel = ViewModelProvider(it).get(EligibilityShareVM::class.java)
|
||||
// observeSharedData(sharedViewModel)
|
||||
observeSharedData(sharedViewModel)
|
||||
}
|
||||
}
|
||||
|
||||
private fun observeSharedData(sharedViewModel: EligibilityShareVM) {
|
||||
sharedViewModel.finoramicData.observeNonNull(this) { data ->
|
||||
viewModel.postFinoramicData(data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,6 +112,9 @@ class ProfileFragment : BaseFragment(),
|
||||
data.header?.subtitle,
|
||||
data.header?.progress
|
||||
)
|
||||
data.content?.finoramicStatus?.let {
|
||||
binding.googleLay.setData(it.description, it.uploadStatus, it.iconCode)
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.dataAsyncResponse.observeNonNull(this) {
|
||||
@@ -129,6 +138,10 @@ class ProfileFragment : BaseFragment(),
|
||||
apiPollInit(it)
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.postFinoramicData.observeNullable(this) {
|
||||
viewModel.fetchProfileData()
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalStdlibApi
|
||||
@@ -230,14 +243,15 @@ class ProfileFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
private fun initUi() {
|
||||
finoramicHelper = FinoramicHelper()
|
||||
finoramicHelper?.init(FinormicData(), context)
|
||||
|
||||
// val configData = getProviderConfig()
|
||||
// configData?.finoramic?.let {
|
||||
// finoramicHelper = FinoramicHelper()
|
||||
// finoramicHelper?.init(it, context)
|
||||
// }
|
||||
val configData = getProviderConfig()
|
||||
configData?.finoramic?.let {
|
||||
if (it.enabled.orFalse()) {
|
||||
binding.googleLay.visibility = View.VISIBLE
|
||||
finoramicHelper = FinoramicHelper()
|
||||
finoramicHelper?.init(it, context)
|
||||
}
|
||||
}
|
||||
binding.fullNameLayout.inputEt.setDependentFormTextView(binding.fullNameLayout.labelTv)
|
||||
binding.fullNameLayout.inputEt.inputType = InputType.TYPE_TEXT_FLAG_CAP_WORDS
|
||||
binding.fullNameLayout.inputEt.addTextChangedListener { enableNextButton() }
|
||||
@@ -433,20 +447,6 @@ class ProfileFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFooterBackPress(ctaData: CtaData?) {
|
||||
ctaData?.url?.let {
|
||||
fragmentInterchangeListener?.navigateToNextScreen(
|
||||
it, Bundle()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalStdlibApi
|
||||
override fun onFooterNextPress(ctaData: CtaData?, skipValidation: Boolean?) {
|
||||
finoramicSignIn()
|
||||
//onNextButtonClick()
|
||||
}
|
||||
|
||||
fun finoramicSignIn() {
|
||||
context?.let {
|
||||
val intent = FinoramicSdk.getGoogleSignIn(context, "satish://naviapp.com/", true)
|
||||
@@ -500,6 +500,7 @@ class ProfileFragment : BaseFragment(),
|
||||
|
||||
@ExperimentalStdlibApi
|
||||
override fun onFooterNextPress(ctaData: CtaData?, skipValidation: Boolean?) {
|
||||
onNextButtonClick()
|
||||
finoramicSignIn()
|
||||
// onNextButtonClick()
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.naviapp.personalloan.useridentification.profile.repositories
|
||||
|
||||
import com.naviapp.models.FinoramicPostData
|
||||
import com.naviapp.models.request.ProfileRequest
|
||||
import com.naviapp.models.response.ProfileDetailsResponse
|
||||
import com.naviapp.network.models.RepoResult
|
||||
@@ -19,4 +20,8 @@ class ProfileRepository : ResponseCallback() {
|
||||
|
||||
suspend fun checkUiStatus() =
|
||||
apiResponseCallback(retrofitService().getRedirectPageStatus())
|
||||
|
||||
suspend fun postFinoramicData(finoramicPostData: FinoramicPostData) =
|
||||
apiResponseCallback(retrofitService().sendFinoramicData(finoramicPostData))
|
||||
|
||||
}
|
||||
@@ -5,9 +5,12 @@ import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.naviapp.common.viewmodel.BaseVM
|
||||
import com.naviapp.firebasedb.FirebaseStatusType
|
||||
import com.naviapp.models.FinoramicData
|
||||
import com.naviapp.models.FinoramicPostData
|
||||
import com.naviapp.models.RedirectPageStatus
|
||||
import com.naviapp.models.request.ProfileRequest
|
||||
import com.naviapp.models.response.ProfileDetailsResponse
|
||||
import com.naviapp.models.response.SuccessResponse
|
||||
import com.naviapp.models.response.UploadDataAsyncResponse
|
||||
import com.naviapp.network.ApiErrorTagType.PROFILE_DETAILS_UPLOAD
|
||||
import com.naviapp.network.models.GenericErrorResponse
|
||||
@@ -33,6 +36,10 @@ class ProfileVM(private val repository: ProfileRepository = ProfileRepository())
|
||||
val profileDataResponse: LiveData<ProfileDetailsResponse>
|
||||
get() = _profileDataResponse
|
||||
|
||||
private val _postFinoramicData = MutableLiveData<SuccessResponse>()
|
||||
val postFinoramicData: LiveData<SuccessResponse>
|
||||
get() = _postFinoramicData
|
||||
|
||||
fun fetchProfileData() {
|
||||
coroutineScope.launch {
|
||||
val response = repository.fetchProfileData()
|
||||
@@ -97,4 +104,15 @@ class ProfileVM(private val repository: ProfileRepository = ProfileRepository())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun postFinoramicData(data: FinoramicPostData) {
|
||||
coroutineScope.launch {
|
||||
val response = repository.postFinoramicData(data)
|
||||
if (response.error == null) {
|
||||
_postFinoramicData.value = response.data
|
||||
} else {
|
||||
updateErrorMessage(response.error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
13
app/src/main/res/drawable/bg_rounded_12_rect_gray.xml
Normal file
13
app/src/main/res/drawable/bg_rounded_12_rect_gray.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ /**
|
||||
~ * Copyright (c) 2021 . All rights reserved @Navi
|
||||
~ */
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="@color/view_background_color_six" />
|
||||
<corners android:radius="@dimen/layout_dp_12" />
|
||||
|
||||
</shape>
|
||||
16
app/src/main/res/drawable/bg_rounded_rect_green_border.xml
Normal file
16
app/src/main/res/drawable/bg_rounded_rect_green_border.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ /**
|
||||
~ * Copyright (c) 2021 . All rights reserved @Navi
|
||||
~ */
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="@dimen/layout_dp_12" />
|
||||
|
||||
<stroke
|
||||
android:width="@dimen/divider_height"
|
||||
android:color="@color/green" />
|
||||
</shape>
|
||||
14
app/src/main/res/drawable/ic_google_svg.xml
Normal file
14
app/src/main/res/drawable/ic_google_svg.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<!--
|
||||
~ /**
|
||||
~ * Copyright (c) 2021 . All rights reserved @Navi
|
||||
~ */
|
||||
-->
|
||||
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#4285F4" android:pathData="M22.5325,12.2468C22.5325,11.5227 22.4683,10.8352 22.3583,10.166H12V14.3002H17.9308C17.665,15.6569 16.8858,16.8027 15.7308,17.5818V20.3318H19.2692C21.3408,18.416 22.5325,15.5927 22.5325,12.2468Z"/>
|
||||
<path android:fillColor="#34A853" android:pathData="M11.9991,22.9985C14.9691,22.9985 17.4533,22.0085 19.2683,20.331L15.73,17.581C14.74,18.241 13.4841,18.6443 11.9991,18.6443C9.13,18.6443 6.7008,16.7102 5.83,14.0977H2.1816V16.9302C3.9875,20.5235 7.7,22.9985 11.9991,22.9985Z"/>
|
||||
<path android:fillColor="#FBBC05" android:pathData="M5.8308,14.0992C5.6017,13.4392 5.4825,12.7334 5.4825,12C5.4825,11.2667 5.6108,10.5609 5.8308,9.9009V7.0684H2.1825C1.4308,8.5534 1,10.2217 1,12C1,13.7784 1.4308,15.4467 2.1825,16.9317L5.8308,14.0992Z"/>
|
||||
<path android:fillColor="#EA4335" android:pathData="M11.9991,5.3542C13.6216,5.3542 15.07,5.9133 16.2158,7.0042L19.3508,3.8692C17.4533,2.0908 14.9691,1 11.9991,1C7.7,1 3.9875,3.475 2.1816,7.0683L5.83,9.9008C6.7008,7.2883 9.13,5.3542 11.9991,5.3542Z"/>
|
||||
</vector>
|
||||
@@ -10,35 +10,34 @@
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/rounded_rectangle_blue_border_white_bg_15dp_radius"
|
||||
android:padding="@dimen/layout_dp_22">
|
||||
android:padding="@dimen/layout_dp_16">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_iv"
|
||||
android:layout_width="@dimen/layout_dp_24"
|
||||
android:layout_height="@dimen/layout_dp_24"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/content_tv"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="@+id/content_tv"
|
||||
app:srcCompat="@drawable/ic_google_svg" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/status_iv"
|
||||
android:layout_width="@dimen/layout_dp_18"
|
||||
android:layout_height="@dimen/layout_dp_18"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/icon_iv"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/content_tv"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/icon_iv"
|
||||
app:srcCompat="@drawable/ic_green_tick" />
|
||||
app:layout_constraintTop_toTopOf="@+id/content_tv" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/content_tv"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constrainedWidth="true"
|
||||
android:layout_marginStart="@dimen/layout_dp_12"
|
||||
android:layout_marginEnd="@dimen/layout_dp_18"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/icon_iv"
|
||||
android:layout_marginStart="@dimen/layout_dp_8"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/icon_iv"
|
||||
app:layout_constraintTop_toTopOf="@+id/icon_iv"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintWidth_percent="0.7"
|
||||
tools:text="jkhjkhhkhkhghjghj fghfghfghfhfhgf fgfghf hg hgjg ghfgf gfghf hgfg " />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -61,11 +61,13 @@
|
||||
<com.naviapp.common.customview.TextIconViewWithTick
|
||||
android:id="@+id/google_lay"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_dp_40"
|
||||
android:visibility="gone"
|
||||
android:minHeight="@dimen/layout_dp_56"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/pincode_layout" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/marital_status_layout" />
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.4.32'
|
||||
ext.kotlin_version = '1.5.21'
|
||||
ext.room_version = '2.3.0'
|
||||
ext.work_version = '2.5.0'
|
||||
repositories {
|
||||
|
||||
Reference in New Issue
Block a user