Files
shoptime/com.twin.app.shoptime/src/App/deepLinkHandler.js
younghoon100.park 118fe825b9 [Log] IF-LGSP-LOG-004(2ndLayer), modify
Detail Note:

1. add action type `SET_SECOND_LAYER_INFO` (actionTypes.js)
2. add action `setSecondLayerInfo` (commonActions.js)
3. modify `sendLogSecondLayer` and `sendLogGNB` functions (logActions.js)
4. modify `initService` function and `setDeepLink` in useEffect (App.js)
5. remove unnecessary function `getMenuByTargetContent` (deepLinkHandler.js)
6. add state and case for `secondLayerInfo` (commonReducer.js)
7. edit selected state variable to `isDeepLink` (HomePanel.jsx)
2024-07-28 22:26:59 +09:00

290 lines
9.2 KiB
JavaScript

import { setSecondLayerInfo } from "../actions/commonActions";
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;
}
};
//V2_진입경로코드_진입경로명_MT_노출순번
export const handleDeepLink = (contentTarget) => (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 "TM":
curationId = tokens[4]; // 큐레이션 아이디
panelName = panel_names.THEME_CURATION_PANEL;
panelInfo = {
lnkCurationId: curationId,
};
break;
// case "SR":
// patnrId = tokens[4]; // 파트너 아이디
// panelName = panel_names.IMAGE_PANEL;
// panelInfo = {
// patnrId: patnrId,
// };
// break;
}
if (panelName) {
console.log("handleDeepLink - panelName", panelName, panelInfo);
dispatch(
pushPanel({
name: panelName,
panelInfo: { ...panelInfo, linkTpCd },
})
);
}
} else {
console.log("handleDeepLink - no target");
}
}
const secondLayerInfo = {
curationId: curationId ?? "",
curationNm: "",
expsOrd: expsOrd ?? "0",
lgCatCd: lgCatCd ?? "",
lgCatNm: lgCatNm ?? "",
linkTpCd: linkTpCd,
logTpNo: LOG_TP_NO.SECOND_LAYER,
patncNm: "",
patnrId: patnrId ?? "",
prdtId: prdtId ?? "",
prdtNm: "",
showId: showId ?? "",
showNm: "",
};
dispatch(setSecondLayerInfo(secondLayerInfo));
};