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 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]; // 상품아이디 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]; // 채널아이디 curationId = tokens[7]; // 큐레이션아이디 panelName = panel_names.PLAYER_PANEL; deeplinkPanel = "Live Show"; panelInfo = { patnrId: patnrId, chanId: chanId, shptmBanrTpNm: "LIVE", modal: false, // DeepLink 진입 시 fullscreen으로 재생 // expsOrd: expsOrd, }; break; case "VS": // "VS": VOD Show // V3_진입경로코드_진입경로명_VS_파트너아이디_방송아이디_노출순번_큐레이션아이디 patnrId = tokens[4]; // 파트너아이디 showId = tokens[5]; // 방송아이디 curationId = tokens[7]; // 큐레이션아이디 panelName = panel_names.PLAYER_PANEL; deeplinkPanel = "VOD Show"; panelInfo = { patnrId: patnrId, showId: showId, shptmBanrTpNm: "VOD", modal: false, // DeepLink 진입 시 fullscreen으로 재생 // expsOrd: expsOrd, }; break; case "TD": // "TD": Theme Detail // V3_진입경로코드_진입경로명_TD_파트너아이디_큐레이션아이디_상품아이디_노출순번_그룹번호 // 상품아이디 (M): 테마상세 진입시 상품을 포커싱하기 위함 // 노출순번 (O) : 상품아이디+그룹번호가 설정된 경우 필수 (없을시 "0" 설정) // 그룹번호 (O) : TCHH 유형만 적용 patnrId = tokens[4]; // 파트너아이디 curationId = tokens[5]; // 큐레이션아이디\ prdtId = tokens[6]; // 상품아이디 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]; // 큐레이션아이디 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]; // 큐레이션아이디 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; } // 251204 [통합로그] webOS 에서 shoptime 진입점 정보 수집 const isFirstLaunch = _getState().common.appStatus?.isFirstLaunch; dispatch( sendLogTotalRecommend({ contextName: LOG_CONTEXT_NAME.ENTRY, messageId: LOG_MESSAGE_ID.ENTRY_INFO, entryMenu: linkTpNm, deeplink: type, linkTypeCode: linkTpCd, curationId: curationId, showId: showId, channelId: chanId, productId: prdtId, category: lgCatNm, firstYn: isFirstLaunch ? "Y" : "N", }) ); if (panelName) { const action = panelName === panel_names.HOME_PANEL ? updateHomeInfo : pushPanel; // 🔽 LS(Live Show) 또는 VS(VOD Show)인 경우 DeepLink 진입 플래그 설정 if ((type === 'LS' || type === 'VS') && action === pushPanel) { dispatch( updateHomeInfo({ name: panel_names.HOME_PANEL, panelInfo: { isDeepLinkEntry: true, // DeepLink PlayerPanel 진입 플래그 }, }) ); } dispatch( action({ name: panelName, panelInfo: { ...panelInfo, linkTpCd }, }) ); } } } };