diff --git a/apps/server/scripts/build.ts b/apps/server/scripts/build.ts index d2ed99ee2..6e0c53adf 100644 --- a/apps/server/scripts/build.ts +++ b/apps/server/scripts/build.ts @@ -7,6 +7,7 @@ async function main() { // Copy assets build.copy("src/assets", "assets/"); + build.triggerBuildAndCopyTo("packages/share-theme", "share-theme/assets/"); build.copy("/packages/share-theme/src/templates", "share-theme/templates/"); // Copy node modules dependencies diff --git a/apps/server/src/routes/assets.ts b/apps/server/src/routes/assets.ts index a1a2bfb63..efcb5a335 100644 --- a/apps/server/src/routes/assets.ts +++ b/apps/server/src/routes/assets.ts @@ -32,6 +32,7 @@ async function register(app: express.Application) { req.url = `/${assetUrlFragment}` + req.url; vite.middlewares(req, res, next); }); + app.use(`/share/assets/`, express.static(path.join(srcRoot, "../../packages/share-theme/dist"))); } else { const publicDir = path.join(resourceDir, "public"); if (!existsSync(publicDir)) { @@ -42,6 +43,7 @@ async function register(app: express.Application) { app.use(`/${assetUrlFragment}/stylesheets`, persistentCacheStatic(path.join(publicDir, "stylesheets"))); app.use(`/${assetUrlFragment}/fonts`, persistentCacheStatic(path.join(publicDir, "fonts"))); app.use(`/${assetUrlFragment}/translations/`, persistentCacheStatic(path.join(publicDir, "translations"))); + app.use(`/share/assets/`, persistentCacheStatic(path.join(resourceDir, "share-theme/assets"))); app.use(`/node_modules/`, persistentCacheStatic(path.join(publicDir, "node_modules"))); } app.use(`/${assetUrlFragment}/images`, persistentCacheStatic(path.join(resourceDir, "assets", "images"))); diff --git a/apps/server/src/share/content_renderer.ts b/apps/server/src/share/content_renderer.ts index 6a45b66e5..aa42ecf44 100644 --- a/apps/server/src/share/content_renderer.ts +++ b/apps/server/src/share/content_renderer.ts @@ -9,15 +9,13 @@ import type BBranch from "../becca/entities/bbranch.js"; import { t } from "i18next"; import SBranch from "./shaca/entities/sbranch.js"; import options from "../services/options.js"; -import utils, { getResourceDir, isDev, safeExtractMessageAndStackFromError } from "../services/utils.js"; -import app_path from "../services/app_path.js"; +import utils, { isDev, safeExtractMessageAndStackFromError } from "../services/utils.js"; import ejs from "ejs"; import log from "../services/log.js"; import { join } from "path"; import { readFileSync } from "fs"; const shareAdjustedAssetPath = isDev ? assetPath : `../${assetPath}`; -const shareAdjustedAppPath = isDev ? app_path : `../${app_path}`; const templateCache: Map = new Map(); /** @@ -99,9 +97,9 @@ export function renderNoteContent(note: SNote) { // Determine CSS to load. const cssToLoad: string[] = []; - if (!isDev && !note.isLabelTruthy("shareOmitDefaultCss")) { - cssToLoad.push(`${shareAdjustedAssetPath}/src/share.css`); - cssToLoad.push(`${shareAdjustedAssetPath}/src/boxicons.css`); + if (!note.isLabelTruthy("shareOmitDefaultCss")) { + cssToLoad.push(`assets/styles.css`); + cssToLoad.push(`assets/boxicons.css`); } for (const cssRelation of note.getRelations("shareCss")) { cssToLoad.push(`api/notes/${cssRelation.value}/download`); @@ -109,7 +107,7 @@ export function renderNoteContent(note: SNote) { // Determine JS to load. const jsToLoad: string[] = [ - `${shareAdjustedAppPath}/share.js` + "assets/scripts.js" ]; for (const jsRelation of note.getRelations("shareJs")) { jsToLoad.push(`api/notes/${jsRelation.value}/download`); @@ -147,7 +145,6 @@ function renderNoteContentInternal(note: SNote | BNote, renderArgs: RenderArgs) isEmpty, assetPath: shareAdjustedAssetPath, assetUrlFragment, - appPath: shareAdjustedAppPath, showLoginInShareTheme, t, isDev,