core&ui: langs load fix

This commit is contained in:
undefined committed 2022-10-06 00:22:36 +08:00
1 parent 50cb3eaab5
commit 49693c27d4
8 files changed
+30 -46

No files matched your search

+3 -2
View File
@@ -59,9 +59,10 @@ export const service = getLoader('service', 'service');
export async function builtinModel(ctx: Context) {
const modelDir = path.resolve(__dirname, '..', 'model');
const models = ['task', 'blacklist', 'discussion', 'document'];
const models = await fs.readdir(modelDir);
for (const t of models) {
ctx.loader.reloadPlugin(ctx, path.resolve(modelDir, t), {}, `hydrooj/model/${t}`);
const q = path.resolve(modelDir, t);
if ('apply' in require(q)) ctx.loader.reloadPlugin(ctx, q, {}, `hydrooj/model/${t.split('.')[0]}`);
}
}
+2
View File
@@ -7,6 +7,7 @@ import fs from 'fs-extra';
import { Context } from '../context';
import { Logger } from '../logger';
import db from '../service/db';
import { sleep } from '../utils';
import {
addon, builtinModel, handler, lib, locale, model,
script, service, setting, template,
@@ -67,6 +68,7 @@ export async function apply(ctx: Context) {
await ctx.lifecycle.flush();
await script(pending, fail, ctx);
await ctx.lifecycle.flush();
await sleep(1000); // lifecycle.flush won't wait for async function
await ctx.parallel('app/started');
if (process.env.NODE_APP_INSTANCE === '0') {
const scripts = require('../upgrade').default;
-19
View File
@@ -1,19 +0,0 @@
import './builtin';
import './document';
import './domain';
import './blacklist';
import './opcount';
import './setting';
import './token';
import './user';
import './storage';
import './problem';
import './record';
import './contest';
import './message';
import './solution';
import './training';
import './discussion';
import './system';
import './oplog';
import './blog';
+17 -18
View File
@@ -3,11 +3,11 @@
import yaml from 'js-yaml';
import { Dictionary } from 'lodash';
import moment from 'moment-timezone';
import { parseLang } from '@hydrooj/utils/lib/lang';
import { LangConfig, parseLang } from '@hydrooj/utils/lib/lang';
import { retry } from '@hydrooj/utils/lib/utils';
import { Context } from '../context';
import { Setting as _Setting } from '../interface';
import { Logger } from '../logger';
import * as bus from '../service/bus';
import * as builtin from './builtin';
type SettingDict = Dictionary<_Setting>;
@@ -238,9 +238,9 @@ SystemSetting(
);
// eslint-disable-next-line import/no-mutable-exports
export let langs = {};
export const langs: Record<string, LangConfig> = {};
bus.on('app/started', async () => {
export async function apply(ctx: Context) {
logger.debug('Ensuring settings');
const system = global.Hydro.model.system;
for (const setting of SYSTEM_SETTINGS) {
@@ -252,27 +252,26 @@ bus.on('app/started', async () => {
}
}
try {
langs = parseLang(system.get('hydrooj.langs'));
global.Hydro.model.setting.langs = langs;
Object.assign(langs, parseLang(system.get('hydrooj.langs')));
const range = {};
for (const key in langs) range[key] = langs[key].display;
LangSettingNode.range = range;
ServerLangSettingNode.range = range;
} catch (e) { /* Ignore */ }
});
bus.on('system/setting', (args) => {
if (args.hydrooj?.langs) {
langs = parseLang(args.hydrooj.langs);
global.Hydro.model.setting.langs = langs;
const range = {};
for (const key in langs) range[key] = langs[key].display;
LangSettingNode.range = range;
ServerLangSettingNode.range = range;
}
});
console.log('l', langs?.cc);
ctx.on('system/setting', (args) => {
if (args.hydrooj?.langs) {
Object.assign(langs, parseLang(args.hydrooj.langs));
const range = {};
for (const key in langs) range[key] = langs[key].display;
LangSettingNode.range = range;
ServerLangSettingNode.range = range;
}
});
}
global.Hydro.model.setting = {
apply,
Setting,
PreferenceSetting,
AccountSetting,