(() => { 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, }); let shopbyCommonData = {}; EventManager.on('PAGE_LOAD_COMPLETED', (commonData) => { shopbyCommonData = commonData; }); 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(); }, }); }, }); }, GRADE_BENEFIT: () => { EventManager.fire('OPEN_LAYER_MODAL', { name: 'grade-benefit-guide', title: '등급혜택 안내', isFull: false, data: { commonData: shopbyCommonData, }, }); }, }; 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); }); document .querySelector('profile-summary') ?.addEventListener('click', ({ target }) => { const actionTarget = target.getAttribute('shopby-action'); if (!actionTarget) { return; } moduleActionHandler[actionTarget]({ target }); }); })();