[api, actions] logActions, TLogEvent 추가

This commit is contained in:
younghoon100.park
2024-04-25 17:09:53 +09:00
parent daa03e4a65
commit 523d9df071
2 changed files with 246 additions and 0 deletions

View File

@@ -0,0 +1,154 @@
import { URLS } from "../api/apiConfig";
import { clearLaunchParams, getLaunchParams } from "../utils/helperMethods";
import { TLogEvent } from "../api/TLogEvent";
import { LOG_MENU_NAME, LOG_TEMPLATE_NUMBER } from "../utils/Config";
/**
* IG-LGSP-LOG-001 / Live 시청 이력
*
* (M) entryMenu 진입 메뉴
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 네임
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 네임
*
* (M) patnrId 파트너 아이디
*
* (M) showId 쇼 아이디
*
* (M) showNm 쇼 네임
*
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
*
* (M) watchEndDt 시청 종료 시간
*
* (M) watchStrtDt 시청 시작 시간
*/
export const postLogLive = (props) => (dispatch, getState) => {
const { logTpNo } = props;
const params = {
...props,
entryMenu: props.entryMenu ?? "",
lgCatCd: props.lgCatCd ?? "",
lgCatNm: props.lgCatNm ?? "",
nowMenu: props.nowMenu ?? "",
patncNm: props.patncNm ?? "",
patnrId: props.patnrId ?? "",
showId: props.showId ?? "",
showNm: props.showNm ?? "",
vdoTpNm: props.vdoTpNm ?? "",
watchEndDt: props.watchEndDt ?? "",
watchStrtDt: props.watchStrtDt ?? "",
};
const onSuccess = (response) => {
console.log("", response);
console.log("sendLogLive onSuccess", JSON.parse(response.config.data));
};
const onFail = (error) => {
console.error("sendLogLive onFail", error);
};
TLogEvent(
dispatch,
getState,
"post",
URLS.LOG_LIVE,
{},
params,
onSuccess,
onFail
);
};
/**
* IF-LGSP-LOG-003 / Curations View 이력
*
* (O) cnttTpNm 컨텐츠 타입 네임 "Show" / "item"
*
* (M) curationId 큐레이션 아이디
*
* (M) curationNm 큐레이션 네임
*
* (M) entryMenu 진입 메뉴
*
* (M) expsOrd 노출 순서
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 네임
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 네임
*
* (M) patnrId 파트너 아이디
*
* (O) sortTpNm 정렬 타입 네임 "popular" / "new"
*/
export const postLogQuration = (props) => (dispatch, getState) => {
const { logTpNo } = props;
let menu;
switch (logTpNo) {
case LOG_TEMPLATE_NUMBER.CURATION.HOT_PICKS:
menu = LOG_MENU_NAME.MENU_HOTPICKS;
break;
case LOG_TEMPLATE_NUMBER.CURATION.ON_SALE:
menu = LOG_MENU_NAME.MENU_ONSALE;
break;
case LOG_TEMPLATE_NUMBER.CURATION.HOME:
menu = LOG_MENU_NAME.MENU_HOME;
break;
case LOG_TEMPLATE_NUMBER.CURATION.CATEGORY:
menu = LOG_MENU_NAME.MENU_SUBPAGE_CATEGORY;
break;
default:
break;
}
const params = {
...props,
cnttTpNm: props.cnttTpNm ?? "",
curationId: props.curationId ?? "",
curationNm: props.curationNm ?? "",
entryMenu: props.entryMenu ?? menu,
expsOrd: props.expsOrd ?? "",
lgCatCd: props.lgCatCd ?? "",
lgCatNm: props.lgCatNm ?? "",
nowMenu: props.nowMenu ?? menu,
patncNm: props.patncNm ?? "",
patnrId: props.patnrId ?? "",
sortTpNm: props.sortTpNm ?? "",
};
const onSuccess = (response) => {
console.log("sendLogQuration onSuccess", JSON.parse(response.config.data));
};
const onFail = (error) => {
console.error("sendLogQuration onFail", error);
};
TLogEvent(
dispatch,
getState,
"post",
URLS.LOG_CURATION,
{},
params,
onSuccess,
onFail
);
};

View File

@@ -0,0 +1,92 @@
import axios from "axios";
import { getUrl, URLS } from "./apiConfig";
import { clearLaunchParams, getLaunchParams } from "../utils/helperMethods";
import { createQueryString } from "../utils/helperMethods";
export const TLogEvent = (
dispatch,
getState,
type,
baseUrl,
urlParams = {},
params = {},
onSuccess,
onFail
) => {
const httpHeader = getState().common.httpHeader;
const appStatus = getState().common.appStatus;
const AUTHORIZATION = { headers: { ...httpHeader } };
const { cntry_cd: cntryCd, plat_cd: platCd, prod_cd: prodCd } = httpHeader;
const { deviceId: dvcId } = appStatus;
const dvcTp = "tv";
if (typeof window === "object") {
let url = Array.isArray(baseUrl)
? getUrl(getState, baseUrl[0])
: getUrl(getState, baseUrl);
if (!url) {
return;
}
// pyh 수정
if (type === "get") {
const _urlparams = createQueryString(urlParams);
url += _urlparams ? `?${_urlparams}` : "";
}
let linkTpCd = "";
// pyh 수정
if (httpHeader) {
const launchParams = getLaunchParams();
if (launchParams?.contentTarget) {
const tokens = launchParams.contentTarget.split("_");
if (tokens[0] === "V3") {
linkTpCd = tokens[1];
}
}
}
const model = {
...params,
adId: "",
cntryCd,
dvcId,
dvcTp,
linkTpCd,
platCd,
prodCd,
};
let axiosInstance;
switch (type) {
case "get":
axiosInstance = axios.get(url, AUTHORIZATION);
break;
case "post":
axiosInstance = axios.post(url, model, AUTHORIZATION);
break;
}
if (axiosInstance) {
axiosInstance
.then((res) => {
if (onSuccess) {
onSuccess(res);
}
})
.catch((error) => {
if (onFail) {
onFail(error);
}
});
// .finally(clearLaunchParams);
}
}
};