115 lines
3.0 KiB
JavaScript
115 lines
3.0 KiB
JavaScript
import './assets/main.css'
|
|
import './styles/fonts.css'
|
|
import './styles/global.css'
|
|
|
|
import { logEnvInfo } from './utils/env.js'
|
|
import { installProtectedAssetRuntime } from './utils/protectedAssetRuntime.js'
|
|
import { installRuntimeSecurity } from './utils/runtimeSecurity.js'
|
|
import { applyPerformanceModeClass } from './utils/performanceMode.js'
|
|
import { versionChecker } from './utils/versionChecker.js'
|
|
import { smartImage } from './directives/smartImage.js'
|
|
import { createPinia } from 'pinia'
|
|
import { createApp } from 'vue'
|
|
import { useLangStore } from '@/stores/lang'
|
|
import i18n, { initI18n, setLocale } from './locales/i18n'
|
|
|
|
import App from './App.vue'
|
|
import LoadingContent from './components/LoadingContent.vue'
|
|
import router from './router'
|
|
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
|
|
|
|
logEnvInfo()
|
|
installRuntimeSecurity()
|
|
installProtectedAssetRuntime()
|
|
applyPerformanceModeClass()
|
|
|
|
const pinia = createPinia()
|
|
pinia.use(piniaPluginPersistedstate)
|
|
|
|
const app = createApp(App)
|
|
app.directive('smart-img', smartImage)
|
|
app.component('LoadingContent', LoadingContent)
|
|
|
|
app.use(router)
|
|
app.use(pinia)
|
|
|
|
const langStore = useLangStore()
|
|
|
|
const rankingPages = []
|
|
const activities = ['/recharge-reward']
|
|
const enPages = [...rankingPages, ...activities]
|
|
const arPages = []
|
|
|
|
const hashPath = window.location.hash.replace('#', '')
|
|
const currentPage = hashPath.split('?')[0]
|
|
const queryParams = hashPath.split('?')[1]
|
|
const urlParams = queryParams ? new URLSearchParams(queryParams) : new URLSearchParams()
|
|
const langParam = urlParams.get('lang')
|
|
|
|
let finalLang = null
|
|
if (langParam) {
|
|
if (langParam === 'en') {
|
|
finalLang = 'en'
|
|
} else if (langParam.startsWith('ar')) {
|
|
finalLang = 'ar'
|
|
} else if (langParam === 'tr') {
|
|
finalLang = 'tr'
|
|
} else if (langParam === 'bn') {
|
|
finalLang = 'bn'
|
|
}
|
|
}
|
|
|
|
if (enPages.includes(currentPage)) {
|
|
setLocale(langStore, 'en')
|
|
} else if (arPages.includes(currentPage)) {
|
|
setLocale(langStore, 'ar')
|
|
} else if (finalLang) {
|
|
console.log('langParam:', langParam)
|
|
console.log('finalLang:', finalLang)
|
|
setLocale(langStore, finalLang)
|
|
}
|
|
|
|
initI18n(langStore)
|
|
|
|
app.use(i18n)
|
|
app.mount('#app')
|
|
|
|
function runWhenIdle(callback) {
|
|
if (typeof window.requestIdleCallback === 'function') {
|
|
window.requestIdleCallback(callback, { timeout: 2000 })
|
|
return
|
|
}
|
|
|
|
window.setTimeout(callback, 0)
|
|
}
|
|
|
|
async function checkVersionInBackground() {
|
|
try {
|
|
if (await versionChecker.checkVersion()) {
|
|
console.log('Version updated')
|
|
}
|
|
} catch (error) {
|
|
console.warn('Version check failed:', error)
|
|
}
|
|
}
|
|
|
|
runWhenIdle(() => {
|
|
void checkVersionInBackground()
|
|
})
|
|
|
|
if (versionChecker.enableCheck) {
|
|
setInterval(
|
|
async () => {
|
|
try {
|
|
const versionResult = await versionChecker.checkServerVersion()
|
|
if (versionResult.shouldUpdate) {
|
|
await versionChecker.handleVersionUpdate(versionResult.versionType)
|
|
}
|
|
} catch (error) {
|
|
console.warn('Scheduled version check failed:', error)
|
|
}
|
|
},
|
|
5 * 60 * 1000,
|
|
)
|
|
}
|