feat: css-builders to use assetBaseUrl

This commit is contained in:
Barış Soner Uşaklı 2022-02-09 13:32:39 -05:00
parent e0befdeb1e
commit 18161e346a
5 changed files with 22 additions and 14 deletions

11
lib/base-url.ts Normal file
View file

@ -0,0 +1,11 @@
const nconf = require.main.require('nconf');

const apiControllers = require.main.require('./src/controllers/api');

export async function getBaseUrl(): Promise<string> {
const { assetBaseUrl } = await apiControllers.loadConfig({ uid: 0, query: { } });

return assetBaseUrl.startsWith('http') ?
assetBaseUrl :
nconf.get('base_url') + assetBaseUrl;
}

View file

@ -9,6 +9,7 @@ import {
import { uniq } from 'lodash';

import * as cssBuilders from './css-builders';
import { getBaseUrl } from './base-url';
import { clearCache } from './parse';
import { getAll as getCustomizations } from './customizations';

@ -158,6 +159,7 @@ export default async function build(): Promise<void> {
});

// generate CSS styles
cssBuilders.setBaseUrl(await getBaseUrl());
const css = packs.map(pack => cssBuilders[pack.mode](pack)).join('\n');
const cssFile = `${css}\n.emoji-customizations {
display: inline-block;

View file

@ -1,8 +1,11 @@
import { basename } from 'path';

const buster = require.main.require('./src/meta').config['cache-buster'];
const nconf = require.main.require('nconf');
const url = nconf.get('url');
let baseUrl = '';

export function setBaseUrl(url:string):void {
baseUrl = url;
}

export function images(pack: EmojiDefinition): string {
return `.emoji-${pack.id} {` +
@ -18,7 +21,7 @@ export function sprite(pack: EmojiDefinition): string {
`background-position: ${pack.dictionary[name].backgroundPosition};` +
'}');

const route = `${url}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;
const route = `${baseUrl}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;
return `.emoji-${pack.id} {
background-image: url(${route}/${basename(pack.sprite.file)}?${buster});
background-size: ${pack.sprite.backgroundSize};
@ -48,7 +51,7 @@ export function sprite(pack: EmojiDefinition): string {
}

export function font(pack: EmojiDefinition): string {
const route = `${url}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;
const route = `${baseUrl}/plugins/nodebb-plugin-emoji/emoji/${pack.id}`;

return `@font-face {
font-family: '${pack.font.family}';

View file

@ -5,18 +5,10 @@ import * as parse from './parse';
import { tableFile } from './build';
import { build } from './pubsub';
import controllers from './controllers';
import { getBaseUrl } from './base-url';

const nconf = require.main.require('nconf');
const buster = require.main.require('./src/meta').config['cache-buster'];
const apiControllers = require.main.require('./src/controllers/api');

async function getBaseUrl(): Promise<string> {
const { assetBaseUrl } = await apiControllers.loadConfig({ uid: 0, query: { } });

return assetBaseUrl.startsWith('http') ?
assetBaseUrl :
nconf.get('base_url') + assetBaseUrl;
}

export async function init(params: any): Promise<void> {
controllers(params);
@ -27,7 +19,6 @@ export async function init(params: any): Promise<void> {
parseNative: boolean;
};

// get assetBaseUrl from core config
const baseUrl = await getBaseUrl();

// initialize parser flags