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