Files
shoptime/com.twin.app.shoptime/src/views/IntroPanel/IntroPanel.jsx
2024-01-24 13:29:59 +09:00

144 lines
4.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useState, useEffect } from "react";
import { useDispatch } from "react-redux";
import * as Config from "../../utils/Config";
import TButton, { TYPES, SIZES } from "../../components/TButton/TButton";
import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator";
import Spotlight from "@enact/spotlight";
import TPanel from "../../components/TPanel/TPanel";
import { getHomeTerms } from "../../api/homeApi";
import TPopUp from "../../components/TPopUp/TPopUp";
import css from "./IntroPanel.module.less";
import classNames from "classnames";
import { $L } from "../../utils/helperMethods";
import { addPanels, popPanel } from "../../features/panels/panelsSlice";
const Container = SpotlightContainerDecorator(
{ enterTo: "last-focused" },
"div"
);
export default function IntroPanel({ children, ...rest }) {
const dispatch = useDispatch();
const [showExitButton, setShowExitButton] = useState(false);
const [termsPopUpOpen, setTermsPopUpOpen] = useState(false);
const [currentTermsData, setCurrentTermsData] = useState(null);
const [currentTermsTitle, setCurrentTermsTitle] = useState(null);
const handleTermsClick = async (trmsTpCdList) => {
try {
const termsData = await getHomeTerms({ trmsTpCdList });
setCurrentTermsTitle(
trmsTpCdList === "MST00401" ? "Privacy Policy" : "Terms & Conditions"
);
setCurrentTermsData(termsData.data.terms[0]);
setTermsPopUpOpen(true);
} catch (error) {
console.error("Error Fetching terms: ", error);
}
};
const handleAgree = () => {
dispatch(popPanel(Config.panel_names.INTRO_PANEL));
};
const handleDisagree = () => {
setShowExitButton(true);
};
const confirmExit = () => {};
const cancelExit = () => {
setShowExitButton(false);
};
useEffect(() => {
Spotlight.focus("introTermsAgree");
}, []);
const description =
$L(`Check out more LIVE SHOWS and enjoy Shopping via your TV \n at Shop Times special prices by agreeing to the LG TV
Shopping Terms and Conditions`);
return (
<>
<TPanel className={css.panel}>
<Container {...rest} className={css.introLayout}>
<div className={css.title}>
{`Welcome to `}
<span className={css.txtPoint}>
Sh<span className={css.pointColor}>o</span>p Time !
</span>
</div>
<div className={css.description}>{description}</div>
<div className={css.termsItemsLayer}>
<TButton
onClick={() => handleTermsClick("MST00402")}
type={TYPES.terms}
>
{$L("Terms & Conditions")}
</TButton>
<TButton
onClick={() => handleTermsClick("MST00401")}
type={TYPES.terms}
>
{$L("Privacy Policy")}
</TButton>
</div>
<div className={css.bottomBtnLayer}>
<TButton
onClick={handleAgree}
spotlightId="introTermsAgree"
type={TYPES.agree}
>
{$L("Agree")}
</TButton>
<TButton onClick={handleDisagree} type={TYPES.agree}>
{$L("Do Not Agree")}
</TButton>
</div>
</Container>
</TPanel>
{/* TERMS */}
<TPopUp
kind="introTermsPopup"
open={termsPopUpOpen}
onClose={() => setTermsPopUpOpen(false)}
hasButton
button1Text="OK"
>
{currentTermsData && (
<div className={css.introTermsConts}>
<div className={css.termsTitle}>{currentTermsTitle}</div>
<div
className={css.termsDesc}
dangerouslySetInnerHTML={{
__html: currentTermsData && currentTermsData.trmsCntt,
}}
/>
</div>
)}
</TPopUp>
{/* DO NOT AGREE */}
<TPopUp
kind="textPopup"
open={showExitButton}
onExit={confirmExit}
onClose={cancelExit}
hasButton
button1Text="Exit"
button2Text="Cancel"
hasText
title="Exit Shop Time"
text="Are you sure you want to exit Shop Time?"
></TPopUp>
</>
);
}