Files
shoptime/com.twin.app.shoptime/src/views/MainView/MainView.jsx
junghoon86.park 1ae19abbea [JustForYou] 저스트 포유 테스트
1. Config 파일에 저스트포유테스트 추가.
	2. THeaderCustom부분에 kind 추가하여 없을경우 로고 나오지 않도록 처리.
	3. 저스트 포유배너에서 링크 테스트로 갈수있도록 변경.
	4. 테스트 파일 추가. Jsx,less파일

Etc) 서브카테고리에 들어있는 console 제거.
2025-09-16 13:33:29 +09:00

871 lines
26 KiB
JavaScript

import React, {
use,
useCallback,
useEffect,
useMemo,
useRef,
useState,
} from 'react';
import classNames from 'classnames';
import { indexOf } from 'ilib/lib/JSUtils';
import {
useDispatch,
useSelector,
} from 'react-redux';
import platform from '@enact/core/platform';
import Spotlight from '@enact/spotlight';
import defaultWatchItem
from '../../../assets/images/img-alert-banner-st@3x.png';
// 테스트용 - TODO: 메인 홈 화면에 나와야 하는 이미지들 추가 후 preloadImages에 추가
import testImage from '../../../assets/images/img-banner-myinfo-login@3x.png';
import defaultImageItem
from '../../../assets/images/img-thumb-empty-product@3x.png';
import LoadingPreloadImage
from '../../../assets/images/intro/splash_02_stop.webp';
import LoadingAnimation from '../../../assets/images/intro/splash_03_end.webp';
import LoadingCompleteImage
from '../../../assets/images/intro/splash_04_end.webp';
import LoadingShopOnTvImage from '../../../assets/images/intro/splash_end.jpg';
import {
alertToast,
changeAppStatus,
changeLocalSettings,
clearErrorMessage,
setExitApp,
setHidePopup,
setShowPopup,
} from '../../actions/commonActions';
import {
getHomeMenu,
getHomeTerms,
updateHomeInfo,
} from '../../actions/homeActions';
import {
sendLogAlarmClick,
sendLogAlarmPop,
sendLogLive,
sendLogVOD,
} from '../../actions/logActions';
import {
getMyUpcomingAlertShow,
setMyTermsWithdraw,
} from '../../actions/myPageActions';
import {
popPanel,
pushPanel,
resetPanels,
updatePanel,
} from '../../actions/panelActions';
import EndOfServicePopUp
from '../../components/EndOfServicePopUp/EndOfServicePopUp';
import Loader from '../../components/Loader/Loader';
import { convertUtcToLocal } from '../../components/MediaPlayer/util';
import OptionalTermsConfirm
from '../../components/Optional/OptionalTermsConfirm';
import OptionalTermsConfirmBottom
from '../../components/Optional/OptionalTermsConfirmBottom';
import PreloadImage from '../../components/PreloadImage/PreloadImage';
import SystemNotification
from '../../components/SystemNotification/SystemNotification';
import TabLayout from '../../components/TabLayout/TabLayout';
import TButton from '../../components/TButton/TButton';
import TNewPopUp from '../../components/TPopUp/TNewPopUp';
import TPopUp from '../../components/TPopUp/TPopUp';
import usePrevious from '../../hooks/usePrevious';
import * as Config from '../../utils/Config';
import { panel_names } from '../../utils/Config';
import {
$L,
getErrorMessage,
getSpottableDescendants,
} from '../../utils/helperMethods';
import { SpotlightIds } from '../../utils/SpotlightIds';
import CartPanel from '../CartPanel/CartPanel';
import CategoryPanel from '../CategoryPanel/CategoryPanel';
import CheckOutPanel from '../CheckOutPanel/CheckOutPanel';
import ConfirmPanel from '../ConfirmPanel/ConfirmPanel';
import DebugPanel from '../DebugPanel/DebugPanel';
import DetailPanel from '../DetailPanel/DetailPanel';
import ErrorPanel from '../ErrorPanel/ErrorPanel';
import FeaturedBrandsPanel from '../FeaturedBrandsPanel/FeaturedBrandsPanel';
import HomePanel from '../HomePanel/HomePanel';
import HotPicksPanel from '../HotPicksPanel/HotPicksPanel';
import ImagePanel from '../ImagePanel/ImagePanel';
import IntroPanel from '../IntroPanel/IntroPanel.new';
import JustForYouPanel from '../JustForYouPanel/JustForYouPanel';
import JustForYouTestPanel from '../JustForYouTestPanel/JustForYouTestPanel';
import LoadingPanel from '../LoadingPanel/LoadingPanel';
import MyPagePanel from '../MyPagePanel/MyPagePanel';
import OnSalePanel from '../OnSalePanel/OnSalePanel';
import PlayerPanel from '../PlayerPanel/PlayerPanel';
import PlayerPanelNew from '../PlayerPanel/PlayerPanel.new';
import SearchPanel from '../SearchPanel/SearchPanel';
import ThemeCurationPanel from '../ThemeCurationPanel/ThemeCurationPanel';
import TrendingNowPanel from '../TrendingNowPanel/TrendingNowPanel';
import UserReviewPanel from '../UserReview/UserReviewPanel';
import VideoTestPanel from '../VideoTestPanel/VideoTestPanel';
import WelcomeEventPanel from '../WelcomeEventPanel/WelcomeEventPanel';
import css from './MainView.module.less';
const preloadImages = [
LoadingPreloadImage,
LoadingAnimation,
LoadingCompleteImage,
LoadingShopOnTvImage,
];
const panelMap = {
[Config.panel_names.INTRO_PANEL]: IntroPanel,
[Config.panel_names.HOME_PANEL]: HomePanel,
[Config.panel_names.MY_PAGE_PANEL]: MyPagePanel,
[Config.panel_names.CATEGORY_PANEL]: CategoryPanel,
[Config.panel_names.SEARCH_PANEL]: SearchPanel,
[Config.panel_names.ON_SALE_PANEL]: OnSalePanel,
[Config.panel_names.TRENDING_NOW_PANEL]: TrendingNowPanel,
[Config.panel_names.HOT_PICKS_PANEL]: HotPicksPanel,
[Config.panel_names.FEATURED_BRANDS_PANEL]: FeaturedBrandsPanel,
[Config.panel_names.CART_PANEL]: CartPanel,
[Config.panel_names.ERROR_PANEL]: ErrorPanel,
[Config.panel_names.DEBUG_PANEL]: DebugPanel,
[Config.panel_names.VIDEO_TEST_PANEL]: VideoTestPanel,
[Config.panel_names.DETAIL_PANEL]: DetailPanel,
[Config.panel_names.PLAYER_PANEL]: PlayerPanel,
[Config.panel_names.PLAYER_PANEL_NEW]: PlayerPanelNew,
[Config.panel_names.CHECKOUT_PANEL]: CheckOutPanel,
[Config.panel_names.WELCOME_EVENT_PANEL]: WelcomeEventPanel,
[Config.panel_names.THEME_CURATION_PANEL]: ThemeCurationPanel,
[Config.panel_names.IMAGE_PANEL]: ImagePanel,
[Config.panel_names.CONFIRM_PANEL]: ConfirmPanel,
[Config.panel_names.USER_REVIEW_PANEL]: UserReviewPanel,
[Config.panel_names.JUST_FOR_YOU_PANEL]: JustForYouPanel,
[Config.panel_names.JUST_FOR_YOU_TEST_PANEL]: JustForYouTestPanel,
// [Config.panel_names.OPTIONAL_TERMS_PANEL]: TermsOfOptional,
};
const logTpNoLiveSet = new Set([
Config.LOG_TP_NO.LIVE.HOME,
Config.LOG_TP_NO.LIVE.FEATURED_BRANDS,
Config.LOG_TP_NO.LIVE.FULL,
Config.LOG_TP_NO.LIVE.ITEM_DETAIL,
]);
const STRING_CONF = {
YES: "YES",
NO: "NO",
EXIT: "EXIT",
THIS_IS_AN_UNSUPPORTED_COUNTRY: "This is an unsupported country.",
CHANGE_COUNTRY:
"If you have changed your LG service country setting, the usage information in Shop Time during your previous country setting will be deleted. Do you want to proceed?",
};
export default function MainView({ className, initService }) {
const dispatch = useDispatch();
const httpHeader = useSelector((state) => state.common.httpHeader);
const mainIndex = useSelector((state) => state.appData.mainIndex);
const panels = useSelector((state) => state.panels.panels);
const lastPanelAction = useSelector((state) => state.panels.lastPanelAction);
const loadingComplete = useSelector((state) => state.common?.loadingComplete);
const menuData = useSelector((state) => state.home.menuData?.data);
const {
popupVisible,
activePopup,
data: errorCode,
data: popupData,
} = useSelector((state) => state.common.popup);
const {
showLoadingPanel,
toast,
toastText,
isLoading,
webOSVersion,
deviceId,
} = useSelector((state) => state.common.appStatus);
const skipEndOfServicePopup = useSelector(
(state) => state.localSettings.skipEndOfServicePopup
);
const isInternetConnected = useSelector(
(state) => state.common.appStatus.isInternetConnected
);
const deviceCountryCode = httpHeader?.["X-Device-Country"] || "";
const isLogSentRef = useRef(false);
const watchRecord = useSelector((state) => state.localSettings?.watchRecord);
const watchRecordRef = usePrevious(watchRecord);
const [tabActivated, setTabActivated] = useState(false);
const [imagePreloaded, setImagePreloaded] = useState(false);
const [ariaHidden, setAriaHidden] = useState(false);
const [showEndOfServicePopup, setShowEndOfServicePopup] = useState(false);
const topPanel = panels[panels.length - 1];
useEffect(() => {
console.log("🔍 MainView 팝업 상태 변경:", {
popupVisible,
activePopup,
});
}, [popupVisible, activePopup]);
const isHomeOnTop = useMemo(() => {
return (
!mainIndex &&
(panels.length <= 0 || (panels.length === 1 && panels[0].panelInfo.modal))
);
}, [mainIndex, panels]);
const onPreImageLoadComplete = useCallback(() => {
console.log("MainView onPreImageLoadComplete");
dispatch(changeAppStatus({ showLoadingPanel: { show: false } }));
setImagePreloaded(true);
}, [dispatch]);
const currentTabLayoutPanelInfo = useMemo(() => {
return panels[panels.length - 1]?.panelInfo;
}, [panels]);
const renderTopPanel = useCallback(() => {
if (panels && panels.length > 0) {
let renderingPanels = [];
if (
panels[panels.length - 1]?.name === Config.panel_names.PLAYER_PANEL ||
panels[panels.length - 1]?.name ===
Config.panel_names.PLAYER_PANEL_NEW ||
panels[panels.length - 2]?.name === Config.panel_names.PLAYER_PANEL
) {
renderingPanels = panels.slice(-2);
} else {
renderingPanels = panels.slice(-1);
}
return (
<>
{(isHomeOnTop ||
(panels.length === 1 &&
(panels[0]?.name === Config.panel_names.PLAYER_PANEL ||
panels[0]?.name === Config.panel_names.PLAYER_PANEL_NEW))) && (
<HomePanel
key={Config.panel_names.HOME_PANEL}
isOnTop={isHomeOnTop}
/>
)}
{renderingPanels.map((panel, index) => {
const Component = panelMap[panel.name];
// render last two panels if there's videoplayer
let isPanelOnTop = false;
//preview video play case : two panels can be on top (normal + previewVideo)
{
/* if (
index === 0 &&
renderingPanels.length === 2 &&
renderingPanels[1].name === Config.panel_names.PLAYER_PANEL &&
renderingPanels[1].panelInfo.modal
) { */
}
if (
index === 0 &&
renderingPanels.length === 2 &&
(renderingPanels[1].name === Config.panel_names.PLAYER_PANEL ||
renderingPanels[1].name ===
Config.panel_names.PLAYER_PANEL_NEW) &&
renderingPanels[1].panelInfo.modal
) {
isPanelOnTop = true;
}
// normal case
if (index === renderingPanels.length - 1) {
isPanelOnTop = true;
}
return (
<Component
key={panel.name + panels.indexOf(panel)} //to maintain react virtual dom
panelInfo={panel.panelInfo}
spotlightId={panel.name}
isTabActivated={tabActivated}
isOnTop={isPanelOnTop}
/>
);
})}
</>
);
} else if (isHomeOnTop) {
return (
<HomePanel key={Config.panel_names.HOME_PANEL} isOnTop={isHomeOnTop} />
);
}
return null;
}, [panels, tabActivated, isHomeOnTop, errorCode]);
const onTabActivated = useCallback((activated) => {
setTabActivated(activated);
}, []);
const topPanelName = useMemo(() => {
if (panels && panels.length > 0) {
let targetName = panels[panels.length - 1].name;
if (
panels[panels.length - 1].name === Config.panel_names.PLAYER_PANEL &&
panels[panels.length - 1].panelInfo.modal
) {
targetName = panels[panels.length - 2]?.name;
}
return targetName;
}
return null;
}, [panels]);
function reload(response) {
if (response) {
if (response.retCode === 0 && typeof window === "object") {
window.location.reload();
} else {
console.error("unknown error", response.retCode);
}
}
}
const handlePopupClick = useCallback(() => {
// 602 지원하지 않는 국가
if (activePopup === Config.ACTIVE_POPUP.unSupportedCountryPopup) {
dispatch(setExitApp());
return;
}
// 603 국가 변경
if (activePopup === Config.ACTIVE_POPUP.changeCountyPopup) {
dispatch(
setMyTermsWithdraw(
{
mandatoryIncludeYn: "Y",
termsList: ["MST00401", "MST00402"],
},
reload
)
);
}
}, [dispatch, activePopup]);
const handlePopupClose = useCallback(() => {
dispatch(setExitApp());
}, [dispatch]);
const getMessageByPopupType = (type) => {
switch (type) {
case Config.ACTIVE_POPUP.unSupportedCountryPopup:
return $L(STRING_CONF.THIS_IS_AN_UNSUPPORTED_COUNTRY);
case Config.ACTIVE_POPUP.changeCountyPopup:
return $L(STRING_CONF.CHANGE_COUNTRY);
default:
return;
}
};
useEffect(() => {
if (panels && panels.length > 0) {
let panel = panels[panels.length - 1];
if (
panels[panels.length - 1].name === Config.panel_names.PLAYER_PANEL &&
panels[panels.length - 1].panelInfo.modal
) {
panel = panels[panels.length - 2];
}
if (panel?.name) {
setTimeout(() => {
// focus to panel if it's not preview video status changing case
if (
!lastPanelAction ||
(lastPanelAction.indexOf("preview") !== 0 &&
lastPanelAction !== "update")
) {
//do focus itself if has focusedContainerId
Spotlight.focus(panel?.name);
}
}, 0);
}
}
}, [panels]);
const cursorStateChange = useCallback(
(ev) => {
dispatch(
changeAppStatus({
cursorVisible: ev.visibility || ev.detail.visibility,
})
);
},
[dispatch]
);
useEffect(() => {
document.addEventListener("cursorStateChange", cursorStateChange, false);
if (platform.platformName !== "webos") {
//for debug
dispatch(changeAppStatus({ cursorVisible: !platform.touchscreen }));
} else {
dispatch(
changeAppStatus({
cursorVisible: window.cursorEvent && window.cursorEvent.visibility,
})
);
}
return () => {
document.removeEventListener("cursorStateChange", cursorStateChange);
};
}, []);
const [intervalActive, setIntervalActive] = useState(true);
const [alertItems, setAlertItems] = useState([]);
const popupTimerRef = useRef(null); // 타이머 ID를 저장할 상태 변수
const { upComingAlertShow } = useSelector(
(state) => state.myPage.upComingData
);
useEffect(() => {
if (
activePopup === Config.ACTIVE_POPUP.watchPopup &&
alertItems &&
alertItems.length > 0 &&
popupVisible
) {
const {
hstNm,
lgCatCd,
lgCatNm,
patncNm,
patnrId,
showId,
showNm,
strtDt: alarmDt,
} = alertItems[0];
dispatch(
sendLogAlarmPop({
alarmDt,
alarmType: "Upcoming",
cnt: "0",
hstNm,
lgCatCd,
lgCatNm,
patncNm,
patnrId: patnrId.toString(),
showId,
showNm,
})
);
}
}, [activePopup, alertItems, popupVisible]);
// 팝업 30초 후 종료
useEffect(() => {
if (popupVisible && activePopup === Config.ACTIVE_POPUP.watchPopup) {
const timerId = setTimeout(() => {
dispatch(setHidePopup());
setIntervalActive((prev) => !prev);
}, 30000);
// 타이머 ID를 상태 변수에 저장
popupTimerRef.current = timerId;
}
}, [popupVisible, activePopup]);
useEffect(() => {
return () => {
if (popupTimerRef.current) {
clearTimeout(popupTimerRef.current);
}
};
}, []);
// 알람 체크 - 50초 마다 시간 체크(분까지만 체크)
useEffect(() => {
const interval = setInterval(() => {
if (intervalActive) {
checkForAlerts();
}
}, 50000);
return () => clearInterval(interval);
}, [intervalActive, upComingAlertShow]);
// 알림 팝업
const checkForAlerts = () => {
if (
upComingAlertShow?.upcomAlamUseFlag === "Y" &&
upComingAlertShow.alertShows?.length > 0
) {
const alertList = upComingAlertShow.alertShows.filter((show) =>
isSameDateTime(show.strtDt)
);
if (alertList.length > 0) {
setAlertItems(alertList);
dispatch(setShowPopup(Config.ACTIVE_POPUP.watchPopup));
setIntervalActive((prev) => !prev);
}
}
};
// 날짜 같은지 확인 하는 함수
const isSameDateTime = (dateString) => {
const today = new Date();
const targetDate = convertUtcToLocal(dateString);
return (
today.getFullYear() === targetDate.getFullYear() &&
today.getMonth() === targetDate.getMonth() &&
today.getDate() === targetDate.getDate() &&
today.getHours() === targetDate.getHours() &&
today.getMinutes() === targetDate.getMinutes()
);
};
// 알림 확인 FEATURED_BRANDS_PANEL 이동
const handleClick = useCallback(() => {
const {
hstNm,
lgCatCd,
lgCatNm,
patncNm,
patnrId,
showId,
showNm,
strtDt: alarmDt,
} = alertItems[0];
dispatch(
sendLogAlarmClick({
alarmDt,
alarmType: "Upcoming",
clickFlag: "Ok",
cnt: "0",
hstNm,
keywordList: "",
lgCatCd,
lgCatNm,
logTpNo: Config.LOG_TP_NO.ALARM_CLICK.BROADCAST,
patncNm,
patnrId: patnrId.toString(),
showId,
showNm,
})
);
dispatch(resetPanels());
dispatch(
pushPanel({
name: panel_names.FEATURED_BRANDS_PANEL,
panelInfo: { from: "upcoming", patnrId: patnrId.toString() },
})
);
dispatch(setHidePopup());
setIntervalActive((prev) => !prev);
if (popupTimerRef.current) {
clearTimeout(popupTimerRef.current); // 버튼 클릭 시 타이머 제거
popupTimerRef.current = null;
}
}, [dispatch, alertItems]);
const onClickNetworkError = useCallback(() => {
if (initService) {
initService();
}
dispatch(setHidePopup());
}, [dispatch, initService]);
const onExitNetworkError = useCallback(() => {
dispatch(setExitApp());
}, [dispatch]);
const onWatchClose = useCallback(() => {
const {
hstNm,
lgCatCd,
lgCatNm,
patncNm,
patnrId,
showId,
showNm,
strtDt: alarmDt,
} = alertItems[0];
dispatch(
sendLogAlarmClick({
alarmDt,
alarmType: "Upcoming",
clickFlag: "No",
cnt: "0",
hstNm,
keywordList: "",
lgCatCd,
lgCatNm,
logTpNo: Config.LOG_TP_NO.ALARM_CLICK.BROADCAST,
patncNm,
patnrId: patnrId.toString(),
showId,
showNm,
})
);
setIntervalActive((prev) => !prev);
dispatch(setHidePopup());
}, [alertItems, dispatch]);
const sendLogIfNeeded = useCallback(() => {
if (
!watchRecordRef.current ||
Object.keys(watchRecordRef.current).length === 0
) {
return;
}
const { logTpNo } = watchRecordRef.current;
const sendLog = logTpNoLiveSet.has(logTpNo) ? sendLogLive : sendLogVOD;
const resetWatchRecord = () =>
dispatch(changeLocalSettings({ watchRecord: {} }));
dispatch(sendLog({ ...watchRecordRef.current }, resetWatchRecord));
}, [dispatch]);
useEffect(() => {
if (deviceId && httpHeader && !isLogSentRef.current) {
sendLogIfNeeded();
isLogSentRef.current = true;
}
}, [deviceId, httpHeader, sendLogIfNeeded]);
useEffect(() => {
if (loadingComplete && !menuData) {
dispatch(getHomeMenu());
}
}, [loadingComplete]);
useEffect(() => {
if (
activePopup === Config.ACTIVE_POPUP.changeCountyPopup ||
activePopup === Config.ACTIVE_POPUP.unSupportedCountryPopup
) {
const timeoutId = setTimeout(() => {
Spotlight.focus("tPopupBtn1");
}, 0);
return () => clearTimeout(timeoutId);
}
}, [activePopup, loadingComplete]);
useEffect(() => {
if (deviceCountryCode === "US") {
setAriaHidden(false);
} else {
setAriaHidden(true);
}
}, [deviceCountryCode]);
useEffect(() => {
if (webOSVersion && Number(webOSVersion) < 4 && !skipEndOfServicePopup) {
setShowEndOfServicePopup(true);
dispatch(setShowPopup(Config.ACTIVE_POPUP.endOfServicePopup));
}
}, [webOSVersion]);
const handleErrorPopupClose = useCallback(() => {
console.log(
"handleErrorPopupClose 호출됨! activePopup:",
activePopup,
"popupData:",
popupData
);
if (popupData?.shouldPopPanel) {
dispatch(popPanel());
}
dispatch(clearErrorMessage());
dispatch(setHidePopup());
if (topPanel?.name === panel_names.DETAIL_PANEL) {
setTimeout(() => {
Spotlight.focus(SpotlightIds.DETAIL_BUYNOW);
});
}
}, [dispatch, popupData, activePopup, topPanel?.name]);
// 딥링크 확인 테스트
const contentTarget = useSelector(
(state) => state.common.deepLinkInfo.contentTarget
);
return (
<div
className={classNames(css.mainViewWrap, className)}
aria-hidden={ariaHidden}
>
{!imagePreloaded && (
<PreloadImage
preloadImages={preloadImages}
onLoadComplete={onPreImageLoadComplete}
/>
)}
<LoadingPanel showLoadingPanel={showLoadingPanel} />
{errorCode !== 502 &&
errorCode !== 602 &&
errorCode !== 603 &&
loadingComplete && (
<div className={classNames(css.container)}>
<div className={classNames(css.mainlayout)}>{renderTopPanel()}</div>
<TabLayout
topPanelName={topPanelName}
onTabActivated={onTabActivated}
panelInfo={currentTabLayoutPanelInfo}
/>
</div>
)}
{isLoading && <Loader />}
{/* 시청예약 알림 팝업 */}
{activePopup === Config.ACTIVE_POPUP.watchPopup && (
<TPopUp
kind="watchPopup"
open={popupVisible}
onClose={onWatchClose}
onClick={handleClick}
hasText
hasButton
hasLogo
logo={alertItems[0]?.patncLogoPath}
hasThumbnail
thumbnail={
alertItems[0]?.thumbnailUrl == null ||
alertItems[0]?.thumbnailUrl == ""
? defaultWatchItem
: alertItems[0]?.thumbnailUrl
}
button1Text={$L("YES")}
button2Text={$L("NO")}
title={$L("Watch Now!")}
text={alertItems[0]?.showNm}
/>
)}
{activePopup === Config.ACTIVE_POPUP.errorPopup && (
<TPopUp
kind="errorPopup"
open={popupVisible}
onClose={handleErrorPopupClose}
className={css.errorPopup}
>
<div className={css.popupContainer}>
<p className={css.errMsg}>
{popupData &&
getErrorMessage(
popupData.errorCode,
popupData.errorMsg,
popupData.retDetailCode,
popupData.returnBindStrings
)}
</p>{" "}
<TButton className={css.popupBtn} onClick={handleErrorPopupClose}>
{$L("OK")}
</TButton>
</div>
</TPopUp>
)}
{activePopup === Config.ACTIVE_POPUP.networkErrorPopup && (
<TPopUp
kind="textPopup"
hasButton
hasText
button1Text={isInternetConnected ? "Retry" : ""}
button2Text={"Exit"}
onClick={onClickNetworkError}
onClose={onExitNetworkError}
open={popupVisible}
text={
"Failed to connect to SHOPTIME. Please check your device's network connection."
}
/>
)}
{(loadingComplete &&
activePopup === Config.ACTIVE_POPUP.unSupportedCountryPopup) ||
(loadingComplete &&
activePopup === Config.ACTIVE_POPUP.changeCountyPopup) ? (
<TPopUp
kind="textPopup"
hasButton
hasText
button1Text={
activePopup !== Config.ACTIVE_POPUP.unSupportedCountryPopup
? $L(STRING_CONF.YES)
: $L(STRING_CONF.EXIT)
}
button2Text={
activePopup == Config.ACTIVE_POPUP.changeCountyPopup &&
$L(STRING_CONF.NO)
}
onClick={handlePopupClick}
onClose={handlePopupClose}
open={popupVisible}
text={getMessageByPopupType(activePopup)}
title={$L("Exit Shop Time")}
/>
) : null}
<SystemNotification />
{loadingComplete &&
activePopup === Config.ACTIVE_POPUP.endOfServicePopup &&
!skipEndOfServicePopup && <EndOfServicePopUp />}
{/* Pop up */}
{activePopup === Config.ACTIVE_POPUP.toast && (
<TPopUp
kind="toast"
open={popupVisible}
onClose={handleErrorPopupClose}
hasText
hasButton
button1Text={toastText}
button2Text={$L("OK")}
/>
)}
{/* OptionalTermsConfirmPopup */}
{activePopup === Config.ACTIVE_POPUP.optionalTermsConfirm && (
<OptionalTermsConfirm open={popupVisible} />
)}
{activePopup === Config.ACTIVE_POPUP.optionalTermsConfirmBottom && (
<OptionalTermsConfirmBottom open={popupVisible} />
)}
{/* {activePopup === Config.ACTIVE_POPUP.optionalConfirm && (
<TNewPopUp
kind="optionalConfirm"
open={true}
text="Get recommendations, special offers, and ads tailored just for you."
button1Text="Agree"
button2Text="Not Now"
onClose={handleClose}
onClick={handleAgree}
/>
)} */}
{/* /딥링크 테스트 */}
<div
style={{
position: "fixed",
left: "0",
bottom: "0",
color: "#fff",
fontSize: "13px",
opacity: ".5",
zIndex: "999",
backgroundColor: "black",
padding: "10px",
}}
>
deepLinkInfo
<p>{contentTarget}</p>
</div>
</div>
);
}