const { Handlebars } = ShopbySkin; /** * [ShopBy 오로라 모듈 버그 우회] * coupon-list 모듈 내부의 fetchCouponList()가 fetchCoupons() 호출 시 * sortDirection 파라미터를 API에 전달하지 않는 버그가 있음. * (propsParam에 저장은 하지만 실제 API 호출 시 누락됨) * * window.fetch를 가로채어 /coupons 요청에 desc=true를 강제 삽입하는 방식으로 우회. */ (() => { const _originalFetch = window.fetch; window.fetch = (url, options) => { if (typeof url === 'string' && /\/coupons(\?|$)/.test(url)) { // /coupons 혹은 /coupons? 일 경우에만 해당 const urlObj = new URL(url); urlObj.searchParams.set('desc', 'true'); return _originalFetch(urlObj.toString(), options); } return _originalFetch(url, options); }; })(); Handlebars.registerHelper('formatDatetime', (dateStr) => { if (!dateStr) return ''; const date = new Date(dateStr.replace(' ', 'T')); if (isNaN(date)) return dateStr; const pad = (n) => String(n).padStart(2, '0'); return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`; }); (() => { const { EventManager, pageHelper } = ShopbySkin; const myCouponListHelper = pageHelper.myCouponListHelper(); const searchParams = new URLSearchParams(location.search); const params = Object.fromEntries(searchParams.entries()); 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, visibleCloseBtn: 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()}`; }, }; document.querySelector('coupon-total-count')?.addEventListener('click', ({ target }) => { const action = target.getAttribute('shopby-action'); MODULE_ACTION_HANDLER[action]?.(); }); })();