finormaic ui, api

This commit is contained in:
satish_p
2021-08-16 19:29:35 +05:30
parent 0fd25b6c32
commit 2de93693ae
12 changed files with 137 additions and 46 deletions

View File

@@ -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
}

View File

@@ -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()

View File

@@ -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,

View File

@@ -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()
}
}

View File

@@ -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))
}

View File

@@ -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)
}
}
}
}

View 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>

View 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>

View 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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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 {