mirror of
https://git.sanhost.net/sanasol/hytale-f2p
synced 2026-02-26 05:41:48 -03:00
Discord server was DMCA'd. All Discord links replaced with: - Community Chat (Stoat): chat.sanhost.net - Telegram Channel: @hf2p_og - Telegram Group: @sanhostnet Launcher UI: added community links on main screen, renamed Discord nav to Community Chat, updated popup modal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
109 lines
3.1 KiB
JavaScript
109 lines
3.1 KiB
JavaScript
import './ui.js';
|
|
import './install.js';
|
|
import './launcher.js';
|
|
import './news.js';
|
|
import { initModsManager } from './mods.js';
|
|
import './players.js';
|
|
import './settings.js';
|
|
import './logs.js';
|
|
|
|
let i18nInitialized = false;
|
|
(async () => {
|
|
const savedLang = await window.electronAPI?.loadLanguage();
|
|
await i18n.init(savedLang);
|
|
i18nInitialized = true;
|
|
|
|
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
|
updateLanguageSelector();
|
|
initModsManager();
|
|
} else {
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
updateLanguageSelector();
|
|
initModsManager();
|
|
});
|
|
}
|
|
})();
|
|
|
|
async function checkDiscordPopup() {
|
|
try {
|
|
const config = await window.electronAPI?.loadConfig();
|
|
if (!config || config.discordPopup === undefined || config.discordPopup === false) {
|
|
const modal = document.getElementById('discordPopupModal');
|
|
if (modal) {
|
|
const buttons = modal.querySelectorAll('.discord-popup-btn');
|
|
buttons.forEach(btn => btn.disabled = true);
|
|
|
|
setTimeout(() => {
|
|
modal.style.display = 'flex';
|
|
modal.classList.add('active');
|
|
|
|
setTimeout(() => {
|
|
buttons.forEach(btn => btn.disabled = false);
|
|
}, 2000);
|
|
}, 1000);
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to check Discord popup:', error);
|
|
}
|
|
}
|
|
|
|
window.closeDiscordPopup = function() {
|
|
const modal = document.getElementById('discordPopupModal');
|
|
if (modal) {
|
|
modal.classList.remove('active');
|
|
setTimeout(() => {
|
|
modal.style.display = 'none';
|
|
}, 300);
|
|
}
|
|
};
|
|
|
|
window.joinDiscord = async function() {
|
|
// await window.electronAPI?.openExternal('https://discord.gg/Fhbb9Yk5WW');
|
|
await window.electronAPI?.openExternal('https://chat.sanhost.net/invite/Tfz4jCK4');
|
|
|
|
try {
|
|
await window.electronAPI?.saveConfig({ discordPopup: true });
|
|
} catch (error) {
|
|
console.error('Failed to save Discord popup state:', error);
|
|
}
|
|
|
|
closeDiscordPopup();
|
|
};
|
|
|
|
function updateLanguageSelector() {
|
|
const langSelect = document.getElementById('languageSelect');
|
|
if (langSelect) {
|
|
// Clear existing options
|
|
langSelect.innerHTML = '';
|
|
|
|
const languages = i18n.getAvailableLanguages();
|
|
const currentLang = i18n.getCurrentLanguage();
|
|
|
|
languages.forEach(lang => {
|
|
const option = document.createElement('option');
|
|
option.value = lang.code;
|
|
option.textContent = lang.name;
|
|
if (lang.code === currentLang) {
|
|
option.selected = true;
|
|
}
|
|
langSelect.appendChild(option);
|
|
});
|
|
|
|
// Handle language change (add listener only once)
|
|
if (!langSelect.hasAttribute('data-listener-added')) {
|
|
langSelect.addEventListener('change', async (e) => {
|
|
await i18n.setLanguage(e.target.value);
|
|
});
|
|
langSelect.setAttribute('data-listener-added', 'true');
|
|
}
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
if (i18nInitialized) {
|
|
updateLanguageSelector();
|
|
}
|
|
|
|
checkDiscordPopup();
|
|
}); |