Files
web-temp/layers/components/blocks/StoveGnb.vue

73 lines
1.7 KiB
Vue

<script setup lang="ts">
import { useGameDataStore } from '#layers/stores/useGameDataStore'
let cpHeader: any = null
const runtimeConfig = useRuntimeConfig()
const { locale, availableLocales } = useI18n()
const gameDataStore = useGameDataStore()
const { gameData } = storeToRefs(gameDataStore)
const stoveInflowPath = runtimeConfig.public.stoveInflowPath
const stoveGameNo = runtimeConfig.public.stoveGameNo
const stoveGnbData = gameData.value?.stove_gnb_json
const languageCodes = computed(() => {
if (Array.isArray(availableLocales)) {
return availableLocales.map(
(localeCode: any) => localeCode.code || localeCode
)
}
return [locale]
})
const loadGnb = (locale: string) => {
locale = locale.toLowerCase()
const gnbOption = {
wrapper: '#stove-wrap',
isResponsive: true,
skin: stoveGnbData?.skin_type || 'gnb-dark-mini',
widget: {
gameListAndService: false,
languageSelect: false,
notification: false,
stoveDownload: false,
},
global: {
userGds: true,
defaultSelectedLanguage: locale || 'en',
languageCoverages: languageCodes.value,
},
loginMethod: {
params: {
inflow_path: stoveInflowPath,
game_no: stoveGameNo,
show_play_button: stoveGnbData?.stove_install_button_visible || 'Y',
},
redirectCurrentPage: true,
windowTitle: undefined,
},
}
cpHeader = new (window as any).cp.Header(gnbOption)
cpHeader.render()
}
onMounted(() => {
loadGnb(locale.value)
})
onBeforeUnmount(() => {
if (cpHeader && typeof cpHeader.destroy === 'function') {
cpHeader.destroy()
}
cpHeader = null
})
</script>
<template>
<div id="stove-wrap" class="relative z-[5]" />
</template>