(() => { const { EventManager, pageHelper, actions } = ShopbySkin; const myLikeProductListHelper = pageHelper.myLikeProductListHelper(); const searchParams = new URLSearchParams(location.search); const pageNumber = searchParams.get("pageNumber"); const pageSize = searchParams.get("pageSize"); const hasTotalCount = searchParams.get("hasTotalCount"); myLikeProductListHelper.initialize({ pageNumber, pageSize, hasTotalCount, }); const moduleActionHandler = { INQUIRE_PRODUCT: (_, target) => { const productNo = target .closest("[shopby-product-no]") ?.getAttribute("shopby-product-no"); const productName = target .closest("[shopby-product-name]") ?.getAttribute("shopby-product-name"); const imageUrl = target .closest("[shopby-image-url]") ?.getAttribute("shopby-image-url"); EventManager.fire("OPEN_LAYER_MODAL", { name: "product-inquiry-form", title: "상품문의", modalAddClass: "product-inquiry-form-modal", isFull: false, data: { productNo, productName, imageUrl, isModify: false, commonData: myLikeProductListHelper.commonData, }, onClose: ({ reason }) => { if (reason === "DID_SUBMIT") { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "상품문의가 등록됐습니다.", onClose: () => { location.reload(); }, }); } }, }); }, DELETE_LIKE_PRODUCT: (_, target) => { const productNo = target .closest("[shopby-product-no]") ?.getAttribute("shopby-product-no"); EventManager.fire("MODAL_CONFIRM_OPEN", { noticeType: "WARNING", message: `선택하신 상품을 삭제하시겠습니까?`, onConfirm: async () => { await actions.postProfileLikeByProductNos({ productNos: [productNo], }); EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "삭제되었습니다.", onClose: () => { location.reload(); }, }); }, }); }, DELETE_SELECTED_LIKE_PRODUCTS: (_, target) => { const selectedCount = target.getAttribute("shopby-selected-count"); const checkedProductNosAsString = target.getAttribute( "shopby-checked-product-nos-as-string" ); if (!Number(selectedCount)) { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "CAUTION", message: "선택하신 상품이 없습니다.", }); return; } const productNos = checkedProductNosAsString.split(","); EventManager.fire("MODAL_CONFIRM_OPEN", { noticeType: "WARNING", message: `선택하신 ${productNos.length}개의 상품을 삭제하시겠습니까?`, onConfirm: async () => { await actions.postProfileLikeByProductNos({ productNos }); EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "삭제되었습니다.", onClose: () => { location.reload(); }, }); }, }); }, ALERT_ERROR: (_) => { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "WARNING", message: "구매제한 상품입니다", }); }, }; document .querySelector("like-product-total-count") ?.addEventListener("click", ({ target }) => { const action = target.getAttribute("shopby-action"); moduleActionHandler[action]?.(myLikeProductListHelper, target); }); document .querySelector("like-product-list") ?.addEventListener("click", ({ target }) => { const action = target.getAttribute("shopby-action"); moduleActionHandler[action]?.(myLikeProductListHelper, target); }); })();