From a5d08e2ac134fa0c5607d63879bd940275b7dd92 Mon Sep 17 00:00:00 2001 From: Jonathan Gamble <101470903+schlawg@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:42:54 -0500 Subject: [PATCH] trigger manifest updates on prod in an obviously wrong manner --- app/templating/AssetHelper.scala | 2 +- app/views/base/layout.scala | 2 +- modules/core/src/main/model.scala | 8 ++++++++ ui/.build/src/manifest.ts | 16 ++++------------ 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/templating/AssetHelper.scala b/app/templating/AssetHelper.scala index f056f1df10a55..2aba2aa117f0f 100644 --- a/app/templating/AssetHelper.scala +++ b/app/templating/AssetHelper.scala @@ -31,7 +31,7 @@ trait AssetHelper extends HasEnv: def assetVersion = AssetVersion.current - def updateManifest = if !env.net.isProd then env.manifest.update + def updateManifest = if !env.net.isProd || AssetVersion.checkResetDirty then env.manifest.update // bump flairs version if a flair is changed only (not added or removed) val flairVersion = "______2" diff --git a/app/views/base/layout.scala b/app/views/base/layout.scala index f302c51e1d9f9..0ac21a5fbb283 100644 --- a/app/views/base/layout.scala +++ b/app/views/base/layout.scala @@ -269,7 +269,7 @@ object layout: withHrefLangs: Option[LangPath] = None )(body: Frag)(using ctx: PageContext): Frag = import ctx.pref - if !netConfig.isProd then updateManifest + updateManifest frag( doctype, htmlTag( diff --git a/modules/core/src/main/model.scala b/modules/core/src/main/model.scala index 84c0b14efba02..94c4e938dbf0d 100644 --- a/modules/core/src/main/model.scala +++ b/modules/core/src/main/model.scala @@ -18,10 +18,18 @@ object ApiVersion extends OpaqueInt[ApiVersion]: opaque type AssetVersion = String object AssetVersion extends OpaqueString[AssetVersion]: private var stored = random + private var dirty = true def current = stored def change() = stored = random + dirty = true current + def checkResetDirty = + if dirty then + dirty = false + true + else false + private def random = AssetVersion(SecureRandom.nextString(6)) case class Changed(version: AssetVersion) diff --git a/ui/.build/src/manifest.ts b/ui/.build/src/manifest.ts index ecf50a590ceb6..990fc0f1fc90e 100644 --- a/ui/.build/src/manifest.ts +++ b/ui/.build/src/manifest.ts @@ -86,18 +86,10 @@ async function hashMove(src: string) { const content = await fs.promises.readFile(src, 'utf-8'); const hash = crypto.createHash('sha256').update(content).digest('hex').slice(0, 8); const basename = path.basename(src, '.css'); - const srcMapMove = env.prod - ? Promise.resolve() - : /*new Promise(async resolve => { - const mapContent = await fs.promises.readFile(`${src}.map`, 'utf-8'); - const cssMap = JSON.parse(mapContent); - cssMap.file = `${basename}.${hash}.css`; - await fs.promises.writeFile(path.join(env.cssDir, `${basename}.css.map`), JSON.stringify(cssMap)); - resolve();*/ - fs.promises.rename(`${src}.map`, path.join(env.cssDir, `${basename}.css.map`)); - //}); - await fs.promises.rename(src, path.join(env.cssDir, `${basename}.${hash}.css`)); - await srcMapMove; + await Promise.allSettled([ + env.prod ? undefined : fs.promises.rename(`${src}.map`, path.join(env.cssDir, `${basename}.css.map`)), + fs.promises.rename(src, path.join(env.cssDir, `${basename}.${hash}.css`)), + ]); return [path.basename(src, '.css'), hash]; }