diff --git a/android/navi-common/src/main/java/com/navi/common/ui/bottomsheet/WidgetsSupportedBottomSheet.kt b/android/navi-common/src/main/java/com/navi/common/ui/bottomsheet/WidgetsSupportedBottomSheet.kt index ce6e3d7add..dc4977cbcb 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/bottomsheet/WidgetsSupportedBottomSheet.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/bottomsheet/WidgetsSupportedBottomSheet.kt @@ -52,6 +52,7 @@ import com.navi.naviwidgets.actions.ImplicitShareClickAction import com.navi.naviwidgets.actions.NaviWidgetClick import com.navi.naviwidgets.adapters.NaviAdapter import com.navi.naviwidgets.callbacks.WidgetCallback +import com.navi.naviwidgets.models.ActionButtonWidget import com.navi.naviwidgets.models.ButtonLoaderState import com.navi.naviwidgets.models.ContainerWidget import com.navi.naviwidgets.models.NaviWidget @@ -61,7 +62,9 @@ import com.navi.naviwidgets.models.ShareData import com.navi.naviwidgets.models.TextWithTimerWidget import com.navi.naviwidgets.models.TitleWithRadioWidget import com.navi.naviwidgets.models.WidgetChangedData +import com.navi.naviwidgets.utils.AMOUNT_ADJUSTMENT_BOTTOM_SHEET import com.navi.naviwidgets.utils.APP_SHARE +import com.navi.naviwidgets.utils.BOTTOM_SHEET_TAG import com.navi.naviwidgets.utils.STORE_BANK_UPI_ID import com.navi.naviwidgets.utils.STORE_SIP_INSTALLMENT_DATE import com.navi.naviwidgets.utils.STORE_UPI_ICON_URL @@ -135,7 +138,10 @@ class WidgetsSupportedBottomSheet() : BaseBottomSheet(), WidgetCallback { setBackground(COLOR_TRANSPARENT) } - getRv().setBackgroundColor(arguments?.getInt(BG_COLOR, Color.WHITE).orElse(Color.WHITE)) + val bgColor = arguments?.getInt(BG_COLOR, Color.WHITE).orElse(Color.WHITE) + if (bgColor != Color.WHITE) { + getRv().setBackgroundColor(bgColor) + } } private fun getRv(): RecyclerView { @@ -249,6 +255,61 @@ class WidgetsSupportedBottomSheet() : BaseBottomSheet(), WidgetCallback { } } } + is NaviWidgetClick -> { + widgetNaviAnalyticsEventTracker.onWidgetClickEvent(naviClickAction.actionData) + var amountAdjustmentDialogDismissListener: DialogInterface.OnDismissListener? = null + if ( + naviClickAction.actionData + ?.parameters + ?.firstOrNull { it.key == BOTTOM_SHEET_TAG } + ?.value + .equals(AMOUNT_ADJUSTMENT_BOTTOM_SHEET) + ) { + val capturedActivity = activity + amountAdjustmentDialogDismissListener = + DialogInterface.OnDismissListener { + val widgetList = naviClickAction.widgetBottomSheetData?.data + val primaryAction = + widgetList + ?.filterIsInstance() + ?.firstOrNull { + it.widgetNameForBaseAdapter == ContainerWidget.WIDGET_NAME + } + ?.widgetData + ?.items + ?.filterIsInstance() + ?.firstOrNull { + it.widgetNameForBaseAdapter == + ActionButtonWidget.WIDGET_NAME + } + ?.widgetData + ?.actionData + val primaryClickAction = + NaviWidgetClickWithActionData(actionData = primaryAction) + if (capturedActivity is WidgetCallback) { + capturedActivity.onClick(primaryClickAction, widgetId) + } else { + primaryAction?.let { + DeepLinkManager.getDeepLinkListener() + ?.navigateTo( + activity = activity, + ctaData = it.toCtaData(), + finish = naviClickAction.isFinish, + ) + } + } + } + } + val clickAction = + naviClickAction.copy( + dialogDismissListener = amountAdjustmentDialogDismissListener + ) + safelyDismissDialog() + val hostActivity = activity + if (hostActivity is WidgetCallback) { + hostActivity.onClick(clickAction, widgetId) + } + } else -> { val hostFragment = parentFragment if (hostFragment.isNotNull()) { diff --git a/android/navi-common/src/main/res/layout/layout_widgets_supported_bottomsheet.xml b/android/navi-common/src/main/res/layout/layout_widgets_supported_bottomsheet.xml index 6f591df783..176f0aff61 100644 --- a/android/navi-common/src/main/res/layout/layout_widgets_supported_bottomsheet.xml +++ b/android/navi-common/src/main/res/layout/layout_widgets_supported_bottomsheet.xml @@ -12,7 +12,7 @@ android:id="@+id/headerContainer" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/white" + android:background="@android:color/transparent" android:clipToPadding="false" android:paddingStart="@dimen/dp_16" android:paddingEnd="@dimen/dp_16" @@ -40,14 +40,14 @@ + android:background="@android:color/transparent"> + middleIcon.setOnClickListener { onSpanClick(actionData) } + } + info.middleIconWidgetData()?.actionData?.let { action -> + middleIcon.setOnClickListener { onSpanClick(action) } + } } } @@ -329,6 +353,19 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 binding.tvRight.visibility = VISIBLE } + private fun onSpanClick(actionData: ActionData?) { + if (actionData?.url == SHOW_WIDGET_BOTTOM_SHEET) { + widgetCallback.onClick( + NaviWidgetClick( + actionData = actionData, + widgetBottomSheetData = info.widgetBottomSheetData(), + ) + ) + } else { + widgetCallback.onClick(NaviWidgetClickWithActionData(actionData = actionData)) + } + } + companion object { private const val LINE_SPACING_FACTOR = 1.0f }