import { createApp } from 'vue'
import router from './router.ts'
import App from './App.vue'
import { validateToken, initTheme } from './store.ts'
import { fluent, setLanguage } from './i18n'
import './base.css'
import { getLocalePreference } from './store.ts'
import { invoke } from '@tauri-apps/api/core'

export function logJS(msg: any) {
    invoke('log', { message: typeof msg === 'string' ? msg : JSON.stringify(msg) }).catch(() => { });
}

async function init() {
    await validateToken()

    const app = createApp(App)
    app.use(router)
    app.use(fluent)

    const savedLocale = await getLocalePreference();
    const osLocale = navigator.language;

    await initTheme();

    if (savedLocale) {
        setLanguage(savedLocale);
    } else {
        setLanguage(osLocale);
    }

    // await createChannel({
    //     id: 'messages',
    //     name: 'Messages',
    //     description: 'Notifications for new messages',
    //     importance: Importance.High,
    //     visibility: Visibility.Private,
    //     lights: true,
    //     lightColor: '#ff0000',
    //     vibration: true,
    //     sound: 'notification_sound',
    // });

    // window.addEventListener("error", (event) => {
    //     logJS(`Uncaught JS Error: ${event.message} at ${event.filename}:${event.lineno}:${event.colno}`);
    // });
    //
    // window.addEventListener("unhandledrejection", (event) => {
    //     logJS(`Unhandled Promise Rejection: ${JSON.stringify(event.reason)}`);
    // });

    app.mount('#app')
}

init()

export const MAX_FILES = 8;
export const MAX_SIZE_MB = 10;
export const MAX_SIZE_BYTES = MAX_SIZE_MB * 1024 * 1024;

export const API = 'http://127.0.0.1:8080'
// export const API = 'http://192.168.1.183:8080'
// export const API = 'https://alatreon.org/frangipane'
export const API_WS = 'ws://127.0.0.1:8080/ws'
// export const API_WS = 'ws://192.168.1.183:8080/ws'
// export const API_WS = 'wss://alatreon.org/frangipane/ws'
