From 71aabe38b501e18cd20ef61e13d06cefa0f7b94a Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 8 Mar 2021 13:14:48 +0800 Subject: [PATCH] core: allow init discussion node --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index de121b529..ae785ef57 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.20.9", + "version": "2.20.10", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index f6dc9959a..ce56eb83a 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -8,9 +8,12 @@ import { log2 } from '../utils'; import type { DomainDoc } from '../interface'; import * as user from '../model/user'; import * as domain from '../model/domain'; +import * as discussion from '../model/discussion'; import * as system from '../model/system'; import { DOMAIN_SETTINGS, DOMAIN_SETTINGS_BY_KEY } from '../model/setting'; -import { PERM, PERMS_BY_FAMILY, PRIV } from '../model/builtin'; +import { + DEFAULT_NODES, PERM, PERMS_BY_FAMILY, PRIV, +} from '../model/builtin'; import { gravatar } from '../lib/misc'; import paginate from '../lib/paginate'; import { @@ -81,6 +84,18 @@ class DomainDashboardHandler extends ManageHandler { this.response.template = 'domain_dashboard.html'; this.response.body = { domain: this.domain, path }; } + + async postInitDiscussionNode({ domainId }) { + for (const category of Object.keys(DEFAULT_NODES)) { + for (const item of DEFAULT_NODES[category]) { + // eslint-disable-next-line no-await-in-loop + const curr = await discussion.getNode(domainId, item.name); + // eslint-disable-next-line no-await-in-loop + if (!curr) await discussion.addNode(domainId, item.name, category, item.pic ? { pic: item.pic } : undefined); + } + } + this.back(); + } } class DomainUserHandler extends ManageHandler {