(() => {
const { EventManager, pageHelper } = ShopbySkin;
const myCouponListHelper = pageHelper.myCouponListHelper();
const datePickerHelper = pageHelper.datePickerHelper();
const searchParams = new URLSearchParams(location.search);
const params = Object.fromEntries(searchParams.entries());
datePickerHelper.initialize();
myCouponListHelper.initialize({
...params,
tab: params.usable === 'false' ? 'UNISSUABLE' : 'ISSUABLE',
});
const MODULE_ACTION_HANDLER = {
REGISTER: () => {
EventManager.fire('OPEN_LAYER_MODAL', {
name: 'coupon-register-form',
title: '쿠폰 번호 입력',
modalAddClass: 'coupon-registration-modal',
isFull: false,
onClose: ({ reason }) => {
if (reason === 'DID_SUBMIT') {
EventManager.fire('MODAL_ALERT_OPEN', {
noticeType: 'SUCCESS',
message: '쿠폰 등록이 완료되었습니다.',
onClose: () => {
location.reload();
},
});
}
},
});
},
SEARCH_ACCUMULATION: () => {
const params = new URLSearchParams(location.search);
location.href = `${location.origin}${location.pathname}?${params.toString()}`;
},
USE_COUPON: async (target) => {
const couponListModule = document.querySelector('coupon-list');
const couponIssueNo = target.getAttribute('shopby-coupon-issue-no');
let noticeType, message;
try {
await couponListModule.useGiftCoupon(couponIssueNo);
noticeType = 'SUCCESS';
message = '혜택 지급이 완료되었습니다.';
} catch (error) {
noticeType = 'CAUTION';
message = `${error.error.serverError.message}`;
}
EventManager.fire('MODAL_ALERT_OPEN', {
noticeType,
message,
onClose: () => {
location.reload();
},
});
},
};
document.querySelector('coupon-total-count')?.addEventListener('click', ({ target }) => {
const action = target.getAttribute('shopby-action');
MODULE_ACTION_HANDLER[action]?.();
});
const dateTypeSelectorModule = document.querySelector('date-search');
dateTypeSelectorModule?.addEventListener('click', ({ target }) => {
const actionTarget = target.getAttribute('shopby-action');
if (!actionTarget) {
return;
}
MODULE_ACTION_HANDLER[actionTarget]();
});
const couponListModule = document.querySelector('coupon-list');
couponListModule?.addEventListener('click', ({ target }) => {
const actionTarget = target.getAttribute('shopby-action');
if (!actionTarget) {
return;
}
MODULE_ACTION_HANDLER[actionTarget](target);
});
})();