RSS Git Download  Clone
Raw Blame History 2kB 51 lines
require('./scss/index.scss')

// Capture Electron UI storage bootstrap data from URL query params BEFORE Angular's
// router strips them during its initial redirect (e.g. / -> /settings).
// Stored on globalThis.__p3xr_electron_bootstrap for SettingsComponent.
try {
    const encoded = new URLSearchParams(window.location.search).get('p3xreUiStorage')
    if (encoded) {
        const base64 = encoded.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(encoded.length / 4) * 4, '=')
        const parsed = JSON.parse(atob(base64))
        if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
            globalThis.__p3xr_electron_bootstrap = parsed
        }
    }
} catch (e) {
    // ignore — bootstrap data is optional
}
// Also try window.name (set by Electron shell via iframe.name before src is loaded)
if (!globalThis.__p3xr_electron_bootstrap) {
    try {
        const fromName = window.name ? JSON.parse(window.name) : null
        if (fromName?.p3xreUiStorage && typeof fromName.p3xreUiStorage === 'object') {
            globalThis.__p3xr_electron_bootstrap = fromName.p3xreUiStorage
        }
    } catch (e) {
        // ignore
    }
}

// Translation loading — standalone module, no p3xr global
const { getTranslations, loadTranslation } = require('./core/translation-loader')

// English is always loaded synchronously — it is the required fallback for all other languages.
getTranslations()['en'] = require('./strings/en/strings')

// Read the language from localStorage or Electron bootstrap storage.
let _initialLang = 'en'
try {
    const electronLang = globalThis.__p3xr_electron_bootstrap?.['p3xr-language']
    if (electronLang) {
        _initialLang = electronLang
    } else {
        _initialLang = localStorage.getItem('p3xr-language') || 'en'
    }
} catch { /* ignore */ }

// Load the initial language (no-op for English — already loaded above), then boot Angular.
loadTranslation(_initialLang).then(() => {
    require('./ng/main')
})