From a0d79875eaab9d183990c534fd250769f5e802db Mon Sep 17 00:00:00 2001 From: RainyXeon Date: Mon, 21 Oct 2024 20:07:53 +0700 Subject: [PATCH] add: new cache state storing and handling --- webroot/index.html | 5 ++++- webroot/js/language.js | 1 - webroot/js/modal/errorHistory.js | 17 +++++++++-------- webroot/js/navbar.js | 22 ++++++++++++++-------- webroot/js/smallPage/language.js | 15 ++++++++++++--- webroot/js/smallPage/theme.js | 13 +++++++++++-- webroot/js/smallPageDesabler.js | 11 +++++++---- 7 files changed, 57 insertions(+), 27 deletions(-) diff --git a/webroot/index.html b/webroot/index.html index 176c2b6..0abf2c4 100644 --- a/webroot/index.html +++ b/webroot/index.html @@ -1,11 +1,14 @@ - + + + + diff --git a/webroot/js/language.js b/webroot/js/language.js index 5b53964..bc30ade 100644 --- a/webroot/js/language.js +++ b/webroot/js/language.js @@ -43,7 +43,6 @@ export async function getTranslations(locate) { return translateData.json() } -/* INFO: This list is in alphabetical order. */ export async function getAvailableLanguages() { const lsCmd = await exec('ls /data/adb/modules/zygisksu/webroot/lang') diff --git a/webroot/js/modal/errorHistory.js b/webroot/js/modal/errorHistory.js index 2a408fb..3c5a6f9 100644 --- a/webroot/js/modal/errorHistory.js +++ b/webroot/js/modal/errorHistory.js @@ -5,32 +5,33 @@ const target = document.getElementById('errorh_modal') const close_button = document.getElementById('errorh_modal_close') const clearall_button = document.getElementById('errorh_clear_all') const panel = document.getElementById('errorh_panel') +const error_history_data_state = document.getElementById('cache-modal-error-history-state') -let sys_module_mode = localStorage.getItem('/cache/modal/error_history/state') -sys_module_mode = setData('closed') +let sys_module_mode = error_history_data_state.getAttribute('content') +sys_module_mode = setData('closed', error_history_data_state) button.addEventListener('click', () => { target.style.top = '0%' - sys_module_mode = setData('opened') + sys_module_mode = setData('opened', error_history_data_state) }) backport.addEventListener('click', () => { if (sys_module_mode == 'opened') { target.style.top = '100%' - sys_module_mode = setData('closed') + sys_module_mode = setData('closed', error_history_data_state) return } target.style.top = '0%' - sys_module_mode = setData('opened') + sys_module_mode = setData('opened', error_history_data_state) }) close_button.addEventListener('click', () => { target.style.top = '100%' - sys_module_mode = setData('closed') + sys_module_mode = setData('closed', error_history_data_state) }) copy_button.addEventListener('click', () => { @@ -42,8 +43,8 @@ clearall_button.addEventListener('click', () => { localStorage.setItem('/system/error', '') }) -function setData(mode) { - localStorage.setItem('/cache/modal/error_history/state', mode) +function setData(mode, tag) { + tag.setAttribute('content', mode) return mode } \ No newline at end of file diff --git a/webroot/js/navbar.js b/webroot/js/navbar.js index e375acc..e3512ae 100644 --- a/webroot/js/navbar.js +++ b/webroot/js/navbar.js @@ -1,4 +1,7 @@ -setData('home') +const navbar_data_tag = document.getElementById('cache-navbar-previous') +const small_panel_data_tag = document.getElementById('cache-page-small-previous') + +setData('home', navbar_data_tag) document.getElementById('panel_home').classList.toggle('show') document.getElementById(`nibg_home`).classList.toggle('show') @@ -6,14 +9,17 @@ document.getElementById(`nibg_home`).classList.toggle('show') document.querySelectorAll('[name=navbutton]').forEach((element) => { element.addEventListener('click', (event) => { let smallPagePass = false - const value = event.target.value - const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous') - const small_panel = localStorage.getItem('/cache/page/small/previous') + const value = event.target.value + const previous = !navbar_data_tag.getAttribute('content') + ? setData('home', navbar_data_tag) + : navbar_data_tag.getAttribute('content') + + const small_panel = small_panel_data_tag.getAttribute('content') if (small_panel && small_panel.length !== 0) { document.getElementById(`small_panel_${small_panel}`).classList.remove('show') - localStorage.removeItem('/cache/page/small/previous') + small_panel_data_tag.removeAttribute('content') smallPagePass = true } @@ -35,12 +41,12 @@ document.querySelectorAll('[name=navbutton]').forEach((element) => { curr_input.setAttribute('checked', '') i_background.classList.toggle('show') - setData(value) + setData(value, navbar_data_tag) }) }) -function setData(data) { - localStorage.setItem('/cache/navbar/previous', data) +function setData(data, tag) { + tag.setAttribute('content', data) return data } \ No newline at end of file diff --git a/webroot/js/smallPage/language.js b/webroot/js/smallPage/language.js index 6fbb400..af35134 100644 --- a/webroot/js/smallPage/language.js +++ b/webroot/js/smallPage/language.js @@ -28,11 +28,14 @@ async function setAvailableLanguage() { setAvailableLanguage() /* INFO: Event setup */ +const navbar_data_tag = document.getElementById('cache-navbar-previous') +const small_panel_data_tag = document.getElementById('cache-page-small-previous') + document.getElementById('lang_page_toggle').addEventListener('click', () => { - const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous') + const previous = !navbar_data_tag.getAttribute('content') ? setData('home', small_panel_data_tag) : navbar_data_tag.getAttribute('content') document.getElementById(`panel_${previous}`).classList.remove('show') document.getElementById('small_panel_language').classList.toggle('show') - localStorage.setItem('/cache/page/small/previous', 'language') + small_panel_data_tag.setAttribute('content', 'language') }) document.getElementById('sp_lang_close').addEventListener('click', () => smallPageDisabler('language', 'settings')) @@ -45,4 +48,10 @@ document.addEventListener('click', async (event) => { await setNewLanguage(getLangLocate) localStorage.setItem('/system/language', getLangLocate) -}, false) \ No newline at end of file +}, false) + +function setData(data, tag) { + tag.setAttribute('content', data) + + return data +} \ No newline at end of file diff --git a/webroot/js/smallPage/theme.js b/webroot/js/smallPage/theme.js index bb4b637..7d4563d 100644 --- a/webroot/js/smallPage/theme.js +++ b/webroot/js/smallPage/theme.js @@ -29,6 +29,9 @@ if (!sys_theme) sys_theme = setData('dark') themeList[sys_theme](true) // INFO: Event logic +const navbar_data_tag = document.getElementById('cache-navbar-previous') +const small_panel_data_tag = document.getElementById('cache-page-small-previous') + document.getElementById('sp_theme_close').addEventListener('click', () => smallPageDisabler('theme', 'settings')) document.addEventListener('click', async (event) => { @@ -45,10 +48,10 @@ document.addEventListener('click', async (event) => { }, false) page_toggle.addEventListener('click', () => { - const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous') + const previous = !navbar_data_tag.getAttribute('content') ? setTagData('home', small_panel_data_tag) : navbar_data_tag.getAttribute('content') document.getElementById(`panel_${previous}`).classList.remove('show') document.getElementById('small_panel_theme').classList.toggle('show') - localStorage.setItem('/cache/page/small/previous', 'theme') + small_panel_data_tag.setAttribute('content', 'theme') }) window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { @@ -64,3 +67,9 @@ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', eve break } }); + +function setTagData(data, tag) { + tag.setAttribute('content', data) + + return data +} diff --git a/webroot/js/smallPageDesabler.js b/webroot/js/smallPageDesabler.js index 939c11e..d30667a 100644 --- a/webroot/js/smallPageDesabler.js +++ b/webroot/js/smallPageDesabler.js @@ -1,8 +1,11 @@ export function smallPageDisabler(page_name, new_page) { - document.getElementById(`small_panel_${page_name}`).classList.remove('show') - localStorage.removeItem('/cache/page/small/previous') + const navbar_data_tag = document.getElementById('cache-navbar-previous') + const small_panel_data_tag = document.getElementById('cache-page-small-previous') - const previous = localStorage.getItem('/cache/navbar/previous') + document.getElementById(`small_panel_${page_name}`).classList.remove('show') + small_panel_data_tag.removeAttribute('content') + + const previous = navbar_data_tag.getAttribute('content') /* INFO: Disable icon on old state */ const pre_input = document.getElementById(`n_${previous}`) @@ -19,5 +22,5 @@ export function smallPageDisabler(page_name, new_page) { curr_input.setAttribute('checked', '') i_background.classList.toggle('show') - localStorage.setItem('/cache/navbar/previous', 'settings') + navbar_data_tag.setAttribute('content', 'settings') } \ No newline at end of file