diff --git a/public/static/settings.js b/public/static/settings.js index 42b8a4b..fc0e118 100644 --- a/public/static/settings.js +++ b/public/static/settings.js @@ -1,5 +1,5 @@ /** - * This function handles the toggling of selections of all upstream search engines + * This function handles the toggling of selections of all upstream search engines * options in the settings page under the tab engines. */ function toggleAllSelection() { @@ -8,12 +8,12 @@ function toggleAllSelection() { .forEach( (engine_checkbox) => (engine_checkbox.checked = - document.querySelector('.select_all').checked) + document.querySelector('.select_all').checked), ) } /** - * This function adds the functionality to sidebar buttons to only show settings + * This function adds the functionality to sidebar buttons to only show settings * related to that tab. * @param {HTMLElement} current_tab - The current tab that was clicked. */ @@ -43,20 +43,28 @@ function setClientSettings() { // Loop through all select tags and add their values to the cookie dictionary document.querySelectorAll('select').forEach((select_tag) => { - if (select_tag.name === 'themes') { - cookie_dictionary['theme'] = select_tag.value - } else if (select_tag.name === 'colorschemes') { - cookie_dictionary['colorscheme'] = select_tag.value + switch (select_tag.name) { + case 'themes': + cookie_dictionary['theme'] = select_tag.value + break + case 'colorschemes': + cookie_dictionary['colorscheme'] = select_tag.value + break + case 'safe_search_levels': + cookie_dictionary['safe_search_level'] = Number(select_tag.value) + break } }) // Loop through all engine checkboxes and add their values to the cookie dictionary let engines = [] + document.querySelectorAll('.engine').forEach((engine_checkbox) => { - if (engine_checkbox.checked === true) { + if (engine_checkbox.checked) { engines.push(engine_checkbox.parentNode.parentNode.innerText.trim()) } }) + cookie_dictionary['engines'] = engines // Set the expiration date for the cookie to 1 year from the current date @@ -65,7 +73,7 @@ function setClientSettings() { // Save the cookie to the user's machine document.cookie = `appCookie=${JSON.stringify( - cookie_dictionary + cookie_dictionary, )}; expires=${expiration_date.toUTCString()}` // Display a success message to the user @@ -79,9 +87,9 @@ function setClientSettings() { } /** - * This functions gets the saved cookies if it is present on the user's machine If it - * is available then it is parsed and converted to an object which is then used to - * retrieve the preferences that the user had selected previously and is then loaded in the + * This functions gets the saved cookies if it is present on the user's machine If it + * is available then it is parsed and converted to an object which is then used to + * retrieve the preferences that the user had selected previously and is then loaded in the * website otherwise the function does nothing and the default server side settings are loaded. */ function getClientSettings() { @@ -89,21 +97,19 @@ function getClientSettings() { let cookie = decodeURIComponent(document.cookie) // If the cookie is not empty, parse it and use it to set the user's preferences - if (cookie !== '') { - let cookie_value = decodeURIComponent(document.cookie) + if (cookie.length) { + let cookie_value = cookie .split(';') .map((item) => item.split('=')) .reduce((acc, [_, v]) => (acc = JSON.parse(v)) && acc, {}) // Loop through all link tags and update their href values to match the user's preferences - let links = Array.from(document.querySelectorAll('link')).forEach( - (item) => { - if (item.href.includes('static/themes')) { - item.href = `static/themes/${cookie_value['theme']}.css` - } else if (item.href.includes('static/colorschemes')) { - item.href = `static/colorschemes/${cookie_value['colorscheme']}.css` - } + Array.from(document.querySelectorAll('link')).forEach((item) => { + if (item.href.includes('static/themes')) { + item.href = `static/themes/${cookie_value['theme']}.css` + } else if (item.href.includes('static/colorschemes')) { + item.href = `static/colorschemes/${cookie_value['colorscheme']}.css` } - ) + }) } }