From 9187c1d31c951c07319d563ac3532d9e6816a598 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 5 Feb 2025 08:07:24 +0200 Subject: [PATCH] don't compress theme cache as it takes ~1secon on mobile --- src/services/style_setter/style_setter.js | 40 ++++++++++------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js index 2be9e77a4..59e9899e7 100644 --- a/src/services/style_setter/style_setter.js +++ b/src/services/style_setter/style_setter.js @@ -93,32 +93,28 @@ export const generateTheme = (inputRuleset, callbacks, debug) => { export const tryLoadCache = async () => { console.info('Trying to load compiled theme data from cache') - const data = await localforage.getItem('pleromafe-theme-cache') - if (!data) return null - let cache + const cache = await localforage.getItem('pleromafe-theme-cache') + if (!cache) return null try { - const inflated = pako.inflate(data) - const decoded = new TextDecoder().decode(inflated) - cache = JSON.parse(decoded) - console.info(`Loaded theme from cache, compressed=${Math.ceil(data.length / 1024)}kiB size=${Math.ceil(inflated.length / 1024)}kiB`) + if (cache.engineChecksum === getEngineChecksum()) { + const eagerStyles = createStyleSheet(EAGER_STYLE_ID) + const lazyStyles = createStyleSheet(LAZY_STYLE_ID) + + cache.data[0].forEach(rule => eagerStyles.sheet.insertRule(rule, 'index-max')) + cache.data[1].forEach(rule => lazyStyles.sheet.insertRule(rule, 'index-max')) + + adoptStyleSheets([eagerStyles, lazyStyles]) + + console.info(`Loaded theme from cache`) + return true + } else { + console.warn('Engine checksum doesn\'t match, cache not usable, clearing') + localStorage.removeItem('pleroma-fe-theme-cache') + } } catch (e) { - console.error('Failed to decode theme cache:', e) + console.error('Failed to load theme cache:', e) return false } - if (cache.engineChecksum === getEngineChecksum()) { - const eagerStyles = createStyleSheet(EAGER_STYLE_ID) - const lazyStyles = createStyleSheet(LAZY_STYLE_ID) - - cache.data[0].forEach(rule => eagerStyles.sheet.insertRule(rule, 'index-max')) - cache.data[1].forEach(rule => lazyStyles.sheet.insertRule(rule, 'index-max')) - - adoptStyleSheets([eagerStyles, lazyStyles]) - - return true - } else { - console.warn('Engine checksum doesn\'t match, cache not usable, clearing') - localStorage.removeItem('pleroma-fe-theme-cache') - } } export const applyTheme = (