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