diff --git a/layers/components/blocks/Button/Launcher.vue b/layers/components/blocks/Button/Launcher.vue index 495e517..c8a7f19 100644 --- a/layers/components/blocks/Button/Launcher.vue +++ b/layers/components/blocks/Button/Launcher.vue @@ -13,6 +13,7 @@ interface Props { variant?: ButtonVariant backgroundColor?: string textColor?: string + useGameFont?: boolean disabled?: boolean } @@ -29,7 +30,7 @@ const gameDataStore = useGameDataStore() const modalStore = useModalStore() const { isProcessing, validateLauncher } = useCheckGameStart() -const { gameName, platformType, osType, marketJson } = +const { gameName, platformType, osType, marketJson, fontFamily } = storeToRefs(gameDataStore) const PLATFORM_ICON_MAP: Record = { @@ -82,6 +83,9 @@ const textStyle = computed(() => { if (props.textColor) { style.color = props.textColor } + if (props.useGameFont && fontFamily.value) { + style.fontFamily = fontFamily.value + } return style }) diff --git a/layers/components/layouts/Header.vue b/layers/components/layouts/Header.vue index 3707d96..8a9c132 100644 --- a/layers/components/layouts/Header.vue +++ b/layers/components/layouts/Header.vue @@ -7,6 +7,7 @@ import type { GameDataResourceGroup, GameDataResourceGroupSet, } from '#layers/types/api/gameData' +import type { TrackingObject } from '#layers/types/api/common' const MORE_WIDTH = 72 const START_MARGIN = 40 @@ -20,7 +21,8 @@ const scrollStore = useScrollStore() const breakpoints = useResponsiveBreakpoints() const { sendLog } = useAnalytics() -const { gameName, imgJson, gnb, eventBanner } = storeToRefs(gameDataStore) +const { gameId, gameName, imgJson, gnb, eventBanner } = + storeToRefs(gameDataStore) const { pageLayoutType } = storeToRefs(pageDataStore) const { isPassedStoveGnb } = storeToRefs(scrollStore) @@ -139,12 +141,16 @@ const handleMenuClose = () => { scrollStore.controlScrollLock(false) } -const handleSendLog = (item: string) => { - const analytics = { - action_type: 'click', - click_item: item, - click_sarea: 'GNB', - } +const handleSendLog = (item: string | TrackingObject) => { + const analytics: TrackingObject = + typeof item === 'string' + ? { + action_type: 'click', + click_item: item, + click_sarea: 'GNB', + click_area: gameId.value, + } + : { ...item, click_area: gameId.value } sendLog(locale.value, analytics) } @@ -152,7 +158,7 @@ const handleGnbItemClick = (gnbItem: GameDataMenu) => { if (isNotClickable(gnbItem)) return handleMenuClose() - sendLog(locale.value, gnbItem.tracking_json) + handleSendLog(gnbItem.tracking_json) } onMounted(() => { @@ -196,10 +202,7 @@ onMounted(() => { class="h-[30px]" /> - @@ -391,7 +394,7 @@ onMounted(() => { :use-game-font=" start1depthData?.btn_info?.use_game_font === 1 " - @click="sendLog(locale, start1depthData.tracking)" + @click="handleSendLog(start1depthData.tracking)" > {{ start1depthData?.btn_info?.txt_btn_name }} @@ -405,7 +408,7 @@ onMounted(() => { type="single" variant="custom" :platform="key" - @click="sendLog(locale, item.tracking)" + @click="handleSendLog(item.tracking)" > {{ item.btn_info?.txt_btn_name }} diff --git a/layers/components/widgets/ButtonList.vue b/layers/components/widgets/ButtonList.vue index 6972df9..c3b6f1a 100644 --- a/layers/components/widgets/ButtonList.vue +++ b/layers/components/widgets/ButtonList.vue @@ -192,6 +192,7 @@ const handleButtonClick = (button: PageDataResourceGroup) => { " type="duplication" :platform="button.btn_info?.detail?.market_type" + :use-game-font="usesGameFont(button.btn_info)" @click="handleButtonClick(button)" > {{ button.btn_info?.txt_btn_name }} diff --git a/layers/composables/useAnalytics.ts b/layers/composables/useAnalytics.ts index af0caf0..b83500d 100644 --- a/layers/composables/useAnalytics.ts +++ b/layers/composables/useAnalytics.ts @@ -61,7 +61,7 @@ export const useAnalyticsData = ( // 객체인 경우 if (typeof analytics === 'object') { - const { action_type, click_sarea, click_item } = analytics + const { action_type, click_area, click_sarea, click_item } = analytics logData = { actionType: action_type, @@ -70,7 +70,7 @@ export const useAnalyticsData = ( } as AnalyticsDetailType if (action_type === 'click') { - logData.clickArea = baseViewArea + logData.clickArea = click_area ?? baseViewArea logData.clickSarea = click_sarea logData.clickItem = click_item } else if (action_type === 'view') { diff --git a/layers/types/api/common.ts b/layers/types/api/common.ts index 61d85b9..8f62286 100644 --- a/layers/types/api/common.ts +++ b/layers/types/api/common.ts @@ -48,6 +48,7 @@ export interface TrackingObject { action_type: string click_item: string click_sarea: string + click_area?: string } export interface ColorObject {