286 lines
9.5 KiB
JavaScript
286 lines
9.5 KiB
JavaScript
import { useDispatch } from "react-redux";
|
|
import { updateHomeInfo } from "../actions/homeActions";
|
|
import { pushPanel } from "../actions/panelActions";
|
|
import {
|
|
LOG_CONTEXT_NAME,
|
|
LOG_MENU,
|
|
LOG_MESSAGE_ID,
|
|
panel_names,
|
|
} from "../utils/Config";
|
|
import { SpotlightIds } from "../utils/SpotlightIds";
|
|
import { sendLogTotalRecommend } from "../actions/logActions";
|
|
|
|
//V2_진입경로코드_진입경로명_MT_노출순번
|
|
export const handleDeepLink = (contentTarget) => (dispatch, getState) => {
|
|
console.log("[handleDeepLink] ~ contentTarget: ", contentTarget);
|
|
let linkTpCd; // 진입경로코드
|
|
let linkTpNm; // 진입경로명
|
|
let type; // 링크 타입
|
|
let patnrId; // 파트너아이디
|
|
let prdtId; // 상품아이디
|
|
let curationId; // 큐레이션아이디
|
|
let showId; // 방송아이디
|
|
let chanId; // 채널아이디
|
|
let expsOrd; // 노출순번
|
|
let grNumber; // 그룹번호
|
|
let evntId; // 이벤트아이디
|
|
let lgCatCd; // LG카테고리Code
|
|
let lgCatNm; // 서브카테고리명
|
|
let tabType; // 카테고리 탭명
|
|
|
|
if (contentTarget === null || contentTarget === undefined) {
|
|
linkTpCd = "1000";
|
|
linkTpNm = LOG_MENU.APP;
|
|
} else {
|
|
const tokens = contentTarget.split("_");
|
|
if (tokens[0] === "V2" || tokens[0] === "V3") {
|
|
linkTpCd = tokens[1];
|
|
linkTpNm = tokens[2];
|
|
type = tokens[3];
|
|
|
|
let panelName = "";
|
|
let deeplinkPanel = "";
|
|
let panelInfo = {};
|
|
|
|
if (tokens[0] === "V2") {
|
|
panelName = panel_names.HOME_PANEL;
|
|
return;
|
|
}
|
|
|
|
if (parseInt(linkTpCd) < 2000 || parseInt(linkTpCd) > 8999) {
|
|
linkTpCd = "9999";
|
|
linkTpNm = LOG_MENU.UNKNOWN;
|
|
}
|
|
|
|
switch (type) {
|
|
case "MT":
|
|
// "MT": Main TOP
|
|
// V3_진입경로코드_진입경로명_MT_노출순번
|
|
panelName = panel_names.HOME_PANEL;
|
|
deeplinkPanel = "Main TOP";
|
|
break;
|
|
|
|
case "PD":
|
|
// "PD": Product Detail
|
|
// V3_진입경로코드_진입경로명_PD_파트너아이디_상품아이디_노출순번_큐레이션아이디
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
prdtId = tokens[5]; // 상품아이디
|
|
expsOrd = tokens[6]; // 노출순번
|
|
curationId = tokens[7]; // 큐레이션아이디
|
|
panelName = panel_names.DETAIL_PANEL;
|
|
deeplinkPanel = "Product Detaoil";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
prdtId: prdtId,
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "LS":
|
|
// "LS": Live Show
|
|
// V3_진입경로코드_진입경로명_LS_파트너아이디_채널아이디_노출순번_큐레이션아이디
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
chanId = tokens[5]; // 채널아이디
|
|
expsOrd = tokens[6]; // 노출순번
|
|
curationId = tokens[7]; // 큐레이션아이디
|
|
panelName = panel_names.PLAYER_PANEL;
|
|
deeplinkPanel = "Live Show";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
chanId: chanId,
|
|
shptmBanrTpNm: "LIVE",
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "VS":
|
|
// "VS": VOD Show
|
|
// V3_진입경로코드_진입경로명_VS_파트너아이디_방송아이디_노출순번_큐레이션아이디
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
showId = tokens[5]; // 방송아이디
|
|
expsOrd = tokens[6]; // 노출순번
|
|
curationId = tokens[7]; // 큐레이션아이디
|
|
panelName = panel_names.PLAYER_PANEL;
|
|
deeplinkPanel = "VOD Show";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
showId: showId,
|
|
shptmBanrTpNm: "VOD",
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "TD":
|
|
// "TD": Theme Detail
|
|
// V3_진입경로코드_진입경로명_TD_파트너아이디_큐레이션아이디_상품아이디_노출순번_그룹번호
|
|
// 상품아이디 (M): 테마상세 진입시 상품을 포커싱하기 위함
|
|
// 노출순번 (O) : 상품아이디+그룹번호가 설정된 경우 필수 (없을시 "0" 설정)
|
|
// 그룹번호 (O) : TCHH 유형만 적용
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
curationId = tokens[5]; // 큐레이션아이디\
|
|
prdtId = tokens[6]; // 상품아이디
|
|
expsOrd = tokens[7]; // 노출순번
|
|
grNumber = tokens[8]; // 그룹번호
|
|
panelName = panel_names.DETAIL_PANEL;
|
|
deeplinkPanel = "Theme Detail";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
curationId: curationId,
|
|
themePrdtId: prdtId, // 포커스 아이디
|
|
prdtId: prdtId, // 데이터 조회
|
|
grNumber: grNumber,
|
|
type: "theme",
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "HD":
|
|
// "HD": Hotel Detail
|
|
// V3_진입경로코드_진입경로명_HD_파트너아이디_큐레이션아이디_노출순번
|
|
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
curationId = tokens[5]; // 큐레이션아이디
|
|
expsOrd = tokens[6]; // 노출순번
|
|
panelName = panel_names.DETAIL_PANEL;
|
|
deeplinkPanel = "Hotel Detail";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
curationId: curationId,
|
|
type: "hotel",
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "HP":
|
|
// "HP": Hot Picks
|
|
// V3_진입경로코드_진입경로명_HP_파트너아이디_큐레이션아이디_노출순번
|
|
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
curationId = tokens[5]; // 큐레이션아이디
|
|
expsOrd = tokens[6]; // 노출순번
|
|
panelName = panel_names.HOT_PICKS_PANEL;
|
|
deeplinkPanel = "Hot Picks";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
curationId: curationId,
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "WE":
|
|
// "WE": Welcome Event
|
|
// V3_진입경로코드_진입경로명_WE_이벤트아이디
|
|
evntId = tokens[4]; // 이벤트아이디
|
|
panelName = panel_names.WELCOME_EVENT_PANEL;
|
|
deeplinkPanel = "Welcome Event";
|
|
panelInfo = {
|
|
evntId: evntId,
|
|
};
|
|
break;
|
|
|
|
case "OS":
|
|
// "OS": On Sale
|
|
// V3_진입경로코드_진입경로명_OS_LG카테고리Code_서브카테고리명
|
|
lgCatCd = tokens[4]; // LG카테고리Code
|
|
lgCatNm = tokens[5]; // 서브카테고리명
|
|
panelName = panel_names.ON_SALE_PANEL;
|
|
deeplinkPanel = "On Sale";
|
|
panelInfo = {
|
|
lgCatCd: lgCatCd,
|
|
lgCatNm: lgCatNm,
|
|
};
|
|
break;
|
|
|
|
case "BS":
|
|
// "BS": Best Sellers
|
|
// V3_진입경로코드_진입경로명_BS
|
|
panelName = panel_names.TRENDING_NOW_PANEL;
|
|
deeplinkPanel = "Best Sellers";
|
|
panelInfo = {
|
|
pageName: "BS",
|
|
focusedContainerId: SpotlightIds.TRENDING_NOW_BEST_SELLER,
|
|
};
|
|
|
|
break;
|
|
|
|
case "PS":
|
|
// "PS": Popular Shows
|
|
// V3_진입경로코드_진입경로명_PS_노출순번
|
|
panelName = panel_names.TRENDING_NOW_PANEL;
|
|
deeplinkPanel = "Popular Shows";
|
|
panelInfo = {
|
|
pageName: "PS",
|
|
focusedContainerId: SpotlightIds.TRENDING_NOW_POPULAR_SHOW,
|
|
};
|
|
break;
|
|
|
|
case "SC":
|
|
// "SC": Sub Category
|
|
// V3_진입경로코드_진입경로명_SC_LG카테고리Code_서브카테고리명_컨텐츠타입
|
|
// * 컨텐츠 타입 : Show / Item
|
|
lgCatCd = tokens[4]; // LG카테고리Code
|
|
lgCatNm = tokens[5]; // 서브카테고리명
|
|
tabType = tokens[6].toLowerCase(); // 컨텐츠타입
|
|
panelName = panel_names.CATEGORY_PANEL;
|
|
deeplinkPanel = "Sub Category";
|
|
panelInfo = {
|
|
lgCatCd: lgCatCd,
|
|
lgCatNm: lgCatNm,
|
|
tab: tabType === "cat00102" ? 0 : 1,
|
|
};
|
|
break;
|
|
|
|
case "FB":
|
|
// "FB": Featured Brands
|
|
// V3_진입경로코드_진입경로명_FB_파트너아이디_노출순번
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
panelName = panel_names.FEATURED_BRANDS_PANEL;
|
|
deeplinkPanel = "Featured Brands";
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
};
|
|
break;
|
|
|
|
case "TM":
|
|
curationId = tokens[4]; // 큐레이션 아이디
|
|
panelName = panel_names.THEME_CURATION_PANEL;
|
|
deeplinkPanel = "THEME MENU";
|
|
panelInfo = {
|
|
curationId: curationId,
|
|
};
|
|
break;
|
|
|
|
// case "SR":
|
|
// patnrId = tokens[4]; // 파트너 아이디
|
|
// panelName = panel_names.IMAGE_PANEL;
|
|
// panelInfo = {
|
|
// patnrId: patnrId,
|
|
// };
|
|
// break;
|
|
}
|
|
|
|
dispatch(
|
|
sendLogTotalRecommend({
|
|
contextName: LOG_CONTEXT_NAME.ENTRY,
|
|
messageId: LOG_MESSAGE_ID.ENTRY_INFO,
|
|
deeplink: deeplinkPanel,
|
|
curationId: curationId ? curationId : showId,
|
|
productId: prdtId,
|
|
})
|
|
);
|
|
|
|
if (panelName) {
|
|
const action =
|
|
panelName === panel_names.HOME_PANEL ? updateHomeInfo : pushPanel;
|
|
|
|
dispatch(
|
|
action({
|
|
name: panelName,
|
|
panelInfo: { ...panelInfo, linkTpCd },
|
|
})
|
|
);
|
|
}
|
|
}
|
|
}
|
|
};
|