import { commonFetch } from '#layers/utils/apiUtil' import { usePageDataStore } from '#layers/stores/usePageDataStore' import { useGetGameAlias } from '#layers/composables/useGetGameAlias' import { usePathResolver } from '#layers/composables/usePathResolver' import type { PageDataResponse } from '#layers/types/api/pageData' export default defineNuxtRouteMiddleware(async (to, _from) => { const config = useRuntimeConfig() const store = usePageDataStore() const gameAlias = useGetGameAlias() const { getPathAfterLanguage } = usePathResolver() const headers = useRequestHeaders() const langCode = ssrGetFinalLocale(to.path, headers) const stoveApiBaseUrl = config.public.stoveApiUrl const apiUrl = `${stoveApiBaseUrl}/pub-comm/v2.0/template/page` try { const pageUrl = getPathAfterLanguage(to.path) console.log("🚀 ~ pageUrl:", pageUrl) // pageUrl이 빈값이거나 null이면 /brand로 리다이렉트 if (!pageUrl || pageUrl === '' || pageUrl === '/') { return navigateTo(`/${langCode}/brand`, { replace: true }) } const queryParams: Record = { game_domain: gameAlias, lang_code: langCode, page_url: pageUrl, _t: Date.now().toString(), // 캐시 무효화를 위한 타임스탬프 } console.log("🚀 ~ queryParams:", queryParams) const response = (await commonFetch('GET', apiUrl, { query: queryParams, loading: true, })) as PageDataResponse | null if (response?.code === 0 && 'value' in response) { const cleanData = JSON.parse(JSON.stringify(response.value)) store.setPageData(cleanData) } else { store.clearPageData() } } catch (error) { console.error(error) store.clearPageData() } })