mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
core: drop system/setting-loaded event
This commit is contained in:
1 parent
48c358c29c
commit
54ae550586
5 files changed
+44
-34
No files matched your search
@@ -8,7 +8,7 @@ import moment from 'moment-timezone';
|
||||
import Schema from 'schemastery';
|
||||
import { LangConfig, parseLang } from '@hydrooj/common';
|
||||
import { findFileSync, randomstring } from '@hydrooj/utils';
|
||||
import { Context } from '../context';
|
||||
import { Context, Service } from '../context';
|
||||
import { Setting as _Setting } from '../interface';
|
||||
import { Logger } from '../logger';
|
||||
import * as builtin from './builtin';
|
||||
@@ -378,42 +378,54 @@ SystemSetting(
|
||||
|
||||
export const langs: Record<string, LangConfig> = {};
|
||||
|
||||
export const inject = ['db'];
|
||||
export async function apply(ctx: Context) {
|
||||
logger.info('Ensuring settings');
|
||||
for (const lang in global.Hydro.locales) {
|
||||
if (!global.Hydro.locales[lang].__interface) continue;
|
||||
langRange[lang] = global.Hydro.locales[lang].__langname;
|
||||
export class SettingModelService extends Service {
|
||||
static inject = ['db', 'model:system'];
|
||||
|
||||
constructor(ctx: Context) {
|
||||
super(ctx, 'model:setting');
|
||||
}
|
||||
const system = global.Hydro.model.system;
|
||||
for (const setting of SYSTEM_SETTINGS) {
|
||||
if (!setting.value) continue;
|
||||
const current = await ctx.db.collection('system').findOne({ _id: setting.key });
|
||||
if (!current || current.value == null || current.value === '') {
|
||||
await system.set(setting.key, setting.value);
|
||||
|
||||
async [Service.init]() {
|
||||
logger.info('Ensuring settings');
|
||||
for (const lang in global.Hydro.locales) {
|
||||
if (!global.Hydro.locales[lang].__interface) continue;
|
||||
langRange[lang] = global.Hydro.locales[lang].__langname;
|
||||
}
|
||||
const system = this.ctx['model:system'];
|
||||
for (const setting of SYSTEM_SETTINGS) {
|
||||
if (!setting.value) continue;
|
||||
const current = await this.ctx.db.collection('system').findOne({ _id: setting.key });
|
||||
if (!current || current.value == null || current.value === '') {
|
||||
await system.set(setting.key, setting.value);
|
||||
}
|
||||
}
|
||||
try {
|
||||
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 */ }
|
||||
return this.ctx.on('system/setting', (args) => {
|
||||
if (!args.hydrooj?.langs) return;
|
||||
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;
|
||||
});
|
||||
}
|
||||
try {
|
||||
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 */ }
|
||||
ctx.on('system/setting', (args) => {
|
||||
if (!args.hydrooj?.langs) return;
|
||||
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;
|
||||
});
|
||||
ctx.emit('system/setting-loaded');
|
||||
}
|
||||
|
||||
export const inject = ['db'];
|
||||
export function apply(ctx: Context) {
|
||||
ctx.plugin(SettingModelService);
|
||||
}
|
||||
|
||||
global.Hydro.model.setting = {
|
||||
apply,
|
||||
inject,
|
||||
SettingModelService,
|
||||
|
||||
Setting,
|
||||
PreferenceSetting,
|
||||
|
||||
@@ -35,7 +35,6 @@ export interface EventMap {
|
||||
'database/config': () => VoidReturn;
|
||||
|
||||
'system/setting': (args: Record<string, any>) => VoidReturn;
|
||||
'system/setting-loaded': () => VoidReturn;
|
||||
'bus/broadcast': (event: keyof EventMap, payload: any, trace?: string) => VoidReturn;
|
||||
'monitor/update': (type: 'server' | 'judge', $set: any) => VoidReturn;
|
||||
'monitor/collect': (info: any) => VoidReturn;
|
||||
|
||||
@@ -174,7 +174,7 @@ export async function apply(ctx: Context) {
|
||||
debouncedBuildUI();
|
||||
};
|
||||
ctx.on('system/setting', () => triggerHotUpdate());
|
||||
ctx.on('system/setting-loaded', () => triggerHotUpdate());
|
||||
ctx.inject(['model:setting'], () => triggerHotUpdate());
|
||||
ctx.on('app/watch/change', triggerHotUpdate);
|
||||
ctx.on('app/watch/unlink', triggerHotUpdate);
|
||||
ctx.on('app/i18n/update', debouncedBuildUI);
|
||||
|
||||
@@ -286,7 +286,6 @@ export async function apply(ctx: Context) {
|
||||
await buildVersions();
|
||||
});
|
||||
ctx.on('app/i18n/update', buildI18n);
|
||||
ctx.on('system/setting-loaded', buildCodeLangs);
|
||||
ctx.on('system/setting', buildCodeLangs);
|
||||
|
||||
const vite = await createServer({
|
||||
@@ -394,8 +393,8 @@ export async function apply(ctx: Context) {
|
||||
};
|
||||
ctx.on('app/watch/change', triggerHotUpdate);
|
||||
ctx.on('app/watch/unlink', triggerHotUpdate);
|
||||
ctx.on('system/setting-loaded', buildCodeLangs);
|
||||
ctx.on('system/setting', debouncedBuild);
|
||||
ctx.on('app/i18n/update', debouncedBuild);
|
||||
}
|
||||
ctx.inject(['model:setting'], buildCodeLangs);
|
||||
}
|
||||
@@ -297,7 +297,7 @@ export async function apply(ctx: Context) {
|
||||
},
|
||||
]);
|
||||
});
|
||||
ctx.inject(['vjudge'], async (c) => {
|
||||
ctx.inject(['vjudge', 'model:setting'], async (c) => {
|
||||
for (const [k, v] of Object.entries(providers)) {
|
||||
if (!SystemModel.get(`vjudge.builtin-${k}-disable`)) c.vjudge.addProvider(k, v);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user