[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)
This commit is contained in:
younghoon100.park
2024-07-28 22:26:59 +09:00
parent b8f43c8444
commit 118fe825b9
7 changed files with 311 additions and 345 deletions

View File

@@ -14,6 +14,7 @@ import ThemeDecorator from "@enact/sandstone/ThemeDecorator";
import Spotlight from "@enact/spotlight"; import Spotlight from "@enact/spotlight";
import appinfo from "../../webos-meta/appinfo.json"; import appinfo from "../../webos-meta/appinfo.json";
import { types } from "../actions/actionTypes";
import { import {
changeAppStatus, changeAppStatus,
deleteOldDb8Datas, deleteOldDb8Datas,
@@ -24,7 +25,6 @@ import {
} from "../actions/commonActions"; } from "../actions/commonActions";
import { getShoptimeTerms } from "../actions/empActions"; import { getShoptimeTerms } from "../actions/empActions";
import { getHomeMenu, getHomeTerms } from "../actions/homeActions"; import { getHomeMenu, getHomeTerms } from "../actions/homeActions";
import { sendLogSecondLayer } from "../actions/logActions";
import { import {
getMyRecommandedKeyword, getMyRecommandedKeyword,
getMyUpcomingAlertShow, getMyUpcomingAlertShow,
@@ -40,7 +40,7 @@ import * as Config from "../utils/Config";
import { $L, clearLaunchParams, getLaunchParams } from "../utils/helperMethods"; import { $L, clearLaunchParams, getLaunchParams } from "../utils/helperMethods";
import MainView from "../views/MainView/MainView"; import MainView from "../views/MainView/MainView";
import css from "./App.module.less"; import css from "./App.module.less";
import { handleDeepLink } from "./deepLinkHandler"; import { getMenuByLinkTpCd, handleDeepLink } from "./deepLinkHandler";
let foreGroundChangeTimer = null; let foreGroundChangeTimer = null;
@@ -66,15 +66,23 @@ const disableConsole = () => {
function AppBase(props) { function AppBase(props) {
const dispatch = useDispatch(); const dispatch = useDispatch();
const httpHeader = useSelector((state) => state.common.httpHeader); const httpHeader = useSelector((state) => state.common.httpHeader);
const webOSVersion = useSelector((state) => state.common.appStatus.webOSVersion); const webOSVersion = useSelector(
(state) => state.common.appStatus.webOSVersion
);
const deviceId = useSelector((state) => state.common.appStatus.deviceId); const deviceId = useSelector((state) => state.common.appStatus.deviceId);
const loginUserData = useSelector((state) => state.common.appStatus.loginUserData); const loginUserData = useSelector(
const cursorVisible = useSelector((state) => state.common.appStatus.cursorVisible); (state) => state.common.appStatus.loginUserData
);
const cursorVisible = useSelector(
(state) => state.common.appStatus.cursorVisible
);
const introTermsAgree = useSelector((state) => state.common.introTermsAgree); const introTermsAgree = useSelector((state) => state.common.introTermsAgree);
const introTermsAgreeRef = usePrevious(introTermsAgree); const introTermsAgreeRef = usePrevious(introTermsAgree);
const logEnable = useSelector((state) => state.localSettings.logEnable); const logEnable = useSelector((state) => state.localSettings.logEnable);
const oldDb8Deleted = useSelector((state) => state.localSettings.oldDb8Deleted); const oldDb8Deleted = useSelector(
(state) => state.localSettings.oldDb8Deleted
);
const deviceCountryCode = httpHeader?.["X-Device-Country"] || ""; const deviceCountryCode = httpHeader?.["X-Device-Country"] || "";
@@ -98,9 +106,6 @@ function AppBase(props) {
console.log("hide cursor"); console.log("hide cursor");
}, 5000) }, 5000)
); );
const _sendLogSecondLayer = useCallback((params) => {
dispatch(sendLogSecondLayer(params));
}, []);
// called by [receive httpHeader, launch, relaunch] // called by [receive httpHeader, launch, relaunch]
const initService = useCallback( const initService = useCallback(
@@ -125,27 +130,17 @@ function AppBase(props) {
dispatch(getMyUpcomingAlertShow()); dispatch(getMyUpcomingAlertShow());
} }
//todo deeplink
const launchParams = getLaunchParams(); const launchParams = getLaunchParams();
console.log( console.log(
"initService...{haveyInit, launchParams}", "initService...{haveyInit, launchParams}",
haveyInit, haveyInit,
launchParams launchParams
); );
// if (launchParams?.contentTarget) { dispatch(handleDeepLink(launchParams?.contentTarget));
// dispatch(
// handleDeepLink(launchParams?.contentTarget, sendLogSecondLayer)
// );
// }
// pyh todo, edit
dispatch(
handleDeepLink(launchParams?.contentTarget, _sendLogSecondLayer)
);
clearLaunchParams();
dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); dispatch(changeAppStatus({ showLoadingPanel: { show: false } }));
clearLaunchParams();
} }
}, },
[dispatch, httpHeader] [dispatch, httpHeader]
@@ -280,10 +275,21 @@ function AppBase(props) {
useEffect(() => { useEffect(() => {
const launchParmas = getLaunchParams(); const launchParmas = getLaunchParams();
const linkTpCd = launchParmas.contentTarget
? launchParmas.contentTarget.split("_")[1] || ""
: "";
if (launchParmas.contentTarget) { if (launchParmas.contentTarget) {
dispatch(setDeepLink(true)); dispatch(
setDeepLink({
contentTarget: launchParmas.contentTarget,
isDeepLink: true,
})
);
} }
const entryMenu = getMenuByLinkTpCd(linkTpCd);
dispatch({ type: types.SET_GNB_MENU, payload: entryMenu });
}, [dispatch]); }, [dispatch]);
return ( return (

View File

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

View File

@@ -30,6 +30,7 @@ export const types = {
SET_SYSTEM_NOTICE: "SET_SYSTEM_NOTICE", SET_SYSTEM_NOTICE: "SET_SYSTEM_NOTICE",
SET_SYSTEM_TERMINATION: "SET_SYSTEM_TERMINATION", SET_SYSTEM_TERMINATION: "SET_SYSTEM_TERMINATION",
SET_DEEP_LINK: "SET_DEEP_LINK", SET_DEEP_LINK: "SET_DEEP_LINK",
SET_SECOND_LAYER_INFO: "SET_SECOND_LAYER_INFO",
// billing actions // billing actions
GET_MY_INFO_BILLING_SEARCH: "GET_MY_INFO_BILLING_SEARCH", GET_MY_INFO_BILLING_SEARCH: "GET_MY_INFO_BILLING_SEARCH",

View File

@@ -391,11 +391,9 @@ export const addReservation = (data) => (dispatch) => {
export const deleteReservationCallback = (scheduleIdList) => (dispatch) => { export const deleteReservationCallback = (scheduleIdList) => (dispatch) => {
lunaSend.deleteReservationCallback(scheduleIdList, { lunaSend.deleteReservationCallback(scheduleIdList, {
onSuccess: (res) => { onSuccess: (res) => {
// pyh todo, deleted alertToast
// dispatch(alertToast("success" + JSON.stringify(res))); // dispatch(alertToast("success" + JSON.stringify(res)));
}, },
onFailure: (err) => { onFailure: (err) => {
// pyh todo, deleted alertToast
// dispatch(alertToast("failed" + JSON.stringify(err))); // dispatch(alertToast("failed" + JSON.stringify(err)));
}, },
}); });
@@ -437,9 +435,14 @@ export const setSystemTermination = (isinitialLoad) => ({
payload: { isinitialLoad }, payload: { isinitialLoad },
}); });
export const setDeepLink = (isDeepLink) => ({ export const setDeepLink = (deepLinkInfo) => ({
type: types.SET_DEEP_LINK, type: types.SET_DEEP_LINK,
payload: isDeepLink, payload: deepLinkInfo,
});
export const setSecondLayerInfo = (secondLayerInfo) => ({
type: types.SET_SECOND_LAYER_INFO,
payload: secondLayerInfo,
}); });
//luna-send -f -n 1 luna://com.webos.service.db/delKind '{"id": "com.lgshop.app:5"}' -a "com.lgshop.app" //luna-send -f -n 1 luna://com.webos.service.db/delKind '{"id": "com.lgshop.app:5"}' -a "com.lgshop.app"

View File

@@ -3,6 +3,7 @@ import { TLogEvent } from "../api/TLogEvent";
import { LOG_TP_NO } from "../utils/Config"; import { LOG_TP_NO } from "../utils/Config";
import { formatGMTString } from "../utils/helperMethods"; import { formatGMTString } from "../utils/helperMethods";
import { types } from "./actionTypes"; import { types } from "./actionTypes";
import { setSecondLayerInfo } from "./commonActions";
export const getUrlByLogTpNo = (logTpNo) => { export const getUrlByLogTpNo = (logTpNo) => {
switch (logTpNo) { switch (logTpNo) {
@@ -174,6 +175,7 @@ export const postLog = (params) => (dispatch, getState) => {
onFail onFail
); );
}; };
/** /**
* IG-LGSP-LOG-001 / Live 시청 이력 * IG-LGSP-LOG-001 / Live 시청 이력
* *
@@ -233,6 +235,7 @@ export const sendLogLive = (params, callback) => (dispatch, getState) => {
} }
} }
}; };
/** /**
* IG-LGSP-LOG-002 / VOD 시청 이력 * IG-LGSP-LOG-002 / VOD 시청 이력
* *
@@ -265,7 +268,6 @@ export const sendLogLive = (params, callback) => (dispatch, getState) => {
export const sendLogVOD = (params, callback) => (dispatch, getState) => { export const sendLogVOD = (params, callback) => (dispatch, getState) => {
const { logTpNo, watchStrtDt } = params; const { logTpNo, watchStrtDt } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo || !watchStrtDt) { if (!logTpNo || !watchStrtDt) {
console.error("sendLogLive invalid params", params); console.error("sendLogLive invalid params", params);
return; return;
@@ -286,6 +288,7 @@ export const sendLogVOD = (params, callback) => (dispatch, getState) => {
} }
} }
}; };
/** /**
* IF-LGSP-LOG-003 / Curations View 이력 * IF-LGSP-LOG-003 / Curations View 이력
* *
@@ -341,6 +344,7 @@ export const sendLogCuration = (params) => (dispatch, getState) => {
dispatch(postLog(newParams)); dispatch(postLog(newParams));
}; };
/** /**
* IF-LGSP-LOG-004 / 2ndLayer 이력 * IF-LGSP-LOG-004 / 2ndLayer 이력
* *
@@ -375,16 +379,15 @@ export const sendLogCuration = (params) => (dispatch, getState) => {
* (O) showNm 방송 이름 * (O) showNm 방송 이름
*/ */
export const sendLogSecondLayer = (params) => (dispatch, getState) => { export const sendLogSecondLayer = (params) => (dispatch, getState) => {
const { entryMenu } = params; const secondLayerInfo = getState().common.secondLayerInfo;
if (secondLayerInfo && Object.keys(secondLayerInfo).length === 0) {
if (!entryMenu) {
console.error("sendLogSecondLayer invalid params", params);
return; return;
} }
dispatch({ type: types.SET_GNB_MENU, payload: entryMenu });
dispatch(postLog(params)); dispatch(postLog(params));
dispatch(setSecondLayerInfo({}));
}; };
/** /**
* IF-LGSP-LOG-005 / GNB 클릭 이력 * IF-LGSP-LOG-005 / GNB 클릭 이력
* *
@@ -402,13 +405,13 @@ export const sendLogSecondLayer = (params) => (dispatch, getState) => {
*/ */
export const sendLogGNB = (menu) => (dispatch, getState) => { export const sendLogGNB = (menu) => (dispatch, getState) => {
const { menuMovSno, nowMenu } = getState().common.menu; const { menuMovSno, nowMenu } = getState().common.menu;
const secondLayerInfo = getState().common.secondLayerInfo;
if (!menu) { if (!menu) {
console.error("sendLogGNB invalid params", menu); console.error("sendLogGNB invalid params", menu);
return; return;
} }
if (menu === nowMenu || menuMovSno === null || menuMovSno === undefined) { if (menu === nowMenu || !menuMovSno) {
return; return;
} }
@@ -420,9 +423,25 @@ export const sendLogGNB = (menu) => (dispatch, getState) => {
nowMenu: menu, nowMenu: menu,
outDt: "", outDt: "",
}; };
dispatch({ type: types.SET_GNB_MENU, payload: menu }); dispatch({ type: types.SET_GNB_MENU, payload: menu });
dispatch(postLog(newParams)); dispatch(postLog(newParams));
if (
[1, 2].includes(menuMovSno) &&
secondLayerInfo &&
Object.keys(secondLayerInfo).length > 0
) {
dispatch(
sendLogSecondLayer({
...secondLayerInfo,
entryMenu: nowMenu,
nowMenu: menu,
})
);
}
}; };
/** /**
* IF-LGSP-LOG-006 / 상품 상세 이력 * IF-LGSP-LOG-006 / 상품 상세 이력
* *
@@ -511,7 +530,6 @@ export const sendLogProductDetail = (params) => (dispatch, getState) => {
export const sendLogDetail = (params) => (dispatch, getState) => { export const sendLogDetail = (params) => (dispatch, getState) => {
const { logTpNo, patncNm, patnrId } = params; const { logTpNo, patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo || !patncNm || !patnrId) { if (!logTpNo || !patncNm || !patnrId) {
console.error("sendLogDetail invalid params", params); console.error("sendLogDetail invalid params", params);
return; return;
@@ -615,7 +633,6 @@ export const sendLogShopByMobile = (params) => (dispatch, getState) => {
export const sendLogPartners = (params) => (dispatch, getState) => { export const sendLogPartners = (params) => (dispatch, getState) => {
const { patncNm, patnrId } = params; const { patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!patncNm || !patnrId) { if (!patncNm || !patnrId) {
console.error("sendLogPartners invalid params", params); console.error("sendLogPartners invalid params", params);
return; return;
@@ -646,7 +663,6 @@ export const sendLogPartners = (params) => (dispatch, getState) => {
export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => { export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => {
const { alertFlag } = params; const { alertFlag } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!alertFlag) { if (!alertFlag) {
console.error("sendLogMyPageAlertFlag invalid params", params); console.error("sendLogMyPageAlertFlag invalid params", params);
return; return;
@@ -676,7 +692,6 @@ export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => {
export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => { export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => {
const { cnt } = params; const { cnt } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!cnt) { if (!cnt) {
console.error("sendLogMyPageMyDelete invalid params", params); console.error("sendLogMyPageMyDelete invalid params", params);
return; return;
@@ -708,7 +723,6 @@ export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => {
export const sendLogMyPageNotice = (params) => (dispatch, getState) => { export const sendLogMyPageNotice = (params) => (dispatch, getState) => {
const { itemId, title } = params; const { itemId, title } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!itemId || !title) { if (!itemId || !title) {
console.error("sendLogNoticeView invalid params", params); console.error("sendLogNoticeView invalid params", params);
return; return;
@@ -796,7 +810,6 @@ export const sendLogSearch = (params) => (dispatch, getState) => {
export const sendLogSearchClick = (params) => (dispatch, getState) => { export const sendLogSearchClick = (params) => (dispatch, getState) => {
const { keyword, patncNm, patnrId } = params; const { keyword, patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!keyword || !patncNm || !patnrId) { if (!keyword || !patncNm || !patnrId) {
console.error("sendLogSearchClick invalid params", params); console.error("sendLogSearchClick invalid params", params);
return; return;
@@ -850,24 +863,8 @@ export const sendLogSearchClick = (params) => (dispatch, getState) => {
* (M) showNm 방송 이름 * (M) showNm 방송 이름
*/ */
export const sendLogUpcomingFlag = (params) => (dispatch, getState) => { export const sendLogUpcomingFlag = (params) => (dispatch, getState) => {
// pyh Todo, 왜 키가 문서와 맞지 않고 1.0과 같은가..?
// const { alertFlag, patncNm, patnrId, remainSec, showId, showNm } = params;
// if (
// !alertFlag ||
// !patncNm ||
// !patnrId ||
// !remainSec ||
// !showId ||
// !showNm
// ) {
// console.error("sendLogUpcomingFlag invalid params", params);
// return;
// }
const { items } = params; const { items } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!items) { if (!items) {
console.error("sendLogUpcomingFlag invalid params", params); console.error("sendLogUpcomingFlag invalid params", params);
return; return;
@@ -876,10 +873,7 @@ export const sendLogUpcomingFlag = (params) => (dispatch, getState) => {
const newParams = { const newParams = {
...params, ...params,
entryMenu: entryMenu, entryMenu: entryMenu,
// hstNm: params?.hstNm ?? "",
logTpNo: LOG_TP_NO.UPCOMING_FLAG, logTpNo: LOG_TP_NO.UPCOMING_FLAG,
// lgCatCd: params?.lgCatCd ?? "",
// lgCatNm: params?.lgCatNm ?? "",
nowMenu: nowMenu, nowMenu: nowMenu,
}; };
@@ -920,7 +914,6 @@ export const sendLogUpcomingFlag = (params) => (dispatch, getState) => {
export const sendLogAlarmPop = (params) => (dispatch, getState) => { export const sendLogAlarmPop = (params) => (dispatch, getState) => {
const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } = params; const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if ( if (
!alarmDt || !alarmDt ||
!alarmType || !alarmType ||
@@ -946,6 +939,7 @@ export const sendLogAlarmPop = (params) => (dispatch, getState) => {
dispatch(postLog(newParams)); dispatch(postLog(newParams));
}; };
/** /**
* IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭 * IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
* *
@@ -1120,6 +1114,7 @@ export const sendLogTopContents = (params) => (dispatch, getState) => {
dispatch(postLog(newParams)); dispatch(postLog(newParams));
}; };
/** /**
* IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력 * IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
* *
@@ -1132,7 +1127,6 @@ export const sendLogTopContents = (params) => (dispatch, getState) => {
export const sendLogTerms = (params) => (dispatch, getState) => { export const sendLogTerms = (params) => (dispatch, getState) => {
const { logTpNo } = params; const { logTpNo } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo) { if (!logTpNo) {
console.error("sendLogTerms invalid params", params); console.error("sendLogTerms invalid params", params);
return; return;
@@ -1163,7 +1157,6 @@ export const sendLogTerms = (params) => (dispatch, getState) => {
export const sendLogLgAccountLogin = (params) => (dispatch, getState) => { export const sendLogLgAccountLogin = (params) => (dispatch, getState) => {
const { lginTpNm, usrNo } = params; const { lginTpNm, usrNo } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!lginTpNm || !usrNo) { if (!lginTpNm || !usrNo) {
console.error("sendLogLgAccountLogin invalid params", params); console.error("sendLogLgAccountLogin invalid params", params);
return; return;
@@ -1194,7 +1187,6 @@ export const sendLogLgAccountLogin = (params) => (dispatch, getState) => {
export const sendLogOrderBtnClick = (params) => (dispatch, getState) => { export const sendLogOrderBtnClick = (params) => (dispatch, getState) => {
const { btnNm } = params; const { btnNm } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!btnNm) { if (!btnNm) {
console.error("sendLogOrderBtnClick invalid params", params); console.error("sendLogOrderBtnClick invalid params", params);
return; return;
@@ -1227,7 +1219,6 @@ export const sendLogOrderBtnClick = (params) => (dispatch, getState) => {
export const sendLogOrderChange = (params) => (dispatch, getState) => { export const sendLogOrderChange = (params) => (dispatch, getState) => {
const { reqRsn, reqTpNm } = params; const { reqRsn, reqTpNm } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!reqRsn || !reqTpNm) { if (!reqRsn || !reqTpNm) {
console.error("sendLogOrderChange invalid params", params); console.error("sendLogOrderChange invalid params", params);
return; return;
@@ -1433,7 +1424,6 @@ export const sendLogPaymentComplete = (params) => (dispatch, getState) => {
export const sendLogFeaturedBrands = (params) => (dispatch, getState) => { export const sendLogFeaturedBrands = (params) => (dispatch, getState) => {
const { patncNm, patnrId } = params; const { patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu; const { entryMenu, nowMenu } = getState().common.menu;
if (!patncNm || !patnrId) { if (!patncNm || !patnrId) {
console.error("sendLogFeaturedBrands invalid params", params); console.error("sendLogFeaturedBrands invalid params", params);
return; return;
@@ -1455,6 +1445,7 @@ export const sendLogFeaturedBrands = (params) => (dispatch, getState) => {
dispatch(postLog(newParams)); dispatch(postLog(newParams));
}; };
/** /**
* IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력 * IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력
* *

View File

@@ -51,7 +51,7 @@ const initialState = {
check: "", check: "",
menu: { menu: {
entryMenu: "App", // pyh todo entryMenu: "App",
nowMenu: "", nowMenu: "",
menuMovSno: 0, menuMovSno: 0,
}, },
@@ -62,7 +62,12 @@ const initialState = {
// test // test
spotlightId: null, spotlightId: null,
isDeepLink: false, deepLinkInfo: {
contentTarget: "",
isDeepLink: false,
},
secondLayerInfo: {},
}; };
export const commonReducer = (state = initialState, action) => { export const commonReducer = (state = initialState, action) => {
@@ -243,7 +248,14 @@ export const commonReducer = (state = initialState, action) => {
case types.SET_DEEP_LINK: { case types.SET_DEEP_LINK: {
return { return {
...state, ...state,
isDeepLink: action.payload, deepLinkInfo: action.payload,
};
}
case types.SET_SECOND_LAYER_INFO: {
return {
...state,
secondLayerInfo: action.payload,
}; };
} }

View File

@@ -99,7 +99,9 @@ export default function HomePanel({ isOnTop }) {
(state) => state.product.bestSellerData?.bestSeller (state) => state.product.bestSellerData?.bestSeller
); );
const topInfos = useSelector((state) => state.main.top20ShowData.topInfos); const topInfos = useSelector((state) => state.main.top20ShowData.topInfos);
const isDeepLink = useSelector((state) => state.common.isDeepLink); const isDeepLink = useSelector(
(state) => state.common.deepLinkInfo.isDeepLink
);
const [btnDisabled, setBtnDisabled] = useState(true); const [btnDisabled, setBtnDisabled] = useState(true);
const [arrowBottom, setArrowBottom] = useState(true); const [arrowBottom, setArrowBottom] = useState(true);
@@ -400,7 +402,7 @@ export default function HomePanel({ isOnTop }) {
dispatch(getBestSeller(bestSellerLoaded)); dispatch(getBestSeller(bestSellerLoaded));
if (isDeepLink) { if (isDeepLink) {
dispatch(setDeepLink(false)); dispatch(setDeepLink({ contentTarget: "", isDeepLink: false }));
} }
} }
} }