TP-34663 | Date Picker Language Set To English (#7138)

link: "https://github.cmd.navi-tech.in/medici/android-customer-app/pull/7138"
This commit is contained in:
Balrambhai Sharma
2023-07-09 12:51:28 +05:30
committed by GitHub Enterprise
parent de234612db
commit 8e7d143af0
7 changed files with 44 additions and 6 deletions

View File

@@ -20,5 +20,6 @@ const val ZERO_STRING = "0"
const val USER_DEVICE_DATA_LOCATION_API = "/user-device-data/location"
const val USER_DEVICE_DATA_APP_API = "/user-device-data/apps"
const val UPI_APP_INTENT_URL = "upi://pay"
const val DEFAULT_DATE_FORMAT = "yyyy-MM-dd"
const val HEADER_SIGNATURE = "X-Signature"
const val HEADER_EPOCH = "X-Epoch"

View File

@@ -54,7 +54,7 @@ class NaviCalendarPickerDialog(
binding.positiveButton.setOnClickListener {
callback?.onDateSelect(
binding.datePicker.year,
binding.datePicker.month + 1,
binding.datePicker.month,
binding.datePicker.dayOfMonth
)
dismiss()

View File

@@ -24,6 +24,7 @@ import com.navi.insurance.databinding.DobInputWidgetBinding
import com.navi.insurance.models.request.FormTypedKeyData
import com.navi.naviwidgets.extensions.setTextFieldData
import com.navi.naviwidgets.models.WidgetLayoutParams
import com.navi.naviwidgets.utils.getFormattedDate
import com.navi.naviwidgets.utils.setWidgetLayoutParams
import java.text.SimpleDateFormat
import java.util.*
@@ -90,7 +91,7 @@ class DobInputWidget @JvmOverloads constructor(context: Context, attrs: Attribut
override fun onDateSelect(year: Int, month: Int, dayOfMonth: Int) {
Timber.d("onNaviDateSet : [Year : $year, Month : ${month}, Day : ${dayOfMonth}]")
selectedDate = "$year-${"%02d".format(month)}-${"%02d".format(dayOfMonth)}"
selectedDate = getFormattedDate(year, month, dayOfMonth)
updateDate()
callback?.invoke(CtaData(type = CtaType.VALIDATE_FORM_PAGE.value))
}

View File

@@ -17,7 +17,6 @@ import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.view.forEach
import androidx.core.view.isVisible
import androidx.core.widget.doOnTextChanged
import androidx.databinding.DataBindingUtil
@@ -43,6 +42,7 @@ import com.navi.insurance.util.timestampToddMMMYYYY
import com.navi.naviwidgets.extensions.setMaxCharLength
import com.navi.naviwidgets.extensions.setTextFieldData
import com.navi.naviwidgets.models.WidgetLayoutParams
import com.navi.naviwidgets.utils.getFormattedDate
import com.navi.naviwidgets.utils.setWidgetLayoutParams
import java.util.*
import java.util.regex.Pattern
@@ -382,7 +382,7 @@ class PanDetailsInputWidgetLayout @JvmOverloads constructor(
}
override fun onDateSelect(year: Int, month: Int, dayOfMonth: Int) {
val dateString = "$year-${"%02d".format(month)}-${"%02d".format(dayOfMonth)}"
val dateString = getFormattedDate(year, month, dayOfMonth)
binding?.apply {
dobFieldTv.tag = dateString
dobWidgetKey?.let { widgetKey -> updateFormData(dateString, widgetKey) }

View File

@@ -50,6 +50,7 @@ import com.navi.naviwidgets.extensions.setMaxCharLength
import com.navi.naviwidgets.extensions.setTextFieldData
import com.navi.naviwidgets.extensions.showWhenDataIsAvailable
import com.navi.naviwidgets.utils.PIN_CODE_SIZE
import com.navi.naviwidgets.utils.getFormattedDate
import com.navi.naviwidgets.views.NaviErrorPageView
import isNotNullAndNotEmpty
import kotlinx.coroutines.delay
@@ -368,7 +369,7 @@ class HraFiActivationFragment : GiBaseFragment(), NaviCalendarPickerDialog.Call
val fieldTv = view.findViewById<TextView>(R.id.nameFieldTv)
val errorTv = view.findViewById<TextView>(R.id.errorText)
errorTv.visibility = View.INVISIBLE
fieldTv.text = "${"%02d".format(dayOfMonth)}-${"%02d".format(month)}-$year"
fieldTv.text = getFormattedDate(year, month, dayOfMonth)
viewModel.setSelectedDate(SelectedDate(year = year, month = month, day = dayOfMonth))
return
}

View File

@@ -24,6 +24,7 @@ import com.navi.naviwidgets.models.EditTextData
import com.navi.naviwidgets.models.TextEditTextCalendarItem
import com.navi.naviwidgets.models.response.TextFieldData
import com.navi.naviwidgets.utils.EMPTY
import com.navi.naviwidgets.utils.getFormattedDate
import java.util.*
@@ -181,6 +182,7 @@ class TextEditTextCalendarItemAdapter(
}
}
private fun onDobClick(
id: String?,
calendar: CalendarData?,
@@ -197,7 +199,7 @@ class TextEditTextCalendarItemAdapter(
getStyle(datePickerData?.style),
{ view, year, monthOfYear, dayOfMonth ->
binding.tvDob.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
val date = "$year-${"%02d".format(monthOfYear + ONE)}-${"%02d".format(dayOfMonth)}"
val date = getFormattedDate(year, monthOfYear, dayOfMonth)
datePickerData?.startYear = year
datePickerData?.startMonth = monthOfYear + ONE
datePickerData?.startDay = dayOfMonth

View File

@@ -47,6 +47,7 @@ import com.navi.base.model.ActionData
import com.navi.base.model.CtaData
import com.navi.base.model.GenericAnalytics
import com.navi.base.model.GenericAnalyticsData
import com.navi.base.utils.DEFAULT_DATE_FORMAT
import com.navi.base.utils.isNotNull
import com.navi.base.utils.isNotNullAndNotEmpty
import com.navi.base.utils.isNull
@@ -906,4 +907,36 @@ fun checkAndShowTimer(
timer.start()
} else return false
return true
}
fun getValidDateFormat(dateFormat: String, flowName: String = "DATE_FORMAT_INCORRECT"): String {
return try {
val sdf = SimpleDateFormat(dateFormat)
sdf.setLenient(false)
val sampleDate: Date = sdf.parse("2023-07-04")
if (sampleDate.isNotNull())
dateFormat
else DEFAULT_DATE_FORMAT
} catch (e: java.lang.Exception) {
val eventProperties = mapOf(
Pair("flow_name", flowName.orEmpty()),
Pair("method_name", "get_valid_date_format")
)
NaviTrackEvent.trackEvent("navi_date_format_error", eventProperties)
DEFAULT_DATE_FORMAT
}
}
fun getFormattedDate(
year: Int,
monthOfYear: Int,
dayOfMonth: Int,
dateFormat: String = DEFAULT_DATE_FORMAT
): String {
val validDateFormat = getValidDateFormat(dateFormat)
val dateCalendar = Calendar.getInstance()
dateCalendar.set(year, monthOfYear, dayOfMonth)
val selectedDate = dateCalendar.time
val englishDateFormat = SimpleDateFormat(validDateFormat, Locale.ENGLISH)
return englishDateFormat.format(selectedDate)
}