diff options
author | Frankie B <git@diskfloppy.me> | 2024-01-22 01:16:42 +0000 |
---|---|---|
committer | Frankie B <git@diskfloppy.me> | 2024-01-22 01:19:23 +0000 |
commit | 6fa9efcc74a9c36f9e2178ee5427eafb8d470d99 (patch) | |
tree | 9bbcf3d82d3c3b49ec34b89d7a2ec625ea6cb400 /public/js/schemeSwap.js | |
parent | 75fed3cbc11691ca9f50780cad187e5693354c49 (diff) |
Get scheme cookie server-side instead of client-side on page load
Diffstat (limited to 'public/js/schemeSwap.js')
-rw-r--r-- | public/js/schemeSwap.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/public/js/schemeSwap.js b/public/js/schemeSwap.js new file mode 100644 index 0000000..de5a6b2 --- /dev/null +++ b/public/js/schemeSwap.js @@ -0,0 +1,53 @@ +/** + * Retrieves a cookies value + * @param {string} cname Cookie name + * @returns {string} Cookie value + */ +function getCookie(cname) { + let name = cname + "="; + let decodedCookie = decodeURIComponent(document.cookie); + let ca = decodedCookie.split(';'); + for(let i = 0; i <ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; +} + +/** + * Sets/creates a cookie + * @param {string} cname Cookie name + * @param {string} cvalue Cookie value + * @param {number} exdays Cookie lifespan (days) + */ +function setCookie(cname, cvalue, exdays) { + const d = new Date(); + d.setTime(d.getTime() + (exdays*24*60*60*1000)); + let expires = "expires="+ d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; +} + +/** + * Checks if a cookie exists + * @param {string} cname Cookie name + * @returns {boolean} If cookie exists or not + */ +function cookieExists(cname) { + const cvalue = getCookie(cname); + return cvalue !== ""; +} + +/** + * Swaps the colorscheme + * @param {string} scheme Color scheme ID + */ +function swapScheme(scheme) { + setCookie("colorscheme", scheme, 90); + document.getElementById("css-colorscheme").href = `/css/colorschemes/${scheme}.css`; + console.log(`Set colorscheme to ${getCookie("colorscheme")}`) +} |