From a907d1e584df556753319dd640194b119c67ad1b Mon Sep 17 00:00:00 2001 From: SeerLite Date: Mon, 5 Apr 2021 21:57:40 -0400 Subject: [PATCH 1/4] Use localStorage instead of cookies Cookies are sent to the server on each request and are not recommended for storing large amounts of data. --- src/js/account.js | 8 +- src/js/account/result-filters.js | 4 +- src/js/commandline-lists.js | 2 +- src/js/config.js | 220 ++++++++++++------------- src/js/misc.js | 23 --- src/js/popups/import-settings-popup.js | 2 +- src/js/ready.js | 4 +- src/js/settings/theme-picker.js | 2 +- src/js/tag-controller.js | 12 +- src/js/ui.js | 4 +- 10 files changed, 129 insertions(+), 152 deletions(-) diff --git a/src/js/account.js b/src/js/account.js index c0f8a0ee4..47225275c 100644 --- a/src/js/account.js +++ b/src/js/account.js @@ -65,11 +65,11 @@ export function getDataAndInit() { CloudFunctions.removeSmallTests({ uid: user.uid }); } if (!UpdateConfig.changedBeforeDb) { - if (Config.cookieConfig === null) { + if (Config.localStorageConfig === null) { AccountButton.loading(false); UpdateConfig.apply(DB.getSnapshot().config); Settings.update(); - UpdateConfig.saveToCookie(true); + UpdateConfig.saveToLocalStorage(true); TestLogic.restart(false, true); } else if (DB.getSnapshot().config !== undefined) { //loading db config, keep for now @@ -112,7 +112,7 @@ export function getDataAndInit() { AccountButton.loading(false); UpdateConfig.apply(DB.getSnapshot().config); Settings.update(); - UpdateConfig.saveToCookie(true); + UpdateConfig.saveToLocalStorage(true); TestLogic.restart(false, true); } } @@ -135,7 +135,7 @@ export function getDataAndInit() { AccountButton.loading(false); ResultFilters.updateTags(); CommandlineLists.updateTagCommands(); - TagController.loadActiveFromCookie(); + TagController.loadActiveFromLocalStorage(); ResultTagsPopup.updateButtons(); Settings.showAccountSection(); }) diff --git a/src/js/account/result-filters.js b/src/js/account/result-filters.js index ad46511fc..f3ecac1b4 100644 --- a/src/js/account/result-filters.js +++ b/src/js/account/result-filters.js @@ -103,13 +103,13 @@ export function loadTags(tags) { } export function save() { - Misc.setCookie("resultFilters", JSON.stringify(filters), 365); + window.localStorage.setItem("resultFilters", JSON.stringify(filters)); } export function load() { // let newTags = $.cookie("activeTags"); try { - let newResultFilters = Misc.getCookie("resultFilters"); + let newResultFilters = window.localStorage.getItem("resultFilters"); if (newResultFilters !== undefined && newResultFilters !== "") { filters = JSON.parse(newResultFilters); save(); diff --git a/src/js/commandline-lists.js b/src/js/commandline-lists.js index ed2da742a..7d5119516 100644 --- a/src/js/commandline-lists.js +++ b/src/js/commandline-lists.js @@ -197,7 +197,7 @@ export function updateTagCommands() { tag.active = false; }); TestUI.updateModesNotice(); - TagController.saveActiveToCookie(); + TagController.saveActiveToLocalStorage(); }, }); diff --git a/src/js/config.js b/src/js/config.js index e36848af7..b10df9c40 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -18,12 +18,12 @@ import * as UI from "./ui"; import * as CommandlineLists from "./commandline-lists"; import * as BackgroundFilter from "./custom-background-filter"; -export let cookieConfig = null; +export let localStorageConfig = null; export let dbConfigLoaded = false; export let changedBeforeDb = false; -export function setCookieConfig(val) { - cookieConfig = val; +export function setLocalStorageConfig(val) { + localStorageConfig = val; } export function setDbConfigLoaded(val) { @@ -130,7 +130,7 @@ let config = { ...defaultConfig, }; -export async function saveToCookie(noDbCheck = false) { +export async function saveToLocalStorage(noDbCheck = false) { if (!dbConfigLoaded && !noDbCheck) { setChangedBeforeDb(true); } @@ -142,7 +142,7 @@ export async function saveToCookie(noDbCheck = false) { // }); let save = config; delete save.resultFilters; - Misc.setCookie("config", JSON.stringify(save), 365); + window.localStorage.setItem("config", JSON.stringify(save)); // restartCount = 0; if (!noDbCheck) await DB.saveConfig(save); } @@ -158,7 +158,7 @@ export function setNumbers(numb, nosave) { } else { $("#top .config .numbersMode .text-button").addClass("active"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleNumbers() { @@ -171,7 +171,7 @@ export function toggleNumbers() { } else { $("#top .config .numbersMode .text-button").removeClass("active"); } - saveToCookie(); + saveToLocalStorage(); } //punctuation @@ -185,7 +185,7 @@ export function setPunctuation(punc, nosave) { } else { $("#top .config .punctuationMode .text-button").addClass("active"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function togglePunctuation() { @@ -198,7 +198,7 @@ export function togglePunctuation() { } else { $("#top .config .punctuationMode .text-button").removeClass("active"); } - saveToCookie(); + saveToLocalStorage(); } export function setMode(mode, nosave) { @@ -272,7 +272,7 @@ export function setMode(mode, nosave) { } // setPaceCaret("off", true); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setPlaySoundOnError(val, nosave) { @@ -280,7 +280,7 @@ export function setPlaySoundOnError(val, nosave) { val = false; } config.playSoundOnError = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setPlaySoundOnClick(val, nosave) { @@ -289,7 +289,7 @@ export function setPlaySoundOnClick(val, nosave) { } config.playSoundOnClick = val; if (config.playSoundOnClick !== "off") Sound.init(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function togglePlaySoundOnError() { @@ -310,14 +310,14 @@ export function setDifficulty(diff, nosave) { config.difficulty = diff; if (!nosave) TestLogic.restart(false, nosave); TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //set fav themes export function setFavThemes(themes, nosave) { config.favThemes = themes; if (!nosave) { - saveToCookie(); + saveToLocalStorage(); } } @@ -329,7 +329,7 @@ export function toggleBlindMode() { } config.blindMode = blind; TestUI.updateModesNotice(); - saveToCookie(); + saveToLocalStorage(); } export function setBlindMode(blind, nosave) { @@ -338,7 +338,7 @@ export function setBlindMode(blind, nosave) { } config.blindMode = blind; TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } function updateChartAccuracy() { @@ -366,7 +366,7 @@ export function toggleChartAccuracy() { config.chartAccuracy = true; } updateChartAccuracy(); - saveToCookie(); + saveToLocalStorage(); } export function setChartAccuracy(chartAccuracy, nosave) { @@ -375,7 +375,7 @@ export function setChartAccuracy(chartAccuracy, nosave) { } config.chartAccuracy = chartAccuracy; updateChartAccuracy(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleChartStyle() { @@ -385,7 +385,7 @@ export function toggleChartStyle() { config.chartStyle = "scatter"; } updateChartStyle(); - saveToCookie(); + saveToLocalStorage(); } export function setChartStyle(chartStyle, nosave) { @@ -394,7 +394,7 @@ export function setChartStyle(chartStyle, nosave) { } config.chartStyle = chartStyle; updateChartStyle(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setStopOnError(soe, nosave) { @@ -406,13 +406,13 @@ export function setStopOnError(soe, nosave) { config.confidenceMode = "off"; } TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //alwaysshowdecimal export function toggleAlwaysShowDecimalPlaces() { config.alwaysShowDecimalPlaces = !config.alwaysShowDecimalPlaces; - saveToCookie(); + saveToLocalStorage(); } export function setAlwaysShowDecimalPlaces(val, nosave) { @@ -420,12 +420,12 @@ export function setAlwaysShowDecimalPlaces(val, nosave) { val = false; } config.alwaysShowDecimalPlaces = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleAlwaysShowCPM() { config.alwaysShowCPM = !config.alwaysShowCPM; - saveToCookie(); + saveToLocalStorage(); } export function setAlwaysShowCPM(val, nosave) { @@ -433,7 +433,7 @@ export function setAlwaysShowCPM(val, nosave) { val = false; } config.alwaysShowCPM = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //show out of focus warning @@ -442,7 +442,7 @@ export function toggleShowOutOfFocusWarning() { if (!config.showOutOfFocusWarning) { OutOfFocus.hide(); } - saveToCookie(); + saveToLocalStorage(); } export function setShowOutOfFocusWarning(val, nosave) { @@ -453,13 +453,13 @@ export function setShowOutOfFocusWarning(val, nosave) { if (!config.showOutOfFocusWarning) { OutOfFocus.hide(); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //swap esc and tab export function toggleSwapEscAndTab() { config.swapEscAndTab = !config.swapEscAndTab; - saveToCookie(); + saveToLocalStorage(); UI.updateKeytips(); } @@ -469,7 +469,7 @@ export function setSwapEscAndTab(val, nosave) { } config.swapEscAndTab = val; UI.updateKeytips(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //pace caret @@ -488,7 +488,7 @@ export function setPaceCaret(val, nosave) { config.paceCaret = val; TestUI.updateModesNotice(); PaceCaret.init(nosave); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setPaceCaretCustomSpeed(val, nosave) { @@ -496,7 +496,7 @@ export function setPaceCaretCustomSpeed(val, nosave) { val = 100; } config.paceCaretCustomSpeed = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //min wpm @@ -506,7 +506,7 @@ export function setMinWpm(minwpm, nosave) { } config.minWpm = minwpm; TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setMinWpmCustomSpeed(val, nosave) { @@ -514,7 +514,7 @@ export function setMinWpmCustomSpeed(val, nosave) { val = 100; } config.minWpmCustomSpeed = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //min acc @@ -524,7 +524,7 @@ export function setMinAcc(min, nosave) { } config.minAcc = min; TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setMinAccCustom(val, nosave) { @@ -532,7 +532,7 @@ export function setMinAccCustom(val, nosave) { val = 90; } config.minAccCustom = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //always show words history @@ -541,7 +541,7 @@ export function setAlwaysShowWordsHistory(val, nosave) { val = false; } config.alwaysShowWordsHistory = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleAlwaysShowWordsHistory() { @@ -550,14 +550,14 @@ export function toggleAlwaysShowWordsHistory() { val = false; } config.alwaysShowWordsHistory = val; - saveToCookie(); + saveToLocalStorage(); } //single list command line export function setSingleListCommandLine(option, nosave) { if (!option) option = "manual"; config.singleListCommandLine = option; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //show all lines @@ -568,7 +568,7 @@ export function toggleShowAllLines() { } config.showAllLines = sal; TestLogic.restart(); - saveToCookie(); + saveToLocalStorage(); } export function setShowAllLines(sal, nosave) { @@ -577,7 +577,7 @@ export function setShowAllLines(sal, nosave) { } config.showAllLines = sal; if (!nosave) { - saveToCookie(); + saveToLocalStorage(); TestLogic.restart(); } } @@ -589,7 +589,7 @@ export function toggleQuickEnd() { qe = false; } config.quickEnd = qe; - saveToCookie(); + saveToLocalStorage(); } export function setQuickEnd(qe, nosave) { @@ -597,7 +597,7 @@ export function setQuickEnd(qe, nosave) { qe = false; } config.quickEnd = qe; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setEnableAds(val, nosave) { @@ -605,7 +605,7 @@ export function setEnableAds(val, nosave) { val = "off"; } config.enableAds = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setRepeatQuotes(val, nosave) { @@ -613,7 +613,7 @@ export function setRepeatQuotes(val, nosave) { val = "off"; } config.repeatQuotes = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //flip colors @@ -623,13 +623,13 @@ export function setFlipTestColors(flip, nosave) { } config.flipTestColors = flip; TestUI.flipColors(flip); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleFlipTestColors() { config.flipTestColors = !config.flipTestColors; TestUI.flipColors(config.flipTestColors); - saveToCookie(); + saveToLocalStorage(); } //extra color @@ -639,13 +639,13 @@ export function setColorfulMode(extra, nosave) { } config.colorfulMode = extra; TestUI.colorful(extra); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleColorfulMode() { config.colorfulMode = !config.colorfulMode; TestUI.colorful(config.colorfulMode); - saveToCookie(); + saveToLocalStorage(); } //strict space @@ -654,12 +654,12 @@ export function setStrictSpace(val, nosave) { val = false; } config.strictSpace = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleStrictSpace() { config.strictSpace = !config.strictSpace; - saveToCookie(); + saveToLocalStorage(); } //opposite shift space @@ -668,7 +668,7 @@ export function setOppositeShiftMode(val, nosave) { val = "off"; } config.oppositeShiftMode = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setPageWidth(val, nosave) { @@ -684,7 +684,7 @@ export function setPageWidth(val, nosave) { if (val !== "100") { $("#centerContent").addClass("wide" + val); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCaretStyle(caretStyle, nosave) { @@ -712,7 +712,7 @@ export function setCaretStyle(caretStyle, nosave) { } else if (caretStyle == "carrot") { $("#caret").addClass("carrot"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setPaceCaretStyle(caretStyle, nosave) { @@ -737,7 +737,7 @@ export function setPaceCaretStyle(caretStyle, nosave) { } else if (caretStyle == "underline") { $("#paceCaret").addClass("underline"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setShowTimerProgress(timer, nosave) { @@ -750,7 +750,7 @@ export function setShowTimerProgress(timer, nosave) { } else { TimerProgress.hide(); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleShowTimerProgress() { @@ -760,7 +760,7 @@ export function toggleShowTimerProgress() { } else { TimerProgress.hide(); } - saveToCookie(); + saveToLocalStorage(); } export function setShowLiveWpm(live, nosave) { @@ -773,7 +773,7 @@ export function setShowLiveWpm(live, nosave) { } else { LiveWpm.hide(); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleShowLiveWpm() { @@ -783,7 +783,7 @@ export function toggleShowLiveWpm() { } else { LiveWpm.hide(); } - saveToCookie(); + saveToLocalStorage(); } export function setShowLiveAcc(live, nosave) { @@ -796,7 +796,7 @@ export function setShowLiveAcc(live, nosave) { } else { LiveAcc.hide(); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleLiveAcc() { @@ -806,7 +806,7 @@ export function toggleLiveAcc() { } else { LiveAcc.hide(); } - saveToCookie(); + saveToLocalStorage(); } export function setHighlightMode(mode, nosave) { @@ -824,7 +824,7 @@ export function setHighlightMode(mode, nosave) { mode = "letter"; } config.highlightMode = mode; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setHideExtraLetters(val, nosave) { @@ -832,12 +832,12 @@ export function setHideExtraLetters(val, nosave) { val = false; } config.hideExtraLetters = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleHideExtraLetters() { config.hideExtraLetters = !config.hideExtraLetters; - saveToCookie(); + saveToLocalStorage(); } export function setTimerStyle(style, nosave) { @@ -845,7 +845,7 @@ export function setTimerStyle(style, nosave) { style = "bar"; } config.timerStyle = style; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setTimerColor(color, nosave) { @@ -887,14 +887,14 @@ export function setTimerColor(color, nosave) { $("#miniTimerAndLiveWpm").addClass("timerText"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setTimerOpacity(opacity, nosave) { if (opacity == null || opacity == undefined) { opacity = 0.25; } config.timerOpacity = opacity; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //key tips @@ -905,7 +905,7 @@ export function setKeyTips(keyTips, nosave) { } else { $("#bottom .keyTips").addClass("hidden"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleKeyTips() { @@ -915,7 +915,7 @@ export function toggleKeyTips() { } else { $("#bottom .keyTips").addClass("hidden"); } - saveToCookie(); + saveToLocalStorage(); } //mode @@ -933,7 +933,7 @@ export function setTimeConfig(time, nosave) { $("#top .config .time .text-button[timeConfig='" + time + "']").addClass( "active" ); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //quote length @@ -961,7 +961,7 @@ export function setQuoteLength(len, nosave, multipleMode) { "#top .config .quoteLength .text-button[quoteLength='" + ql + "']" ).addClass("active"); }); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setWordCount(wordCount, nosave) { @@ -978,13 +978,13 @@ export function setWordCount(wordCount, nosave) { $( "#top .config .wordCount .text-button[wordCount='" + wordCount + "']" ).addClass("active"); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //caret export function setSmoothCaret(mode, nosave) { config.smoothCaret = mode; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); if (mode) { $("#caret").css("animation-name", "caretFlashSmooth"); } else { @@ -994,7 +994,7 @@ export function setSmoothCaret(mode, nosave) { export function toggleSmoothCaret() { config.smoothCaret = !config.smoothCaret; - saveToCookie(); + saveToLocalStorage(); if (config.smoothCaret) { $("#caret").css("animation-name", "caretFlashSmooth"); } else { @@ -1005,23 +1005,23 @@ export function toggleSmoothCaret() { //startgraphsatzero export function toggleStartGraphsAtZero() { config.startGraphsAtZero = !config.startGraphsAtZero; - saveToCookie(); + saveToLocalStorage(); } export function setStartGraphsAtZero(mode, nosave) { config.startGraphsAtZero = mode; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //linescroll export function setSmoothLineScroll(mode, nosave) { config.smoothLineScroll = mode; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleSmoothLineScroll() { config.smoothLineScroll = !config.smoothLineScroll; - saveToCookie(); + saveToLocalStorage(); } //quick tab @@ -1038,7 +1038,7 @@ export function setQuickTabMode(mode, nosave) { $("#bottom .keyTips").html(`tab - restart test
esc - command line`); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleQuickTabMode() { @@ -1060,7 +1060,7 @@ export function toggleQuickTabMode() { console.log(config.quickTab); console.log("before save"); console.log(config.quickTab); - saveToCookie(); + saveToLocalStorage(); console.log("after save"); console.log(config.quickTab); } @@ -1101,7 +1101,7 @@ export function setFontFamily(font, nosave) { '"' + font.replace(/_/g, " ") + '"' ); ChartController.setDefaultFontFamily(font); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } //freedom @@ -1113,7 +1113,7 @@ export function setFreedomMode(freedom, nosave) { if (config.freedomMode && config.confidenceMode !== "off") { config.confidenceMode = "off"; } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleFreedomMode() { @@ -1121,7 +1121,7 @@ export function toggleFreedomMode() { if (config.freedomMode && config.confidenceMode !== "off") { config.confidenceMode = false; } - saveToCookie(); + saveToLocalStorage(); } export function setConfidenceMode(cm, nosave) { @@ -1135,7 +1135,7 @@ export function setConfidenceMode(cm, nosave) { } TestUI.updateModesNotice(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleIndicateTypos() { @@ -1144,7 +1144,7 @@ export function toggleIndicateTypos() { it = false; } config.indicateTypos = it; - saveToCookie(); + saveToLocalStorage(); } export function setIndicateTypos(it, nosave) { @@ -1152,7 +1152,7 @@ export function setIndicateTypos(it, nosave) { it = false; } config.indicateTypos = it; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCustomTheme(boolean, nosave) { @@ -1162,14 +1162,14 @@ export function setCustomTheme(boolean, nosave) { } else if (!boolean && !nosave) { ThemeController.set(config.theme); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setTheme(name, nosave) { config.theme = name; setCustomTheme(false, true, true); ThemeController.set(config.theme); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setRandomTheme(val, nosave) { @@ -1180,7 +1180,7 @@ export function setRandomTheme(val, nosave) { ThemeController.clearRandom(); } config.randomTheme = val; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleCustomTheme(nosave) { @@ -1191,7 +1191,7 @@ export function toggleCustomTheme(nosave) { setCustomTheme(true); ThemeController.set("custom"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCustomThemeColors(colors, nosave) { @@ -1200,7 +1200,7 @@ export function setCustomThemeColors(colors, nosave) { // ThemeController.set("custom"); // applyCustomThemeColors(); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setLanguage(language, nosave) { @@ -1215,7 +1215,7 @@ export function setLanguage(language, nosave) { } catch (e) { console.log("Analytics unavailable"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleMonkey(nosave) { @@ -1225,7 +1225,7 @@ export function toggleMonkey(nosave) { } else { $("#monkey").addClass("hidden"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setMonkey(monkey, nosave) { @@ -1238,7 +1238,7 @@ export function setMonkey(monkey, nosave) { } else { $("#monkey").addClass("hidden"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCapsLockBackspace(capsLockBackspace, nosave) { @@ -1246,7 +1246,7 @@ export function setCapsLockBackspace(capsLockBackspace, nosave) { capsLockBackspace = false; } config.capsLockBackspace = capsLockBackspace; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function toggleCapsLockBackspace() { @@ -1261,7 +1261,7 @@ export function setKeymapMode(mode, nosave) { $(".keymap-key").attr("style", ""); config.keymapMode = mode; if (!nosave) TestLogic.restart(false, nosave); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setKeymapStyle(style, nosave) { @@ -1281,7 +1281,7 @@ export function setKeymapStyle(style, nosave) { $(".keymap").addClass("split_matrix"); } config.keymapStyle = style; - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setKeymapLayout(layout, nosave) { @@ -1290,7 +1290,7 @@ export function setKeymapLayout(layout, nosave) { } config.keymapLayout = layout; Keymap.refreshKeys(layout, setKeymapLayout); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setLayout(layout, nosave) { @@ -1302,7 +1302,7 @@ export function setLayout(layout, nosave) { if (config.keymapLayout === "overrideSync") { Keymap.refreshKeys(config.keymapLayout, setKeymapLayout); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setSavedLayout(layout, nosave) { @@ -1349,7 +1349,7 @@ export function setFontSize(fontSize, nosave) { $("#caret, #paceCaret").addClass("size3"); $("#miniTimerAndLiveWpm").addClass("size3"); } - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCustomBackground(value, nosave) { @@ -1368,7 +1368,7 @@ export function setCustomBackground(value, nosave) { (command) => command.id == "changeCustomBackground" )[0].defaultValue = value; ThemeController.applyCustomBackground(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } else { Notifications.add("Invalid custom background URL", 0); } @@ -1380,14 +1380,14 @@ export function setCustomBackgroundSize(value, nosave) { } config.customBackgroundSize = value; ThemeController.applyCustomBackgroundSize(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function setCustomBackgroundFilter(array, nosave) { config.customBackgroundFilter = array; BackgroundFilter.loadConfig(config.customBackgroundFilter); BackgroundFilter.apply(); - if (!nosave) saveToCookie(); + if (!nosave) saveToLocalStorage(); } export function apply(configObj) { @@ -1658,13 +1658,13 @@ export function reset() { ...defaultConfig, }; apply(); - saveToCookie(); + saveToLocalStorage(); } -export function loadFromCookie() { - console.log("loading cookie config"); +export function loadFromLocalStorage() { + console.log("loading localStorage config"); // let newConfig = $.cookie("config"); - let newConfig = Misc.getCookie("config"); + let newConfig = window.localStorage.getItem("config"); if (newConfig !== undefined && newConfig !== "") { try { newConfig = JSON.parse(newConfig); @@ -1672,10 +1672,10 @@ export function loadFromCookie() { newConfig = {}; } apply(newConfig); - console.log("applying cookie config"); - cookieConfig = newConfig; - saveToCookie(true); - console.log("saving cookie config"); + console.log("applying localStorage config"); + localStorageConfig = newConfig; + saveToLocalStorage(true); + console.log("saving localStorage config"); } TestLogic.restart(false, true); loadDone(); diff --git a/src/js/misc.js b/src/js/misc.js index e72a9d9c7..28e7be458 100644 --- a/src/js/misc.js +++ b/src/js/misc.js @@ -287,29 +287,6 @@ export async function getLanguage(lang) { } } -export function setCookie(cname, cvalue, exdays) { - var d = new Date(); - d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); - var expires = "expires=" + d.toUTCString(); - document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; -} - -export function getCookie(cname) { - var name = cname + "="; - var decodedCookie = decodeURIComponent(document.cookie); - var ca = decodedCookie.split(";"); - for (var i = 0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0) == " ") { - c = c.substring(1); - } - if (c.indexOf(name) == 0) { - return c.substring(name.length, c.length); - } - } - return ""; -} - export function sendVerificationEmail() { Loader.show(); let cu = firebase.auth().currentUser; diff --git a/src/js/popups/import-settings-popup.js b/src/js/popups/import-settings-popup.js index 2c65f5d04..989bf58c5 100644 --- a/src/js/popups/import-settings-popup.js +++ b/src/js/popups/import-settings-popup.js @@ -27,7 +27,7 @@ function hide() { -1 ); } - UpdateConfig.saveToCookie(); + UpdateConfig.saveToLocalStorage(); Settings.update(); } $("#settingsImportWrapper") diff --git a/src/js/ready.js b/src/js/ready.js index da30218ba..d2ef7e4e1 100644 --- a/src/js/ready.js +++ b/src/js/ready.js @@ -7,7 +7,7 @@ import * as RouteController from "./route-controller"; import * as UI from "./ui"; ManualRestart.set(); -UpdateConfig.loadFromCookie(); +UpdateConfig.loadFromLocalStorage(); Misc.getReleasesFromGitHub(); $(document).ready(() => { @@ -19,7 +19,7 @@ $(document).ready(() => { if (Config.quickTab) { $("#restartTestButton").addClass("hidden"); } - if (!Misc.getCookie("merchbannerclosed")) { + if (!window.localStorage.getItem("merchbannerclosed")) { $(".merchBanner").removeClass("hidden"); } else { $(".merchBanner").remove(); diff --git a/src/js/settings/theme-picker.js b/src/js/settings/theme-picker.js index cce6d8806..4ba6c12c6 100644 --- a/src/js/settings/theme-picker.js +++ b/src/js/settings/theme-picker.js @@ -93,7 +93,7 @@ function toggleFavourite(themename) { newlist.push(themename); UpdateConfig.setFavThemes(newlist); } - UpdateConfig.saveToCookie(); + UpdateConfig.saveToLocalStorage(); refreshButtons(); // showFavouriteThemesAtTheTop(); CommandlineLists.updateThemeCommands(); diff --git a/src/js/tag-controller.js b/src/js/tag-controller.js index d0375b1ba..565cc164b 100644 --- a/src/js/tag-controller.js +++ b/src/js/tag-controller.js @@ -2,7 +2,7 @@ import * as DB from "./db"; import * as TestUI from "./test-ui"; import * as Misc from "./misc"; -export function saveActiveToCookie() { +export function saveActiveToLocalStorage() { let tags = []; try { @@ -18,7 +18,7 @@ export function saveActiveToCookie() { // expires: d, // path: "/", // }); - Misc.setCookie("activeTags", JSON.stringify(tags), 365); + window.localStorage.setItem("activeTags", JSON.stringify(tags)); } catch (e) {} } @@ -33,12 +33,12 @@ export function toggle(tagid, nosave = false) { } }); TestUI.updateModesNotice(); - if (!nosave) saveActiveToCookie(); + if (!nosave) saveActiveToLocalStorage(); } -export function loadActiveFromCookie() { +export function loadActiveFromLocalStorage() { // let newTags = $.cookie("activeTags"); - let newTags = Misc.getCookie("activeTags"); + let newTags = window.localStorage.getItem("activeTags"); if (newTags !== undefined && newTags !== "") { try { newTags = JSON.parse(newTags); @@ -48,6 +48,6 @@ export function loadActiveFromCookie() { newTags.forEach((ntag) => { toggle(ntag, true); }); - saveActiveToCookie(); + saveActiveToLocalStorage(); } } diff --git a/src/js/ui.js b/src/js/ui.js index 16a6b634a..bee3788fe 100644 --- a/src/js/ui.js +++ b/src/js/ui.js @@ -225,12 +225,12 @@ window.addEventListener("keydown", function (e) { $(".merchBanner a").click((event) => { $(".merchBanner").remove(); - Misc.setCookie("merchbannerclosed", true, 365); + window.localStorage.setItem("merchbannerclosed", true); }); $(".merchBanner .fas").click((event) => { $(".merchBanner").remove(); - Misc.setCookie("merchbannerclosed", true, 365); + window.localStorage.setItem("merchbannerclosed", true); Notifications.add( "Won't remind you anymore. Thanks for continued support <3", 0, From 29454166097059cfe341732375ab995593c9617a Mon Sep 17 00:00:00 2001 From: SeerLite Date: Mon, 5 Apr 2021 22:29:45 -0400 Subject: [PATCH 2/4] Try to migrate from cookies to localStorage --- src/js/misc.js | 23 +++++++++++++++++++++++ src/js/ready.js | 1 + 2 files changed, 24 insertions(+) diff --git a/src/js/misc.js b/src/js/misc.js index 28e7be458..de5420c09 100644 --- a/src/js/misc.js +++ b/src/js/misc.js @@ -287,6 +287,29 @@ export async function getLanguage(lang) { } } +export function migrateFromCookies() { + ["resultFilters", "config", "merchbannerclosed", "activeTags"].forEach( + function (name) { + let decodedCookie = decodeURIComponent(document.cookie).split(";"); + let value = null; + + for (var i = 0; i < decodedCookie.length; i++) { + var c = decodedCookie[i]; + while (c.charAt(0) == " ") { + c = c.substring(1); + } + if (c.indexOf(name + "=") == 0) { + value = c.substring(name.length + 1, c.length); + } + } + + if (value) { + window.localStorage.setItem(name, value); + } + } + ); +} + export function sendVerificationEmail() { Loader.show(); let cu = firebase.auth().currentUser; diff --git a/src/js/ready.js b/src/js/ready.js index d2ef7e4e1..bbad0d91b 100644 --- a/src/js/ready.js +++ b/src/js/ready.js @@ -7,6 +7,7 @@ import * as RouteController from "./route-controller"; import * as UI from "./ui"; ManualRestart.set(); +Misc.migrateFromCookies(); UpdateConfig.loadFromLocalStorage(); Misc.getReleasesFromGitHub(); From 18141a52a6979a205ffa3acbecd9d46ad8e70375 Mon Sep 17 00:00:00 2001 From: SeerLite Date: Mon, 5 Apr 2021 23:03:59 -0400 Subject: [PATCH 3/4] Clear each cookie after migrating it --- src/js/misc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/misc.js b/src/js/misc.js index de5420c09..4063d0dcd 100644 --- a/src/js/misc.js +++ b/src/js/misc.js @@ -305,6 +305,7 @@ export function migrateFromCookies() { if (value) { window.localStorage.setItem(name, value); + $.removeCookie(name, { path: "/" }); } } ); From 72c846416d31dc7e5a28913928fed8ba1fca9d96 Mon Sep 17 00:00:00 2001 From: SeerLite Date: Mon, 5 Apr 2021 23:42:36 -0400 Subject: [PATCH 4/4] Treat null new config as empty localStorage.getItem() returns null for inexistent keys. --- src/js/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/config.js b/src/js/config.js index b10df9c40..c511b50ee 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -1665,7 +1665,7 @@ export function loadFromLocalStorage() { console.log("loading localStorage config"); // let newConfig = $.cookie("config"); let newConfig = window.localStorage.getItem("config"); - if (newConfig !== undefined && newConfig !== "") { + if (newConfig !== undefined && newConfig !== null && newConfig !== "") { try { newConfig = JSON.parse(newConfig); } catch (e) {