Files
super-app/components/widgets/BaseWidget.tsx
Mayank Singh 9527976c41 TP-64336 | Multi plan feature (#10813)
Co-authored-by: sangaraboinarishvik <rishvik.vardhan@navi.com>
2024-05-14 18:10:14 +00:00

69 lines
2.0 KiB
TypeScript

import React, { useEffect } from "react";
import { View } from "react-native";
import { GenericActionPayload } from "../../App/common/actions/GenericAction";
import { CtaData } from "../../App/common/interface";
import { Widget } from "../../App/common/interface/widgets/Widget";
import WidgetActionHandler from "../../App/common/widgets/widget-actions/WidgetActionHandler";
import { WidgetActionTypes } from "../../App/common/widgets/widget-actions/WidgetActionTypes";
import { GetWidgetView } from "../../App/common/widgets/widgetResolver";
import { ScreenState } from "../../App/common/screen/BaseScreen";
const BaseWidget = ({
widget,
handleScreenActions,
screenState,
handleClick,
widgetIndex,
}: {
widget: Widget;
handleScreenActions: (actionPayload?: GenericActionPayload) => void;
screenState?: ScreenState | null;
handleClick?: (ctaData: CtaData) => void;
widgetIndex: number;
}) => {
function handleWidgetActions(
value: any | undefined | null,
actionPayloadList: GenericActionPayload | undefined
) {
let payload = actionPayloadList;
let needPayloadCompression = false;
actionPayloadList?.metaData?.forEach((actionPayload) => {
if (actionPayload?.actionType === WidgetActionTypes.UPDATE_WIDGET_DATA) {
needPayloadCompression = true;
return;
}
});
if (!!value && needPayloadCompression) {
payload = WidgetActionHandler.getTargetWidgetActionPayload(
value,
actionPayloadList
);
}
handleScreenActions(payload);
}
widget = {
...widget,
widgetVisibility:
widget.widgetVisibility !== undefined ? widget.widgetVisibility : true,
};
useEffect(() => {
if (widget.widgetVisibility)
handleWidgetActions(null, widget?.widgetRenderActions)
}, [])
return widget.widgetVisibility ? (
<View style={widget.widgetStyle}>
{GetWidgetView.getWidget(
widget,
handleWidgetActions,
widgetIndex,
handleClick,
screenState
)}
</View>
) : (
<></>
);
};
export default BaseWidget;