Files
super-app/App/common/modals/modalViewResolver.tsx
2024-06-11 17:54:34 +00:00

113 lines
3.8 KiB
TypeScript

import React from "react";
import { View, ViewStyle } from "react-native";
import TitleWithFeedbackPillBottomSheet from "../../../components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet";
import PremiumDetailsBottomSheet from "../../../components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet";
import TitleWithStepsBottomSheet from "../../../components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet";
import {
MEMBER_DETAILS_BOTTOM_SHEET,
POLICY_AMOUNT_BOTTOM_SHEET,
PREMIUM_DETAILS_BOTTOM_SHEET,
TITLE_SUBTITLE_WITH_DROPDOWN_BOTTOM_SHEET,
TITLE_WITH_FEEDBACK_PILL_BOTTOM_SHEET,
TITLE_WITH_LEFT_RIGHT_BUTTONS_BOTTOM_SHEET,
TITLE_WITH_STEPS_BOTTOM_SHEET,
} from "../constants/ModalNameConstants";
import { CtaData } from "../interface";
import { ModalView } from "../interface/modals/ModalView";
import { GenericWidgetData } from "../interface/widgets/Widget";
import TitleSubtitleWithDropdownBottomSheet from "../../../components/bottomsheet/title-subtitle-with-dropdown-bottom-sheet/TitleSubtitleWithDropdownBottomSheet";
import { MemberDetailBottomSheet } from "../../../components/bottomsheet/member-details-bottom-sheet/MemberDetailsBottomSheet";
import { PolicyAmountBottomSheet } from "../../../components/bottomsheet/policy-amount-bottom-sheet/PolicyAmountBottomSheet";
import { GenericActionPayload } from "../actions/GenericAction";
import TitleWithLeftRightButtonsBottomSheet from "../../../components/bottomsheet/title-with-left-right-buttons-bottom-sheet/TitleWithLeftRightButtonsBottomSheet";
export const GetModalView = {
getModal: (
modal: ModalView,
handleModalClick: (cta: CtaData) => void,
handleActions: (
value?: any | undefined | null,
actionPayload?: GenericActionPayload,
) => void,
): JSX.Element => {
const { modalName, modalData, modalStyle } = modal;
return resolveModalView(
modalName,
modalData,
modalStyle,
handleModalClick,
handleActions,
);
},
};
function resolveModalView(
modalName: string,
modalData: GenericWidgetData,
modalStyle: ViewStyle | undefined,
handleModalClick: (cta: CtaData) => void,
handleActions: (
value?: any | undefined | null,
actionPayload?: GenericActionPayload,
) => void,
) {
switch (modalName) {
case PREMIUM_DETAILS_BOTTOM_SHEET:
return (
<PremiumDetailsBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
/>
);
case TITLE_WITH_FEEDBACK_PILL_BOTTOM_SHEET:
return (
<TitleWithFeedbackPillBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
/>
);
case TITLE_WITH_STEPS_BOTTOM_SHEET:
return (
<TitleWithStepsBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
/>
);
case TITLE_SUBTITLE_WITH_DROPDOWN_BOTTOM_SHEET:
return (
<TitleSubtitleWithDropdownBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
/>
);
case MEMBER_DETAILS_BOTTOM_SHEET:
return (
<MemberDetailBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
handleActions={handleActions}
/>
);
case POLICY_AMOUNT_BOTTOM_SHEET:
return (
<PolicyAmountBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
handleActions={handleActions}
/>
);
case TITLE_WITH_LEFT_RIGHT_BUTTONS_BOTTOM_SHEET:
return (
<TitleWithLeftRightButtonsBottomSheet
bottomSheetData={modalData}
handleModalClick={handleModalClick}
handleActions={handleActions}
/>
);
default:
return <View />;
}
}