diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index 91754ac01..386297760 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -404,6 +404,7 @@ export async function apply(ctx: Context) { LangSettingNode.range = range; ServerLangSettingNode.range = range; }); + ctx.emit('system/setting-loaded'); } global.Hydro.model.setting = { diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index 8e1ec1233..c412fb4fa 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -35,6 +35,7 @@ export interface EventMap { 'database/config': () => VoidReturn; 'system/setting': (args: Record) => 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; diff --git a/packages/ui-default/backendlib/builder.ts b/packages/ui-default/backendlib/builder.ts index f3f61521d..56e4bedfd 100644 --- a/packages/ui-default/backendlib/builder.ts +++ b/packages/ui-default/backendlib/builder.ts @@ -172,6 +172,7 @@ export async function apply(ctx: Context) { debouncedBuildUI(); }; ctx.on('system/setting', () => triggerHotUpdate()); + ctx.on('system/setting-loaded', () => triggerHotUpdate()); ctx.on('app/watch/change', triggerHotUpdate); ctx.on('app/watch/unlink', triggerHotUpdate); ctx.on('app/i18n/update', debouncedBuildUI);