GrassClipper/resources/js/options.js
2022-05-07 20:49:45 -07:00

161 lines
4.1 KiB
JavaScript

/**
* Toggle the killswitch script
*/
async function toggleKillSwitch() {
const killSwitch = document.querySelector('#killswitchOption')
const config = await getCfg()
config.enableKillswitch = killSwitch.checked
debug.log('Killswitch is now ', config.enableKillswitch)
Neutralino.storage.setData('config', JSON.stringify(config))
}
/**
* Toggles the server launching panel
*/
async function toggleServerLaunchSection() {
const config = await getCfg()
displayServerLaunchSection()
debug.log('Toggling server panel')
// Save setting
config.serverLaunchPanel = !config.serverLaunchPanel
Neutralino.storage.setData('config', JSON.stringify(config))
// Show a dialog for those who may want to open the downloads section
if (config.serverLaunchPanel && !config.serverFolder) {
closeSettings()
debug.log('First time server launcher')
openDialog(
localeObj.serverEnableDialogTitle || 'You found the Grasscutter server launcher!',
localeObj.serverEnableDialogText || 'If you do not have an existing Grasscutter installation to set, would you like to download a build?',
true,
openDownloads
)
}
}
/**
* Get all languages for the language selector
*/
async function getLanguages() {
const languageFiles = (await filesystem.readDirectory(`${NL_CWD}/languages`)).filter(file => file.entry.endsWith('.json'))
const config = await getCfg()
debug.log('Grabbing languages')
// Clear language options
const languageSelect = document.querySelector('#languageSelect')
languageSelect.innerHTML = ''
// Load all languages as options
for (const file of languageFiles) {
const fullLanguageName = JSON.parse(await filesystem.readFile(`${NL_CWD}/languages/${file.entry}`)).fullLangName
const lang = file.entry.split('.json')[0]
debug.log('Loading language: ', lang)
const option = document.createElement('option')
option.value = lang
option.innerHTML = fullLanguageName
// Set language selected to config language
if (lang === config.language) {
debug.log('Selected language: ', lang)
option.selected = true
}
document.querySelector('#languageSelect').appendChild(option)
}
}
/**
* Save lang, refresh to apply
*
* @param {DOMElement} elm
*/
async function handleLanguageChange(elm) {
const list = elm
const config = await getCfg()
// Set language in config
config.language = list.value
Neutralino.storage.setData('config', JSON.stringify(config))
debug.log('Language changed to: ', list.value)
// Force refresh of application, no need for restart!
window.location.reload()
}
/**
* Toggle the use of HTTPS
*/
async function toggleHttps() {
const httpsCheckbox = document.querySelector('#httpsOption')
const config = await getCfg()
config.useHttps = httpsCheckbox.checked
debug.log('HTTPS set to: ', config.useHttps)
Neutralino.storage.setData('config', JSON.stringify(config))
}
/**
* Toggle debugging
*/
async function toggleDebugging() {
const debugCheckbox = document.querySelector('#debugOption')
const config = await getCfg()
config.debug = debugCheckbox.checked
debug.log('Debugging set to: ', config.debug)
Neutralino.storage.setData('config', JSON.stringify(config))
}
/**
* Add the current value of the IP input to the favorites list
* OR
* Remove the current value of the IP input from the favorites list
*/
async function setFavorite() {
const ip = document.querySelector('#ip').value
const port = document.querySelector('#port').value || '443'
const ipArr = await getFavIps()
const addr = `${ip}:${port}`
debug.log('Handling favorite: ', addr)
// Set star icon
const star = document.querySelector('#star')
if (star.src.includes('filled') && ip) {
star.src = 'icons/star_empty.svg'
debug.log('Removing from list: ', addr)
// remove from list
ipArr.splice(ipArr.indexOf(addr), 1)
} else {
star.src = 'icons/star_filled.svg'
// add to list
if (ip && !ipArr.includes(addr)) {
debug.log('Adding to list: ', addr)
ipArr.push(addr)
}
}
Neutralino.storage.setData('favorites', JSON.stringify(ipArr))
}