miru/app/js/settingsHandler.js
2020-12-19 04:09:01 +01:00

76 lines
No EOL
2.2 KiB
JavaScript

const settingsElements = [
player1, player2, player3, player4, player5, player6, player7, player8, player9, player10, subtitle1, subtitle2, subtitle3, torrent1, torrent2, torrent3, torrent4, torrent5, torrent6, torrent7, torrent8, torrent9, other1, other2
]
let settings = {}
function restoreDefaults() {
localStorage.removeItem("settings");
location.reload()
}
let applyTimeout
function applySettingsTimeout() {
clearTimeout(applyTimeout)
applyTimeout = setTimeout(saveSettings, 500)
}
function saveSettings() {
settingsElements.forEach(element => {
if (element.type == "checkbox") {
settings[element.id] = element.checked
} else {
settings[element.id] = element.value
}
})
localStorage.setItem("settings", JSON.stringify(settings))
}
function renderSettings() {
Object.entries(settings).forEach(setting => {
let settingElement = settingsElements.filter(e => e.id == setting[0])[0]
if (settingElement.type == "checkbox") {
settingElement.checked = setting[1]
} else {
settingElement.value = setting[1]
}
})
}
function registerProtocol() {
if ('registerProtocolHandler' in navigator) {
navigator.registerProtocolHandler(
'magnet',
`${location.href.replace(location.hash, '')}#&file=%s`,
'Miru'
);
}
}
if (!localStorage.getItem("settings")) {
saveSettings()
location.reload()
} else {
settings = JSON.parse(localStorage.getItem("settings"))
}
clearRelCache.onclick = () => {
localStorage.removeItem("store")
store = {}
}
renderSettings()
setRes.addEventListener("click", restoreDefaults)
settingsTab.addEventListener("click", applySettingsTimeout)
regProtButton.addEventListener("click", registerProtocol)
let searchParams = new URLSearchParams(location.href)
if (searchParams.get("access_token")) {
localStorage.setItem("ALtoken", searchParams.get("access_token"))
window.location = "/app/#settingsTab"
}
torrent5.onclick = e => {
if (!e.srcElement.checked)
torrent8.checked = false
}
torrent8.onclick = e => {
if (e.srcElement.checked)
torrent5.checked = true
}
document.documentElement.style.setProperty("font-size", settings.other1 + "%")