diff --git a/app/app.vue b/app/app.vue index 8f17a97..18f86a5 100644 --- a/app/app.vue +++ b/app/app.vue @@ -14,8 +14,8 @@ const modalStore = useModalStore() const scrollStore = useScrollStore() const { setGameData } = gameDataStore -const { gameName, gaCode } = storeToRefs(gameDataStore) const { confirm, alert } = modalStore +const { gameName, gaCode } = storeToRefs(gameDataStore) const { scrollGnbPosition } = storeToRefs(scrollStore) // favicon 링크 생성 헬퍼 @@ -80,7 +80,7 @@ const createMetaTags = (metaTag: Partial = {}) => { } // CSS 변수 생성 헬퍼 -const createCssVariable = (keyColorJson: GameDataKeyColors) => { +const createStyleCss = (keyColorJson: GameDataKeyColors) => { const colorVariables = Object.entries(keyColorJson) .filter(([key, value]) => key && value != null) .map(([key, value]) => `--${key}: ${value};`) @@ -94,8 +94,11 @@ const setupGameHead = (data: GameDataValue) => { try { const metaTag: Partial = data.meta_tag_json ?? {} const designTheme = data.design_theme === 1 ? 'light' : 'dark' - const styleLinks = createStyleLinks(data.favicon_json) - const cssVariables = createCssVariable(data.key_color_json) + const styleLinks = createStyleLinks( + data.favicon_json, + data?.game_font?.font_path + ) + const styleCss = createStyleCss(data.key_color_json) useHead({ title: metaTag.page_title ?? '', @@ -108,7 +111,7 @@ const setupGameHead = (data: GameDataValue) => { link: styleLinks, style: [ { - innerHTML: cssVariables, + innerHTML: styleCss, id: 'game-css-variables', }, ], diff --git a/app/pages/inspection/index.vue b/app/pages/inspection/index.vue index 4c55e25..86d570b 100644 --- a/app/pages/inspection/index.vue +++ b/app/pages/inspection/index.vue @@ -56,80 +56,24 @@ >
- - - - {{ tm('Inspection_Community_Btn') }} + {{ tm('Inspection_Community_Btn') }} - - -
- - {{ tm('Txt_Game_Start') }} - - - - - - - - {{ tm('Txt_Game_Start') }} - - - - - -
+ + + {{ tm('Txt_Game_Start') }} +
@@ -137,7 +81,6 @@

{{ @@ -147,18 +90,23 @@ }}

