1229 lines
27 KiB
JavaScript
1229 lines
27 KiB
JavaScript
import { useCallback } from "react";
|
|
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
|
|
import { types } from "../actions/actionTypes";
|
|
import { postLog } from "../actions/logActions";
|
|
import { LOG_TP_NO } from "../utils/Config";
|
|
import { formatGMTString } from "../utils/helperMethods";
|
|
import usePrevious from "./usePrevious";
|
|
|
|
export default function useLogService() {
|
|
const dispatch = useDispatch();
|
|
|
|
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
|
|
const nowMenu = useSelector((state) => state.common.menu.nowMenu);
|
|
const menuMovSno = useSelector((state) => state.common.menu.menuMovSno);
|
|
|
|
const entryMenuRef = usePrevious(entryMenu);
|
|
const menuMovSnoRef = usePrevious(menuMovSno);
|
|
const nowMenuRef = usePrevious(nowMenu);
|
|
|
|
/**
|
|
* IG-LGSP-LOG-001 / Live 시청 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 네임
|
|
*
|
|
* (M) linkTpCd 링크 타입 코드
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 쇼 아이디
|
|
*
|
|
* (M) showNm 쇼 네임
|
|
*
|
|
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
|
|
*
|
|
* (M) watchEndDt 시청 종료 시간
|
|
*
|
|
* (M) watchStrtDt 시청 시작 시간
|
|
*/
|
|
const sendLogLive = useCallback(
|
|
(params) => {
|
|
const { logTpNo, patncNm, patnrId, showId, showNm, watchStrtDt } = params;
|
|
|
|
if (
|
|
!logTpNo ||
|
|
!patncNm ||
|
|
!patnrId ||
|
|
!showId ||
|
|
!showNm ||
|
|
!watchStrtDt
|
|
) {
|
|
console.error("sendLogLive invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: params?.entryMenu ?? entryMenuRef.current,
|
|
nowMenu: params?.nowMenu ?? nowMenuRef.current,
|
|
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
|
|
};
|
|
|
|
if (newParams.watchEndDt === watchStrtDt) {
|
|
return;
|
|
}
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IG-LGSP-LOG-002 / VOD 시청 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 딥 링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디 (media case: prdtId)
|
|
*
|
|
* (M) showNm 방송 이름 (media case: prdtNm)
|
|
*
|
|
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
|
|
*
|
|
* (M) watchEndDt 시청 종료 시간
|
|
*
|
|
* (M) watchStrtDt 시청 시작 시간
|
|
*/
|
|
const sendLogVOD = useCallback(
|
|
(params) => {
|
|
const { logTpNo, watchStrtDt } = params;
|
|
|
|
if (!logTpNo || !watchStrtDt) {
|
|
console.error("sendLogLive invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: params?.entryMenu ?? entryMenuRef.current,
|
|
nowMenu: params?.nowMenu ?? nowMenuRef.current,
|
|
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
|
|
};
|
|
|
|
if (newParams.watchEndDt === watchStrtDt) {
|
|
return;
|
|
}
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-003 / Curations View 이력
|
|
*
|
|
* (O) cnttTpNm 컨텐츠 타입 네임 "show" / "item"
|
|
*
|
|
* (M) curationId 큐레이션 아이디
|
|
*
|
|
* (M) curationNm 큐레이션 네임
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) expsOrd 노출 순서
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 네임
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (O) linkTpCd 링크 타입 코드
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) sortTpNm 정렬 타입 네임 "popular" / "new"
|
|
*/
|
|
const sendLogCuration = useCallback(
|
|
(params) => {
|
|
const { logTpNo } = params;
|
|
|
|
if (!logTpNo) {
|
|
console.error("sendLogCuration invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
cnttTpNm: params.cnttTpNm ?? "",
|
|
curationId: params.curationId ?? "",
|
|
curationNm: params.curationNm ?? "",
|
|
entryMenu: entryMenuRef.current,
|
|
expsOrd: params.expsOrd ?? "",
|
|
lgCatCd: params.lgCatCd ?? "",
|
|
lgCatNm: params.lgCatNm ?? "",
|
|
logTpNo: params.logTpNo ?? "",
|
|
linkTpCd: params.linkTpCd ?? "",
|
|
nowMenu: nowMenuRef.current,
|
|
patncNm: params.patncNm ?? "",
|
|
patnrId: params.patnrId ?? "",
|
|
sortTpNm: params.sortTpNm ?? "",
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-004 / 2ndLayer 이력
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) expsOrd 전시 순번
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) linkTpCd 딥 링크 코드
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) prdtId 상품 아이디
|
|
*
|
|
* (O) prdtNm 상품 이름
|
|
*
|
|
* (O) showId 방송 아이디
|
|
*
|
|
* (O) showNm 방송 이름
|
|
*/
|
|
const sendLogSecondLayer = useCallback(
|
|
(params) => {
|
|
const { entryMenu } = params;
|
|
|
|
if (!entryMenu) {
|
|
console.error("sendLogSecondLayer invalid params", params);
|
|
return;
|
|
}
|
|
|
|
dispatch({ type: types.SET_GNB_MENU, payload: entryMenu });
|
|
dispatch(postLog(params));
|
|
},
|
|
[dispatch]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-005 / GNB 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) menuMovSno 메뉴 이동 일련번호
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*/
|
|
const sendLogGNB = useCallback(
|
|
(menu) => {
|
|
if (!menu) {
|
|
console.error("sendLogGNB invalid params", menu);
|
|
return;
|
|
}
|
|
|
|
if (
|
|
menu === nowMenuRef.current ||
|
|
menuMovSnoRef.current === null ||
|
|
menuMovSnoRef.current === undefined
|
|
) {
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: nowMenuRef.current, // previous nowMenu
|
|
inDt: formatGMTString(new Date()),
|
|
logTpNo: LOG_TP_NO.GNB,
|
|
menuMovSno: `${menuMovSnoRef.current}`,
|
|
nowMenu: menu,
|
|
outDt: "",
|
|
};
|
|
|
|
dispatch({ type: types.SET_GNB_MENU, payload: menu });
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, menuMovSnoRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-006 / 상품 상세 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) expsOrd 노출 순번
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 딥 링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prdtId 상품 아이디
|
|
*
|
|
* (M) prdtNm 상품 이름
|
|
*
|
|
* (O) revwGrd 별점
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
const sendLogProductDetail = useCallback(
|
|
(params) => {
|
|
const { logTpNo } = params;
|
|
|
|
const outDt =
|
|
logTpNo === LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE
|
|
? ""
|
|
: formatGMTString(new Date());
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
nowMenu: nowMenuRef.current,
|
|
outDt,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-007 / Detail 상세 이력
|
|
*
|
|
* (O) curationId 큐레이션 아이디 (Theme의 경우 M, Hotel의 경우 O)
|
|
*
|
|
* (O) curationNm 큐레이션 이름 (Theme의 경우 M, Hotel의 경우 O)
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (O) linkTpCd 딥 링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*/
|
|
const sendLogDetail = useCallback(
|
|
(params) => {
|
|
const { logTpNo, patncNm, patnrId } = params;
|
|
|
|
if (!logTpNo || !patncNm || !patnrId) {
|
|
console.error("sendLogDetail invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const outDt =
|
|
logTpNo === LOG_TP_NO.DETAIL.DETAIL_BUTTON_CLICK
|
|
? ""
|
|
: formatGMTString(new Date());
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
nowMenu: nowMenuRef.current,
|
|
outDt,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-008 / Shop by mobile 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) evntId 이벤트 아이디
|
|
*
|
|
* (O) evntNm 이벤트 이름
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) liveFlag 라이브 여부
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) mbphNoFlag 전화 번호 여부 (모바일 폰 넘버 플래그)
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) prdtId 상품 아이디
|
|
*
|
|
* (O) prdtNm 상품 이름
|
|
*
|
|
* (O) revwGrd 별점 (리뷰 그레이드)
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) shopByMobileFlag 샵 바이 모바일 여부
|
|
*
|
|
* (M) shopTpNm 샵 바이 모바일 타입 이름
|
|
*
|
|
* (O) showId 방송 아이디
|
|
*
|
|
* (O) showNm 방송 이름
|
|
*
|
|
* (M) trmsAgrFlag 약관 동의 여부
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
const sendLogShopByMobile = useCallback(
|
|
(params) => {
|
|
const { logTpNo } = params;
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-009 / Partners 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*/
|
|
const sendLogPartners = useCallback(
|
|
(params) => {
|
|
const { patncNm, patnrId } = params;
|
|
|
|
if (!patncNm || !patnrId) {
|
|
console.error("sendLogPartners invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.PARTNERS,
|
|
nowMenu: nowMenuRef.current,
|
|
patncNm,
|
|
patnrId,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-010 / Reminder - Alert On/Off
|
|
*
|
|
* (M) alertFlag 설정 여부, On / Off
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
const sendLogMyPageAlertFlag = useCallback(
|
|
(params) => {
|
|
const { alertFlag } = params;
|
|
|
|
if (!alertFlag) {
|
|
console.error("sendLogMyPageAlertFlag invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
alertFlag,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.MY_PAGE.ALERT_FLAG,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력
|
|
*
|
|
* (M) cnt 삭제 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
const sendLogMyPageMyDelete = useCallback(
|
|
(params) => {
|
|
const { cnt } = params;
|
|
|
|
if (!cnt) {
|
|
console.error("sendLogMyPageMyDelete invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.MY_PAGE.MY_DELETE,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-012 / My Page Notice View
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) itemId Notice/FAQ 등록 번호
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMneu 현재 메뉴
|
|
*
|
|
* (M) title Notice/FAQ 제목
|
|
*/
|
|
const sendLogMyPageNotice = useCallback(
|
|
(params) => {
|
|
const { itemId, title } = params;
|
|
|
|
if (!itemId || !title) {
|
|
console.error("sendLogNoticeView invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.MY_PAGE.NOTICE,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-013 / 검색 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) inputFlag 입력 구분, keyword / input
|
|
*
|
|
* (M) itemCnt 상춤 개수
|
|
*
|
|
* (M) keyword 검색어
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) showCnt 영상 개수
|
|
*
|
|
* (M) themeCnt 테마 개수
|
|
*/
|
|
const sendLogSearch = useCallback(
|
|
(params) => {
|
|
const { inputFlag, itemCnt, keyword, showCnt, themeCnt } = params;
|
|
|
|
if (!inputFlag || !itemCnt || !keyword || !showCnt || !themeCnt) {
|
|
console.error("sendLogSearch invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.SEARCH,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-014 / 검색 결과 클릭 이력
|
|
*
|
|
* (M) curationId 큐레이션 아이디
|
|
*
|
|
* (M) curationNm 큐레이션 이름
|
|
*
|
|
* (M) dcAfPrice 할인후 가격
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) keyword 검색어
|
|
*
|
|
* (M) lgCatNm LG 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prdtId 상품 아이디
|
|
*
|
|
* (M) prdtNm 상품 이름
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
const sendLogSearchClick = useCallback(
|
|
(params) => {
|
|
const { keyword, patncNm, patnrId } = params;
|
|
|
|
if (!keyword || !patncNm || !patnrId) {
|
|
console.error("sendLogSearchClick invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
curationId: params?.curationId ?? "",
|
|
curationNm: params?.curationNm ?? "",
|
|
dcAfPrice: params?.dcAfPrice ?? "",
|
|
entryMenu: entryMenuRef.current,
|
|
keyword,
|
|
lgCatNm: params?.lgCatNm ?? "",
|
|
logTpNo: LOG_TP_NO.SEARCH_CLICK,
|
|
nowMenu: nowMenuRef.current,
|
|
patncNm,
|
|
patnrId,
|
|
prdtId: params?.prdtId ?? "",
|
|
prdtNm: params?.prdtNm ?? "",
|
|
showId: params?.showId ?? "",
|
|
showNm: params?.showNm ?? "",
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-015 / Upcoming On/Off
|
|
*
|
|
* (M) alertFlag 알림 설정 여부 On/Off
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) remainSec 남은 시간(초)
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
const sendLogUpcomingFlag = useCallback(
|
|
(params) => {
|
|
// 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;
|
|
|
|
if (!items) {
|
|
console.error("sendLogUpcomingFlag invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
// hstNm: params?.hstNm ?? "",
|
|
logTpNo: LOG_TP_NO.UPCOMING_FLAG,
|
|
// lgCatCd: params?.lgCatCd ?? "",
|
|
// lgCatNm: params?.lgCatNm ?? "",
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-017 / 알람 팝업
|
|
*
|
|
* (M) alarmDt 알람 방생 시간
|
|
*
|
|
* (M) alarmType 알람 유형 Upcoming/Keyword
|
|
*
|
|
* (M) cnt 키워드 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (M) keywordList 키워드 리스트 (콤마 구분자)
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
const sendLogAlarmPop = useCallback(
|
|
(params) => {
|
|
const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } =
|
|
params;
|
|
|
|
if (
|
|
!alarmDt ||
|
|
!alarmType ||
|
|
!cnt ||
|
|
!patncNm ||
|
|
!patnrId ||
|
|
!showId ||
|
|
!showNm
|
|
) {
|
|
console.error("sendLogAlarmPop invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
hstNm: params?.hstNm ?? "",
|
|
lgCatCd: params?.lgCatCd ?? "",
|
|
lgCatNm: params?.lgCatNm ?? "",
|
|
logTpNo: LOG_TP_NO.ALARM_POP,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
|
|
*
|
|
* (M) alarmDt 알람 발생 시간
|
|
*
|
|
* (M) alarmType 알람 유형 Upcoming/Keyword
|
|
*
|
|
* (M) clickFlag 클릭 유형 Ok/No
|
|
*
|
|
* (M) cnt 키워드 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (M) keywordList 키워드 리스트(콤마 구분자)
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
const sendLogAlarmClick = useCallback(
|
|
(params) => {
|
|
const {
|
|
alarmDt,
|
|
alarmType,
|
|
clickFlag,
|
|
cnt,
|
|
logTpNo,
|
|
patncNm,
|
|
patnrId,
|
|
showId,
|
|
showNm,
|
|
} = params;
|
|
|
|
if (
|
|
!alarmDt ||
|
|
!alarmType ||
|
|
!clickFlag ||
|
|
!cnt ||
|
|
!logTpNo ||
|
|
!patncNm ||
|
|
!patnrId ||
|
|
!showId ||
|
|
!showNm
|
|
) {
|
|
console.error("sendLogAlarmClick invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
hstNm: params?.hstNm ?? "",
|
|
lgCatCd: params?.lgCatCd ?? "",
|
|
lgCatNm: params?.lgCatNm ?? "",
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-020 / 테마 상품 클릭 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (M) curationId 큐레이션 아이디
|
|
*
|
|
* (M) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 링크 타입 코드
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prdtExpsOrd 상품 노출 순번
|
|
*
|
|
* (M) prdtId 상품 아이디
|
|
*
|
|
* (M) prdtNm 상품 이름
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) shelfExpsOrd 쉘프 노출 순번
|
|
*
|
|
* (M) shelfId 쉘프 아이디
|
|
*
|
|
* (M) shelfNm 쉘프 이름
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
const sendLogThemeProduct = useCallback(
|
|
(params) => {
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.THEME_PRODUCT,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-100 / TOP contents 노출 이력
|
|
*
|
|
* (M) banrNo 배너 번호
|
|
*
|
|
* (M) banrTpNm 배너 유형 이름, Vertical / Horizontal
|
|
*
|
|
* (M) contId 컨텐츠 아이디
|
|
*
|
|
* (M) contNm 컨텐츠 이름
|
|
*
|
|
* (M) contTpNm 컨텐츠 타입 이름, live / image / Today's deals
|
|
*
|
|
* (M) dspyTpNm 디스플레이 유형 이름, Random / Rolling
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) expsOrd 노출 순서
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (M) linkTpCd 딥 링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) tmplCd 템플릿 코드 DSP002 01~03
|
|
*/
|
|
const sendLogTopContents = useCallback(
|
|
(params) => {
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
outDt: formatGMTString(new Date()),
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
const sendLogTerms = useCallback(
|
|
(params) => {
|
|
const { logTpNo } = params;
|
|
|
|
if (!logTpNo) {
|
|
console.error("sendLogTerms invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-102 / LG Account 로그인 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) lginTpNm 로그인 타입 이름 TV/ShopTime
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) usrNo 사용자 번호
|
|
*/
|
|
const sendLogLgAccountLogin = useCallback(
|
|
(params) => {
|
|
const { lginTpNm, usrNo } = params;
|
|
|
|
if (!lginTpNm || !usrNo) {
|
|
console.error("sendLogLgAccountLogin invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.LG_ACCOUNT_LOGIN,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력
|
|
*
|
|
* (M) btnNm 버튼 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
*/
|
|
const sendLogOrderBtnClick = useCallback(
|
|
(params) => {
|
|
const { btnNm } = params;
|
|
|
|
if (!btnNm) {
|
|
console.error("sendLogOrderBtnClick invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.ORDER_BTN_CLICK,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-104 / Order 취소/반품/교환 이력 (반품/교환 삭제)
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) reqRsn 요청 사유
|
|
*
|
|
* (M) reqTpNm 요청 유형 이름 ("Cancel", "Return", "Exchange")
|
|
*
|
|
*/
|
|
const sendLogOrderChange = useCallback(
|
|
(params) => {
|
|
const { reqRsn, reqTpNm } = params;
|
|
|
|
if (!reqRsn || !reqTpNm) {
|
|
console.error("sendLogOrderChange invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.ORDER_CHANGE,
|
|
nowMenu: nowMenuRef.current,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
/**
|
|
* IF-LGSP-LOG-110 / Featured Brands View 이력
|
|
*
|
|
* (O) catCd 파트너사 카테고리 코드
|
|
*
|
|
* (O) catNm 파트너사 카테고리 네임
|
|
*
|
|
* (O) crtrId 크리에이터 아이디
|
|
*
|
|
* (O) crtrNm 크리에이터 네임
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) srsId 시리즈 아이디
|
|
*
|
|
* (O) srsNm 시리즈 이름
|
|
*/
|
|
const sendLogFeaturedBrands = useCallback(
|
|
(params) => {
|
|
const { patncNm, patnrId } = params;
|
|
|
|
if (!patncNm || !patnrId) {
|
|
console.error("sendLogFeaturedBrands invalid params", params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
catCd: params.catCd ?? "",
|
|
catNm: params.catNm ?? "",
|
|
crtrId: params.crtrId ?? "",
|
|
crtrNm: params.crtrNm ?? "",
|
|
entryMenu: entryMenuRef.current,
|
|
logTpNo: LOG_TP_NO.BRANDS,
|
|
nowMenu: nowMenuRef.current,
|
|
patncNm,
|
|
patnrId,
|
|
srsId: params.srsId ?? "",
|
|
srsNm: params.srsNm ?? "",
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
},
|
|
[dispatch, entryMenuRef, nowMenuRef]
|
|
);
|
|
|
|
return {
|
|
sendLogLive,
|
|
sendLogVOD,
|
|
sendLogCuration,
|
|
sendLogSecondLayer,
|
|
sendLogGNB,
|
|
sendLogProductDetail,
|
|
sendLogDetail,
|
|
sendLogShopByMobile,
|
|
sendLogMyPageAlertFlag,
|
|
sendLogMyPageMyDelete,
|
|
sendLogMyPageNotice,
|
|
sendLogSearch,
|
|
sendLogSearchClick,
|
|
sendLogUpcomingFlag,
|
|
sendLogPartners,
|
|
sendLogAlarmPop,
|
|
sendLogAlarmClick,
|
|
sendLogThemeProduct,
|
|
sendLogTopContents,
|
|
sendLogTerms,
|
|
sendLogLgAccountLogin,
|
|
sendLogOrderBtnClick,
|
|
sendLogOrderChange,
|
|
sendLogFeaturedBrands,
|
|
};
|
|
}
|