diff --git a/com.twin.app.shoptime/src/App/App.js b/com.twin.app.shoptime/src/App/App.js index 5e58879b..b91956e4 100644 --- a/com.twin.app.shoptime/src/App/App.js +++ b/com.twin.app.shoptime/src/App/App.js @@ -38,7 +38,6 @@ import { ricCode, } from '../api/apiConfig'; import TPopUp from '../components/TPopUp/TPopUp'; -import useLogService from '../hooks/useLogService'; import usePrevious from '../hooks/usePrevious'; import { checkValidCountry } from '../lunaSend/common'; import { lunaTest } from '../lunaSend/lunaTest'; @@ -51,6 +50,7 @@ import { import MainView from '../views/MainView/MainView'; import css from './App.module.less'; import { handleDeepLink } from './deepLinkHandler'; +import { sendLogSecondLayer } from '../actions/logActions'; let foreGroundChangeTimer = null; @@ -74,7 +74,6 @@ const disableConsole = () => { console.info = function () {}; }; function AppBase(props) { - const { sendLogSecondLayer } = useLogService(); const dispatch = useDispatch(); const panels = useSelector((state) => state.panels.panels); const httpHeader = useSelector((state) => state.common.httpHeader); @@ -104,6 +103,10 @@ function AppBase(props) { console.log("hide cursor"); }, 5000) ); + const _sendLogSecondLayer = useCallback((params)=>{ + dispatch(sendLogSecondLayer(params)); + },[]); + // called by [receive httpHeader, launch, relaunch] const initService = useCallback( (haveyInit = true) => { @@ -143,7 +146,7 @@ function AppBase(props) { // pyh todo, edit dispatch( - handleDeepLink(launchParams?.contentTarget, sendLogSecondLayer) + handleDeepLink(launchParams?.contentTarget, _sendLogSecondLayer) ); clearLaunchParams(); diff --git a/com.twin.app.shoptime/src/actions/logActions.js b/com.twin.app.shoptime/src/actions/logActions.js index 61da680f..900848fa 100644 --- a/com.twin.app.shoptime/src/actions/logActions.js +++ b/com.twin.app.shoptime/src/actions/logActions.js @@ -634,4 +634,885 @@ export const sendLogPartners = (params) => (dispatch, getState) => { }; dispatch(postLog(newParams)); -}; \ No newline at end of file +}; + + /** + * IF-LGSP-LOG-010 / Reminder - Alert On/Off + * + * (M) alertFlag 설정 여부, On / Off + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + */ + export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => { + const { alertFlag } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!alertFlag) { + console.error("sendLogMyPageAlertFlag invalid params", params); + return; + } + + const newParams = { + alertFlag, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.MY_PAGE_ALERT_FLAG, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력 + * + * (M) cnt 삭제 개수 + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + */ + export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => { + const { cnt } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!cnt) { + console.error("sendLogMyPageMyDelete invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.MY_PAGE_MY_DELETE, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * IF-LGSP-LOG-012 / My Page Notice View + * + * (M) entryMenu 진입 메뉴 + * + * (M) itemId Notice/FAQ 등록 번호 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMneu 현재 메뉴 + * + * (M) title Notice/FAQ 제목 + */ + export const sendLogMyPageNotice = (params) => (dispatch, getState) => { + const { itemId, title } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!itemId || !title) { + console.error("sendLogNoticeView invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.MY_PAGE_NOTICE, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * IF-LGSP-LOG-013 / 검색 이력 + * + * (M) entryMenu 진입 메뉴 + * + * (M) inputFlag 입력 구분, keyword / input + * + * (M) itemCnt 상춤 개수 + * + * (M) keyword 검색어 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + * + * (M) showCnt 영상 개수 + * + * (M) themeCnt 테마 개수 + */ + export const sendLogSearch = (params) => (dispatch, getState) => { + const { inputFlag, itemCnt, keyword, showCnt, themeCnt } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!inputFlag || !itemCnt || !keyword || !showCnt || !themeCnt) { + console.error("sendLogSearch invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.SEARCH, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * 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 방송 이름 + */ + export const sendLogSearchClick = (params) => (dispatch, getState) => { + const { keyword, patncNm, patnrId } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!keyword || !patncNm || !patnrId) { + console.error("sendLogSearchClick invalid params", params); + return; + } + + const newParams = { + curationId: params?.curationId ?? "", + curationNm: params?.curationNm ?? "", + dcAfPrice: params?.dcAfPrice ?? "", + entryMenu: entryMenu, + keyword, + lgCatNm: params?.lgCatNm ?? "", + logTpNo: LOG_TP_NO.SEARCH_CLICK, + nowMenu: nowMenu, + patncNm, + patnrId, + prdtId: params?.prdtId ?? "", + prdtNm: params?.prdtNm ?? "", + showId: params?.showId ?? "", + showNm: params?.showNm ?? "", + }; + + dispatch(postLog(newParams)); + }; + + /** + * 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 방송 이름 + */ + 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 {entryMenu, nowMenu} = getState().common.menu; + + if (!items) { + console.error("sendLogUpcomingFlag invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + // hstNm: params?.hstNm ?? "", + logTpNo: LOG_TP_NO.UPCOMING_FLAG, + // lgCatCd: params?.lgCatCd ?? "", + // lgCatNm: params?.lgCatNm ?? "", + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * 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 방송 이름 + */ + export const sendLogAlarmPop = (params) => (dispatch, getState) => { + const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } = + params; + const {entryMenu, nowMenu} = getState().common.menu; + + if ( + !alarmDt || + !alarmType || + !cnt || + !patncNm || + !patnrId || + !showId || + !showNm + ) { + console.error("sendLogAlarmPop invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + hstNm: params?.hstNm ?? "", + lgCatCd: params?.lgCatCd ?? "", + lgCatNm: params?.lgCatNm ?? "", + logTpNo: LOG_TP_NO.ALARM_POP, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + /** + * 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 방송 이름 + */ + export const sendLogAlarmClick = (params) => (dispatch, getState) => { + const { + alarmDt, + alarmType, + clickFlag, + cnt, + logTpNo, + patncNm, + patnrId, + showId, + showNm, + } = params; + const {entryMenu, nowMenu} = getState().common.menu; + if ( + !alarmDt || + !alarmType || + !clickFlag || + !cnt || + !logTpNo || + !patncNm || + !patnrId || + !showId || + !showNm + ) { + console.error("sendLogAlarmClick invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + hstNm: params?.hstNm ?? "", + lgCatCd: params?.lgCatCd ?? "", + lgCatNm: params?.lgCatNm ?? "", + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * 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 여부 + */ + export const sendLogThemeProduct = (params) => (dispatch, getState) => { + const {entryMenu, nowMenu} = getState().common.menu; + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.THEME_PRODUCT, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * 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 + */ + export const sendLogTopContents = (params) => (dispatch, getState) => { + const {entryMenu, nowMenu} = getState().common.menu; + const newParams = { + ...params, + entryMenu: entryMenu, + outDt: formatGMTString(new Date()), + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + /** + * IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력 + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + */ + export const sendLogTerms = (params) => (dispatch, getState) => { + const { logTpNo } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!logTpNo) { + console.error("sendLogTerms invalid params", params); + return; + } + + const newParams = { + entryMenu: entryMenu, + logTpNo, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * IF-LGSP-LOG-102 / LG Account 로그인 이력 + * + * (M) entryMenu 진입 메뉴 + * + * (M) nowMenu 현재 메뉴 + * + * (M) lginTpNm 로그인 타입 이름 TV/ShopTime + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) usrNo 사용자 번호 + */ + export const sendLogLgAccountLogin = (params) => (dispatch, getState) => { + const { lginTpNm, usrNo } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!lginTpNm || !usrNo) { + console.error("sendLogLgAccountLogin invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.LG_ACCOUNT_LOGIN, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력 + * + * (M) btnNm 버튼 이름 + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + * + */ + export const sendLogOrderBtnClick = (params) => (dispatch, getState) => { + const { btnNm } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!btnNm) { + console.error("sendLogOrderBtnClick invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.ORDER_BTN_CLICK, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * IF-LGSP-LOG-104 / Order 취소/반품/교환 이력 (반품/교환 삭제) + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + * + * (M) reqRsn 요청 사유 + * + * (M) reqTpNm 요청 유형 이름 ("Cancel", "Return", "Exchange") + * + */ + export const sendLogOrderChange = (params) => (dispatch, getState) => { + const { reqRsn, reqTpNm } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + if (!reqRsn || !reqTpNm) { + console.error("sendLogOrderChange invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.ORDER_CHANGE, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + }; + + /** + * IF-LGSP-LOG-108 / 결제 페이지 진입 이력 + * + * (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호") + * + * (M) cpnSno 쿠폰 일련번호 + * + * (M) cpnTtl 쿠폰 제목 + * + * (M) dcAftrPrc 할인 후 가격 + * + * (M) dcBefPrc 할인 전 가격 + * + * (M) entryMenu 진입 메뉴 + * + * (M) lgCatCd 카테고리 코드 + * + * (M) lgCatNm 카테고리 이름 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + * + * (M) patncNm 파트너 이름 + * + * (M) patnrId 파트너 아이디 + * + * (M) prodId 상품 아이디 + * + * (M) prodNm 상품 이름 + * + * (M) prodOptSno 상품 옵션 일련번호 + * + * (M) qty 수량 + */ + export const sendLogPaymentEntry = (params) => (dispatch, getState) => { + const { + cartTpSno, + // cpnSno, + // cpnTtl, + dcAftrPrc, + dcBefPrc, + // lgCatCd, + // lgCatNm, + patncNm, + patnrId, + prodId, + prodNm, + qty, + } = params; + const {entryMenu, nowMenu} = getState().common.menu; + if ( + !cartTpSno || + // !cpnSno || + // !cpnTtl || + !dcAftrPrc || + !dcBefPrc || + // !lgCatCd || + // !lgCatNm || + !patncNm || + !patnrId || + !prodId || + !prodNm || + !qty + ) { + console.error("sendLogPaymentEntry invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.PAYMENT_ENTRY, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * IF-LGSP-LOG-109 / 결제 완료 이력 + * + * (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호") + * + * (M) cpnSno 쿠폰 일련번호 + * + * (M) cpnTtl 쿠폰 제목 + * + * (M) dcAftrPrc 할인 후 가격 + * + * (M) dcBefPrc 할인 전 가격 + * + * (M) entryMenu 진입 메뉴 + * + * (M) lgCatCd 카테고리 코드 + * + * (M) lgCatNm 카테고리 이름 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + * + * (M) patncNm 파트너 이름 + * + * (M) patnrId 파트너 아이디 + * + * (M) prodId 상품 아이디 + * + * (M) prodNm 상품 이름 + * + * (O) prodOptSno 상품 옵션 일련번호 + * + * (M) qty 수량 + * + * (M) usrNo 사용자 번호 + */ + export const sendLogPaymentComplete = (params) => (dispatch, getState) => { + const { + cartTpSno, + // cpnSno, + // cpnTtl, + dcAftrPrc, + dcBefPrc, + // lgCatCd, + // lgCatNm, + patncNm, + patnrId, + prodId, + prodNm, + qty, + usrNo, + } = params; + const {entryMenu, nowMenu} = getState().common.menu; + if ( + !cartTpSno || + // !cpnSno || + // !cpnTtl || + !dcAftrPrc || + !dcBefPrc || + // !lgCatCd || + // !lgCatNm || + !patncNm || + !patnrId || + !prodId || + !prodNm || + !qty || + !usrNo + ) { + console.error("sendLogPaymentComplete invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.PAYMENT_COMPLETE, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + + /** + * 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 시리즈 이름 + */ + export const sendLogFeaturedBrands = (params) => (dispatch, getState) => { + const { patncNm, patnrId } = params; + const {entryMenu, nowMenu} = getState().common.menu; + + 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: entryMenu, + logTpNo: LOG_TP_NO.BRANDS, + nowMenu: nowMenu, + patncNm, + patnrId, + srsId: params.srsId ?? "", + srsNm: params.srsNm ?? "", + }; + + dispatch(postLog(newParams)); + } + /** + * IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력 + * + * (M) btnNm 버튼 이름 + * + * (M) etnryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + */ + export const sendLogMyInfoEdit = (params) => (dispatch, getState) => { + const { btnNm } = params; + const {entryMenu, nowMenu} = getState().common.menu; + if (!btnNm) { + console.error("sendLogMyInfoEdit invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.MY_INFO_EDIT, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } + /** + * IF-LGSP-LOG-112 / Check out 화면 버튼 클릭 이력 + * + * (M) btnNm 버튼 이름 + * + * (M) entryMenu 진입 메뉴 + * + * (M) logTpNo 로그 타입 넘버 + * + * (M) nowMenu 현재 메뉴 + */ + export const sendLogCheckOutBtnClick = (params) => (dispatch, getState) => { + const { btnNm } = params; + const {entryMenu, nowMenu} = getState().common.menu; + if (!btnNm) { + console.error("sendLogCheckOutBtnClick invalid params", params); + return; + } + + const newParams = { + ...params, + entryMenu: entryMenu, + logTpNo: LOG_TP_NO.CHECKOUT_BTN_CLICK, + nowMenu: nowMenu, + }; + + dispatch(postLog(newParams)); + } \ No newline at end of file diff --git a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx index bd1504d7..be1cab12 100644 --- a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx +++ b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx @@ -46,7 +46,6 @@ import { clearCurationCoupon, setEventIssueReq, } from '../../actions/eventActions'; -import useLogService from '../../hooks/useLogService'; import { ACTIVE_POPUP, LOG_TP_NO, @@ -58,6 +57,7 @@ import TPopUp from '../TPopUp/TPopUp'; import HistoryPhoneNumber from './HistoryPhoneNumber/HistoryPhoneNumber'; import css from './MobileSendPopUp.module.less'; import SMSNumKeyPad from './SMSNumKeyPad'; +import { sendLogShopByMobile } from '../../actions/logActions'; const Container = SpotlightContainerDecorator( { enterTo: "last-focused" }, @@ -92,7 +92,6 @@ export default function MobileSendPopUp({ shopByMobileLogRef, spotlightId, }) { - const { sendLogShopByMobile } = useLogService(); const deviceInfo = useSelector((state) => state.device.deviceInfo); const [mobileNumber, setMobileNumber] = useState(""); const [recentSentNumber, setRecentSentNumber] = useState([]); @@ -425,7 +424,7 @@ export default function MobileSendPopUp({ trmsAgrFlag: "Y", }; - sendLogShopByMobile(params); + dispatch(sendLogShopByMobile(params)); shopByMobileLogRef.current = null; if (spotlightId) { @@ -437,7 +436,6 @@ export default function MobileSendPopUp({ return () => clearTimeout(timer); } }, [ - sendLogShopByMobile, shopByMobileLogRef, smsRetCodeResData, regDeviceInfoRetCode, diff --git a/com.twin.app.shoptime/src/components/TabLayout/TabLayout.jsx b/com.twin.app.shoptime/src/components/TabLayout/TabLayout.jsx index 86d4700a..1841b4d7 100644 --- a/com.twin.app.shoptime/src/components/TabLayout/TabLayout.jsx +++ b/com.twin.app.shoptime/src/components/TabLayout/TabLayout.jsx @@ -32,7 +32,6 @@ import { updateSpotlightId, } from '../../actions/homeActions'; import { resetPanels } from '../../actions/panelActions'; -import useLogService from '../../hooks/useLogService'; import usePrevious from '../../hooks/usePrevious'; import useScrollTo from '../../hooks/useScrollTo'; import { panel_names } from '../../utils/Config'; diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx index f39cc71f..696e00fd 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx @@ -27,7 +27,6 @@ import TDropDown from "../../components/TDropDown/TDropDown"; import THeader from "../../components/THeader/THeader"; import TPanel from "../../components/TPanel/TPanel"; import TVerticalPagenator from "../../components/TVerticalPagenator/TVerticalPagenator"; -import useLogService from "../../hooks/useLogService"; import usePrevious from "../../hooks/usePrevious"; import { CATEGORY_DATA_MAX_RESULTS_LIMIT, diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx index c80887ce..92fc40c9 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx @@ -26,7 +26,6 @@ import THeader from "../../components/THeader/THeader"; import TPanel from "../../components/TPanel/TPanel"; import TPopUp from "../../components/TPopUp/TPopUp"; import TQRCode from "../../components/TQRCode/TQRCode"; -import useLogService from "../../hooks/useLogService"; import useScrollTo from "../../hooks/useScrollTo"; import * as Config from "../../utils/Config"; import { $L, scaleH, scaleW } from "../../utils/helperMethods"; @@ -37,14 +36,9 @@ import FixedSideBar from "./container/FixedSideBar"; import InformationContainer from "./container/InformationContainer"; import OrderItemsSideBar from "./container/OrderItemsSideBar"; import SummaryContainer from "./container/SummaryCotainer"; +import {sendLogCheckOutBtnClick, sendLogGNB, sendLogPaymentEntry, sendLogMyInfoEdit} from "../../actions/logActions"; export default function CheckOutPanel({ panelInfo }) { - const { - sendLogCheckOutBtnClick, - sendLogGNB, - sendLogPaymentEntry, - sendLogMyInfoEdit, - } = useLogService(); const dispatch = useDispatch(); const panels = useSelector((state) => state.panels.panels); const { userNumber } = useSelector( @@ -98,8 +92,8 @@ export default function CheckOutPanel({ panelInfo }) { nowMenu = Config.LOG_MENU.CHECKOUT_PIN_CODE; } - sendLogGNB(nowMenu); - }, [isOrderSuccessful, placeOrderPopup, popupVisible, sendLogGNB]); + dispatch(sendLogGNB(nowMenu)); + }, [isOrderSuccessful, placeOrderPopup, popupVisible]); useEffect(() => { isMounted.current = true; @@ -205,21 +199,21 @@ export default function CheckOutPanel({ panelInfo }) { const toggleOrderSideBar = useCallback(() => { if (!orderSideBarOpen) { - sendLogCheckOutBtnClick({ btnNm: "ORDER ITEMS" }); + dispatch(sendLogCheckOutBtnClick({ btnNm: "ORDER ITEMS" })); } setOrderSideBarOpen((prev) => !prev); setTimeout(() => Spotlight.focus(), 0); - }, [orderSideBarOpen, sendLogCheckOutBtnClick]); + }, [orderSideBarOpen]); const toggleOfferSideBar = useCallback(() => { if (!offerSideBarOpen) { - sendLogCheckOutBtnClick({ btnNm: "OFFERS & PROMOTION" }); + dispatch(sendLogCheckOutBtnClick({ btnNm: "OFFERS & PROMOTION" })); } setOfferSideBarOpen((prev) => !prev); setTimeout(() => Spotlight.focus(), 0); - }, [offerSideBarOpen, sendLogCheckOutBtnClick]); + }, [offerSideBarOpen]); const onClosePopup = useCallback(() => { setPlaceOrderPopup(false); @@ -300,15 +294,15 @@ export default function CheckOutPanel({ panelInfo }) { const doSendLogPaymentEntry = useCallback(() => { if (panelInfo?.logInfo) { - sendLogPaymentEntry(panelInfo.logInfo); + dispatch(sendLogPaymentEntry(panelInfo.logInfo)); } }, [panelInfo?.logInfo]); const doSendLogMyInfoEdit = useCallback( (btnNm) => { - sendLogMyInfoEdit({ btnNm }); + dispatch(sendLogMyInfoEdit({ btnNm })); }, - [sendLogMyInfoEdit] + [] ); return (