// src/main.ts
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import '@/style.css'
import { useSettingsStore } from './stores/settings'
import { useUserStore } from './stores/user'
import { createI18n } from 'vue-i18n'
import en from '@/locales/en.json'
import ru from '@/locales/ru.json'

// Функция определения языка браузера
function getBrowserLocale(): string {
  const browserLang = navigator.language.split('-')[0]
  return browserLang === 'ru' ? 'ru' : 'en'
}

// Получаем сохраненный язык из localStorage (для неавторизованных)
const storedLocale = localStorage.getItem('locale')
const initialLocale = storedLocale || getBrowserLocale()

const i18n = createI18n({
  legacy: false,
  locale: initialLocale,
  fallbackLocale: 'en',
  messages: { en, ru }
})

const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(i18n)

const settingsStore = useSettingsStore()
const userStore = useUserStore()

// Загружаем настройки и профиль
Promise.all([
  settingsStore.loadSettings(),
  userStore.fetchProfile().catch(() => {})
]).then(() => {
  // Если пользователь авторизован – используем язык из профиля
  if (userStore.id && userStore.language) {
    i18n.global.locale.value = userStore.language
    // Сохраняем в localStorage для синхронизации (опционально)
    localStorage.setItem('locale', userStore.language)
  } else {
    // Для неавторизованных – сохраняем текущий язык в localStorage
    localStorage.setItem('locale', i18n.global.locale.value)
  }
  app.mount('#app')
})
