(() => { const { EventManager, actions, CUSTOM_EVENT, utils } = ShopbySkin; const { myapp } = window; const { updateTokenConfig, memberAuth, refreshAuth } = utils; // eslint-disable-next-line complexity const detectWebView = () => { const { userAgent } = navigator; // iOS 웹뷰 감지 const isIOS = /iPhone|iPad|iPod/.test(userAgent); const isWebKit = /AppleWebKit/.test(userAgent); const isSafari = /Safari/.test(userAgent) || /Version\/[\d.]+.*Safari/.test(userAgent); // Safari 또는 Version/{version}.Safari 패턴을 포함하지 않는 경우 const isNotCriOS = !/CriOS/.test(userAgent); const isNotFxiOS = !/FxiOS/.test(userAgent); const isIOSWebView = isIOS && isWebKit && isNotCriOS && isNotFxiOS && !isSafari; // Android 웹뷰 감지 const isAndroid = /Android/.test(userAgent); const isAndroidWebView = isAndroid && /wv/.test(userAgent); return { isWebView: isIOSWebView || isAndroidWebView, }; }; const tokenConfig = { keepDefaultTokenTime: true, keepRefreshTokenTime: detectWebView().isWebView, }; updateTokenConfig(tokenConfig); const isMyappBridgePage = () => window.myapp?.helpers.isMyApp() && location.pathname.includes('/app/auth.html'); const getMobilePlatform = () => { if (!myapp?.helpers.isMyApp()) { return 'MOBILE_WEB'; } return myapp.utils.isIOS() ? 'IOS' : 'AOS'; }; document.addEventListener(CUSTOM_EVENT.CALL_COMMON_SHOP_API, async () => { const onlyInitApiClient = isMyappBridgePage(); const commonData = await actions.executeCommonAction(getMobilePlatform(), onlyInitApiClient); ShopbySkin.platform = getMobilePlatform(); EventManager.fire('PAGE_LOAD_COMPLETED', commonData); if (refreshAuth?.keepLogin() || !tokenConfig?.keepDefaultTokenTime) return; const currentAuth = memberAuth.get(); if (!currentAuth) return; memberAuth.set({ value: currentAuth, expires: memberAuth.defaultExpires(), // 엑세스 토큰 기본 유효 기간 }); }); })();