- - {{ getButtonText(btn.platform) }} - + + {{ getButtonText(market) }} + +
@@ -170,6 +118,8 @@ diff --git a/layers/components/blocks/slide/Arrows.vue b/layers/components/blocks/Button/SlideArrows.vue similarity index 100% rename from layers/components/blocks/slide/Arrows.vue rename to layers/components/blocks/Button/SlideArrows.vue diff --git a/layers/components/blocks/DatePicker.vue b/layers/components/blocks/DatePicker.vue index 97479c3..109ad5d 100644 --- a/layers/components/blocks/DatePicker.vue +++ b/layers/components/blocks/DatePicker.vue @@ -365,7 +365,7 @@ onMounted(() => { > diff --git a/layers/components/blocks/modal/Alert.vue b/layers/components/blocks/modal/Alert.vue index 1658dbb..a99446a 100644 --- a/layers/components/blocks/modal/Alert.vue +++ b/layers/components/blocks/modal/Alert.vue @@ -42,11 +42,11 @@ const handleOutsideClick = () => { >

- {{ props.confirmButtonText || tm('Text_Confirm') }} - +
diff --git a/layers/components/blocks/modal/Confirm.vue b/layers/components/blocks/modal/Confirm.vue index 2438d77..6088e7d 100644 --- a/layers/components/blocks/modal/Confirm.vue +++ b/layers/components/blocks/modal/Confirm.vue @@ -42,17 +42,17 @@ const handleOutsideClick = () => { >

- {{ props.cancelButtonText || tm('Text_Cancel') }} - - + {{ props.confirmButtonText || tm('Text_Confirm') }} - +
diff --git a/layers/components/layouts/Header.vue b/layers/components/layouts/Header.vue index afa1d77..5ff43a4 100644 --- a/layers/components/layouts/Header.vue +++ b/layers/components/layouts/Header.vue @@ -374,7 +374,6 @@ onMounted(() => {
diff --git a/layers/middleware/init.route.global.ts b/layers/middleware/init.route.global.ts index 31887c2..d79e98e 100644 --- a/layers/middleware/init.route.global.ts +++ b/layers/middleware/init.route.global.ts @@ -6,7 +6,7 @@ export default defineNuxtRouteMiddleware(to => { if (to.path.includes('/error')) return // inspection 페이지는 실행X ----- - if (to.path.includes('inspection')) return + if (to.path.includes('/inspection')) return const gameDataStore = useGameDataStore() const { langCodes, intro } = storeToRefs(gameDataStore) diff --git a/layers/middleware/pageData.global.ts b/layers/middleware/pageData.global.ts index 9fd5fc0..a6e7662 100644 --- a/layers/middleware/pageData.global.ts +++ b/layers/middleware/pageData.global.ts @@ -14,7 +14,7 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { if (to.path.includes('/error')) return // inspection 페이지는 실행X ----- - if (to.path.includes('inspection')) return + if (to.path.includes('/inspection')) return const gameDataStore = useGameDataStore() const pageDataStore = usePageDataStore() diff --git a/layers/server/middleware/gameData.ts b/layers/server/middleware/gameData.ts index 978901b..a1ac9b2 100644 --- a/layers/server/middleware/gameData.ts +++ b/layers/server/middleware/gameData.ts @@ -140,7 +140,6 @@ export default defineEventHandler(async event => { } const stoveApiServerBaseUrl = runtimeConfig.public.stoveApiUrlServer - const baseDomain = runtimeConfig.public.baseDomain let gameDataResponse: GameDataResponse | null = null let gameDataLangCodes: string[] | null = null @@ -182,7 +181,10 @@ export default defineEventHandler(async event => { // 1-1. 정적 파일 패스 if (isStaticFile(event.path)) return - // 1-2. 특정 경로 패스 (API, 리소스) + // 1-2. /inspection 패스 + if (fullPath.includes('/inspection')) return + + // 1-3. 특정 경로 패스 (API, 리소스) if (shouldSkipPath(fullPath)) return // 캐시 키 생성 (게임 ID 포함하여 충돌 방지) diff --git a/layers/stores/useGameDataStore.ts b/layers/stores/useGameDataStore.ts index d63c5fa..72fab36 100644 --- a/layers/stores/useGameDataStore.ts +++ b/layers/stores/useGameDataStore.ts @@ -6,17 +6,22 @@ export const useGameDataStore = defineStore('gameData', () => { gameId: null as GameDataValue['game_id'] | null, gameCode: null as GameDataValue['game_code'] | null, gameName: null as GameDataValue['game_name'] | null, + stoveGnbJson: null as GameDataValue['stove_gnb_json'] | null, langCodes: null as GameDataValue['lang_codes'] | null, defaultLangCode: null as GameDataValue['default_lang_code'] | null, gaCode: null as GameDataValue['ga_code'] | null, platformType: null as GameDataValue['platform_type'] | null, osType: null as GameDataValue['os_type'] | null, + theme: null as 'light' | 'dark' | null, intro: null as GameDataValue['intro'] | null, imgJson: null as GameDataValue['img_json'] | null, snsJson: null as GameDataValue['sns_json'] | null, urlJson: null as GameDataValue['url_json'] | null, + marketJson: null as GameDataValue['market_json'] | null, + fontFamily: null as GameDataValue['game_font']['font_family'] | null, gnb: null as GameDataValue['gnb'] | null, eventBanner: null as GameDataValue['event_banner'] | null, + fontFamily: null as GameDataValue['game_font']['font_family'] | null, }) const state = reactive(getInitialState()) @@ -26,17 +31,22 @@ export const useGameDataStore = defineStore('gameData', () => { state.gameId = data?.game_id state.gameCode = data?.game_code state.gameName = data?.game_name + state.stoveGnbJson = data?.stove_gnb_json state.langCodes = data?.lang_codes state.defaultLangCode = data?.default_lang_code state.gaCode = data?.ga_code state.platformType = data?.platform_type state.osType = data?.os_type + state.theme = data?.design_theme === 1 ? 'light' : 'dark' state.intro = data?.intro state.imgJson = data?.img_json state.snsJson = data?.sns_json state.urlJson = data?.url_json + state.marketJson = data?.market_json + state.fontFamily = data?.game_font?.font_family state.gnb = data?.gnb state.eventBanner = data?.event_banner + state.fontFamily = data?.game_font?.font_family } const clearGameData = () => { diff --git a/layers/templates/FxCoupon01/index.vue b/layers/templates/FxCoupon01/index.vue index 7acd69e..7d582bf 100644 --- a/layers/templates/FxCoupon01/index.vue +++ b/layers/templates/FxCoupon01/index.vue @@ -530,7 +530,7 @@ onMounted(async () => { /> {