329 lines
11 KiB
JavaScript
329 lines
11 KiB
JavaScript
import { pushPanel } from "../actions/panelActions";
|
|
import { LOG_MENU, LOG_TP_NO, panel_names } from "../utils/Config";
|
|
|
|
export const getMenuByLinkTpCd = (linkTpCd) => {
|
|
switch (linkTpCd) {
|
|
case "1000":
|
|
return LOG_MENU.APP;
|
|
case "2000":
|
|
return LOG_MENU.HOME_BANNER_1;
|
|
case "2001":
|
|
return LOG_MENU.HOME_BANNER_2;
|
|
case "3000":
|
|
return LOG_MENU.TVAD_BIG_BANNER;
|
|
case "3001":
|
|
return LOG_MENU.TVAD_HOME_LAUNCHER;
|
|
case "3002":
|
|
return LOG_MENU.TVAD_WEDGE;
|
|
case "3003":
|
|
return LOG_MENU.TVAD_COMPANION;
|
|
case "6001":
|
|
return LOG_MENU.LG_CHANNEL_QVC;
|
|
case "6002":
|
|
return LOG_MENU.LG_CHANNEL_HSN;
|
|
case "6004":
|
|
return LOG_MENU.LG_CHANNEL_ONTV4U;
|
|
case "7000":
|
|
return LOG_MENU.OVERLAY;
|
|
case "8000":
|
|
return LOG_MENU.TV_2DEPTH;
|
|
case "8001":
|
|
return LOG_MENU.TV_SEARCH;
|
|
case "8002":
|
|
return LOG_MENU.TV_SEARCH;
|
|
case "9999":
|
|
return LOG_MENU.UNKNOWN;
|
|
default:
|
|
return LOG_MENU.APP;
|
|
}
|
|
};
|
|
|
|
export const getMenuByTargetContent = (contentTarget) => {
|
|
if (!contentTarget) {
|
|
return LOG_MENU.HOME_TOP;
|
|
}
|
|
|
|
const tokken = contentTarget.split("_");
|
|
const type = tokken[3];
|
|
|
|
if (type === "MT") {
|
|
return LOG_MENU.HOME_TOP;
|
|
} else if (type === "PD") {
|
|
const patnrId = tokken[4];
|
|
return patnrId === "11"
|
|
? LOG_MENU.DETAIL_PAGE_BILLING_PRODUCT_DETAIL
|
|
: LOG_MENU.DETAIL_PAGE_PRODUCT_DETAIL;
|
|
} else if (type === "LS" || type === "VS") {
|
|
return LOG_MENU.FULL_SHOP_NOW;
|
|
} else if (type === "TD") {
|
|
return LOG_MENU.DETAIL_PAGE_THEME_DETAIL;
|
|
} else if (type === "HD") {
|
|
return LOG_MENU.DETAIL_PAGE_TRAVEL_THEME_DETAIL;
|
|
} else if (type === "HP") {
|
|
return LOG_MENU.HOT_PICKS;
|
|
} else if (type === "WE") {
|
|
return LOG_MENU.WELCOME_EVENT;
|
|
} else if (type === "OS") {
|
|
return LOG_MENU.ON_SALE;
|
|
} else if (type === "BS") {
|
|
return LOG_MENU.TRENDING_NOW_BEST_SELLER;
|
|
} else if (type === "PS") {
|
|
return LOG_MENU.TRENDING_NOW_POPULAR_SHOWS;
|
|
} else if (type === "SC") {
|
|
const tabType = tokken[6];
|
|
return tabType.toLowerCase() === "show"
|
|
? LOG_MENU.CATEGORY_SHOWS
|
|
: LOG_MENU.CATEGORY_ITEM;
|
|
} else if (type === "PB") {
|
|
return LOG_MENU.FEATURED_BRANDS_QUICK_MENU;
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
//V2_진입경로코드_진입경로명_MT_노출순번
|
|
export const handleDeepLink =
|
|
(contentTarget, callback) => (dispatch, getState) => {
|
|
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";
|
|
} else {
|
|
const tokens = contentTarget.split("_");
|
|
|
|
if (tokens[0] === "V2" || tokens[0] === "V3") {
|
|
linkTpCd = tokens[1];
|
|
linkTpNm = tokens[2];
|
|
type = tokens[3];
|
|
|
|
let panelName = "";
|
|
let panelInfo = {};
|
|
|
|
switch (type) {
|
|
case "MT":
|
|
// "MT": Main TOP
|
|
// V3_진입경로코드_진입경로명_MT_노출순번
|
|
panelName = panel_names.HOME_PANEL;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
curationId: curationId,
|
|
// expsOrd: expsOrd,
|
|
};
|
|
break;
|
|
|
|
case "WE":
|
|
// "WE": Welcome Event
|
|
// V3_진입경로코드_진입경로명_WE_이벤트아이디
|
|
evntId = tokens[4]; // 이벤트아이디
|
|
panelName = panel_names.WELCOME_EVENT_PANEL;
|
|
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;
|
|
panelInfo = {
|
|
lgCatCd: lgCatCd,
|
|
lgCatNm: lgCatNm,
|
|
};
|
|
break;
|
|
|
|
case "BS":
|
|
// "BS": Best Sellers
|
|
// V3_진입경로코드_진입경로명_BS
|
|
panelName = panel_names.TRENDING_NOW_PANEL;
|
|
panelInfo = {
|
|
pageName: "BS",
|
|
};
|
|
break;
|
|
|
|
case "PS":
|
|
// "PS": Popular Shows
|
|
// V3_진입경로코드_진입경로명_PS_노출순번
|
|
panelName = panel_names.TRENDING_NOW_PANEL;
|
|
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;
|
|
panelInfo = {
|
|
lgCatCd: lgCatCd,
|
|
lgCatNm: lgCatNm,
|
|
tab: tabType === "show" ? 0 : 1,
|
|
};
|
|
break;
|
|
|
|
case "FB":
|
|
// "FB": Featured Brands
|
|
// V3_진입경로코드_진입경로명_FB_파트너아이디_노출순번
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
panelName = panel_names.FEATURED_BRANDS_PANEL;
|
|
panelInfo = {
|
|
patnrId: patnrId,
|
|
};
|
|
break;
|
|
|
|
case "TC":
|
|
patnrId = tokens[4]; // 파트너아이디
|
|
panelName = panel_names.THEME_CURATION_PANEL;
|
|
panelInfo = {
|
|
lnkCurationId: curationId,
|
|
};
|
|
break;
|
|
}
|
|
|
|
if (panelName) {
|
|
console.log("handleDeepLink - panelName", panelName, panelInfo);
|
|
|
|
dispatch(
|
|
pushPanel({
|
|
name: panelName,
|
|
panelInfo: { ...panelInfo, linkTpCd },
|
|
})
|
|
);
|
|
}
|
|
} else {
|
|
console.log("handleDeepLink - no target");
|
|
}
|
|
}
|
|
|
|
if (callback) {
|
|
const params = {
|
|
curationId: curationId ?? "",
|
|
curationNm: "",
|
|
entryMenu: getMenuByLinkTpCd(linkTpCd),
|
|
expsOrd: expsOrd ?? "0",
|
|
lgCatCd: lgCatCd ?? "",
|
|
lgCatNm: lgCatNm ?? "",
|
|
linkTpCd: linkTpCd,
|
|
logTpNo: LOG_TP_NO.SECOND_LAYER,
|
|
nowMenu: getMenuByTargetContent(contentTarget),
|
|
patncNm: "",
|
|
patnrId: patnrId ?? "",
|
|
prdtId: prdtId ?? "",
|
|
prdtNm: "",
|
|
showId: showId ?? "",
|
|
showNm: "",
|
|
};
|
|
|
|
callback(params);
|
|
}
|
|
};
|