diff --git a/app/src/main/java/com/naviapp/common/customview/TextIconViewWithTick.kt b/app/src/main/java/com/naviapp/common/customview/TextIconViewWithTick.kt index e779c5b98c..0a1161de81 100644 --- a/app/src/main/java/com/naviapp/common/customview/TextIconViewWithTick.kt +++ b/app/src/main/java/com/naviapp/common/customview/TextIconViewWithTick.kt @@ -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 } diff --git a/app/src/main/java/com/naviapp/devicedata/finoramic/FinoramicHelper.kt b/app/src/main/java/com/naviapp/devicedata/finoramic/FinoramicHelper.kt index e1fcd8d8f5..c32710e3ab 100644 --- a/app/src/main/java/com/naviapp/devicedata/finoramic/FinoramicHelper.kt +++ b/app/src/main/java/com/naviapp/devicedata/finoramic/FinoramicHelper.kt @@ -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() map["CLIENT_ID"] = "3e922551-cb04-499a-ab5d-c37e1be93369"//data.clientId.orEmpty() diff --git a/app/src/main/java/com/naviapp/models/NaviProviderConfig.kt b/app/src/main/java/com/naviapp/models/NaviProviderConfig.kt index 1e93c507b7..75b93ac549 100644 --- a/app/src/main/java/com/naviapp/models/NaviProviderConfig.kt +++ b/app/src/main/java/com/naviapp/models/NaviProviderConfig.kt @@ -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, diff --git a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/fragments/ProfileFragment.kt b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/fragments/ProfileFragment.kt index de6b6d6fe5..f308dde254 100644 --- a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/fragments/ProfileFragment.kt +++ b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/fragments/ProfileFragment.kt @@ -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() } } \ No newline at end of file diff --git a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/repositories/ProfileRepository.kt b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/repositories/ProfileRepository.kt index 855135d90c..d982349766 100644 --- a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/repositories/ProfileRepository.kt +++ b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/repositories/ProfileRepository.kt @@ -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)) + } \ No newline at end of file diff --git a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/viewmodels/ProfileVM.kt b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/viewmodels/ProfileVM.kt index 989a407344..b902640809 100644 --- a/app/src/main/java/com/naviapp/personalloan/useridentification/profile/viewmodels/ProfileVM.kt +++ b/app/src/main/java/com/naviapp/personalloan/useridentification/profile/viewmodels/ProfileVM.kt @@ -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 get() = _profileDataResponse + private val _postFinoramicData = MutableLiveData() + val postFinoramicData: LiveData + 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) + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_rounded_12_rect_gray.xml b/app/src/main/res/drawable/bg_rounded_12_rect_gray.xml new file mode 100644 index 0000000000..939f6e95b0 --- /dev/null +++ b/app/src/main/res/drawable/bg_rounded_12_rect_gray.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_rounded_rect_green_border.xml b/app/src/main/res/drawable/bg_rounded_rect_green_border.xml new file mode 100644 index 0000000000..8c193af2d2 --- /dev/null +++ b/app/src/main/res/drawable/bg_rounded_rect_green_border.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_google_svg.xml b/app/src/main/res/drawable/ic_google_svg.xml new file mode 100644 index 0000000000..16faff6e81 --- /dev/null +++ b/app/src/main/res/drawable/ic_google_svg.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/app/src/main/res/layout/text_icon_view_with_tick.xml b/app/src/main/res/layout/text_icon_view_with_tick.xml index 3c635d43fa..f44085a3bd 100644 --- a/app/src/main/res/layout/text_icon_view_with_tick.xml +++ b/app/src/main/res/layout/text_icon_view_with_tick.xml @@ -10,35 +10,34 @@ + android:padding="@dimen/layout_dp_16"> + app:layout_constraintTop_toTopOf="@+id/content_tv" + app:srcCompat="@drawable/ic_google_svg" /> + app:layout_constraintTop_toTopOf="@+id/content_tv" /> diff --git a/app/src/main/res/layout/user_profile_fragment.xml b/app/src/main/res/layout/user_profile_fragment.xml index 48b928d976..f659e27665 100644 --- a/app/src/main/res/layout/user_profile_fragment.xml +++ b/app/src/main/res/layout/user_profile_fragment.xml @@ -61,11 +61,13 @@ + app:layout_constraintTop_toBottomOf="@+id/marital_status_layout" />