logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: 545c875a857c129207624b4251cd7cdae1c24c67
parent a190389f3c9f44072465560dce7203e9ce328f2c
Author: Henry Jameson <me@hjkos.com>
Date:   Mon,  4 Mar 2024 19:03:29 +0200

process chunks strictly sequentially to avoid overloading the event
queue

Diffstat:

Msrc/services/style_setter/style_setter.js26++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js @@ -50,15 +50,25 @@ export const applyTheme = async (input) => { // Optimization - instead of processing all lazy rules in one go, process them in small chunks // so that UI can do other things and be somewhat responsive while less important rules are being // processed - chunk(themes3.lazy, 5).forEach(chunk => { - setTimeout(() => { - Promise.all(chunk.map(x => x())).then(result => { - getCssRules(result.filter(x => x), themes3.staticVars).forEach(rule => { - styleSheet.insertRule(rule, 'index-max') - }) + let counter = 0 + const chunks = chunk(themes3.lazy, 200) + // let t0 = performance.now() + const processChunk = () => { + const chunk = chunks[counter] + Promise.all(chunk.map(x => x())).then(result => { + getCssRules(result.filter(x => x), themes3.staticVars).forEach(rule => { + styleSheet.insertRule(rule, 'index-max') }) - }, 200) - }) + // const t1 = performance.now() + // console.debug('Chunk ' + counter + ' took ' + (t1 - t0) + 'ms') + // t0 = t1 + counter += 1 + if (counter < chunks.length) { + setTimeout(processChunk, 0) + } + }) + } + setTimeout(processChunk, 0) return Promise.resolve() }