Files
shoptime/com.twin.app.shoptime/src/hooks/useLogService.js
2024-07-08 10:17:05 +09:00

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,
};
}