diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-04 23:00:43 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-04 23:00:43 +0900 |
| commit | 1855ab60f193fc5b434a311213b08a0c249a5162 (patch) | |
| tree | 633b9202469110613e8209cd3446165091bfda88 /src | |
| parent | Clean up (diff) | |
| download | misskey-1855ab60f193fc5b434a311213b08a0c249a5162.tar.gz misskey-1855ab60f193fc5b434a311213b08a0c249a5162.tar.bz2 misskey-1855ab60f193fc5b434a311213b08a0c249a5162.zip | |
Resolve #3098
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/app/admin/views/instance.vue | 22 | ||||
| -rw-r--r-- | src/config/load.ts | 2 | ||||
| -rw-r--r-- | src/config/types.ts | 2 | ||||
| -rw-r--r-- | src/models/meta.ts | 28 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/update-meta.ts | 22 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 4 | ||||
| -rw-r--r-- | src/server/api/mastodon.ts | 4 |
7 files changed, 73 insertions, 11 deletions
diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index 1278f38a91..b63179c20d 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -1,9 +1,11 @@ <template> <div class="axbwjelsbymowqjyywpirzhdlszoncqs"> <ui-card> - <div slot="title">%i18n:@banner-url%</div> + <div slot="title">%i18n:@instance%</div> <section class="fit-top"> - <ui-input v-model="bannerUrl"/> + <ui-input v-model="name">%i18n:@instance-name%</ui-input> + <ui-textarea v-model="description">%i18n:@instance-description%</ui-textarea> + <ui-input v-model="bannerUrl">%i18n:@banner-url%</ui-input> <ui-button @click="updateMeta">%i18n:@save%</ui-button> </section> </ui-card> @@ -35,9 +37,20 @@ export default Vue.extend({ disableRegistration: false, disableLocalTimeline: false, bannerUrl: null, + name: null, + description: null, inviteCode: null, }; }, + + created() { + (this as any).os.getMeta().then(meta => { + this.bannerUrl = meta.bannerUrl; + this.name = meta.name; + this.description = meta.description; + }); + }, + methods: { invite() { (this as any).api('admin/invite').then(x => { @@ -46,11 +59,14 @@ export default Vue.extend({ //(this as any).os.apis.dialog({ text: `Failed ${e}` }); }); }, + updateMeta() { (this as any).api('admin/update-meta', { disableRegistration: this.disableRegistration, disableLocalTimeline: this.disableLocalTimeline, - bannerUrl: this.bannerUrl + bannerUrl: this.bannerUrl, + name: this.name, + description: this.description }).then(() => { //(this as any).os.apis.dialog({ text: `Saved` }); }).catch(e => { diff --git a/src/config/load.ts b/src/config/load.ts index 9cdd742c6d..5be52c0ee7 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -51,8 +51,6 @@ export default function load() { if (config.maxNoteTextLength == null) config.maxNoteTextLength = 1000; - if (config.name == null) config.name = 'Misskey'; - return Object.assign(config, mixin); } diff --git a/src/config/types.ts b/src/config/types.ts index ab5ba4c04b..ce4ab3ec38 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -18,8 +18,6 @@ export type Source = { repository_url?: string; feedback_url?: string; }; - name?: string; - description?: string; languages?: string[]; welcome_bg_url?: string; url: string; diff --git a/src/models/meta.ts b/src/models/meta.ts index 3c0347485c..6d75258df8 100644 --- a/src/models/meta.ts +++ b/src/models/meta.ts @@ -1,9 +1,37 @@ import db from '../db/mongodb'; +import config from '../config'; const Meta = db.get<IMeta>('meta'); export default Meta; +// 後方互換性のため。 +// 過去のMisskeyではインスタンス名や紹介を設定ファイルに記述していたのでそれを移行 +if ((config as any).name) { + Meta.findOne({}).then(m => { + if (m != null && m.name == null) { + Meta.update({}, { + $set: { + name: (config as any).name + } + }); + } + }); +} +if ((config as any).description) { + Meta.findOne({}).then(m => { + if (m != null && m.description == null) { + Meta.update({}, { + $set: { + description: (config as any).description + } + }); + } + }); +} + export type IMeta = { + name?: string; + description?: string; broadcasts?: any[]; stats?: { notesCount: number; diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index fdf03573a1..26ade439ab 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -45,6 +45,20 @@ export const meta = { 'ja-JP': 'インスタンスのバナー画像URL' } }, + + name: { + validator: $.str.optional.nullable, + desc: { + 'ja-JP': 'インスタンス名' + } + }, + + description: { + validator: $.str.optional.nullable, + desc: { + 'ja-JP': 'インスタンスの紹介文' + } + }, } }; @@ -71,6 +85,14 @@ export default define(meta, (ps) => new Promise(async (res, rej) => { set.bannerUrl = ps.bannerUrl; } + if (ps.name !== undefined) { + set.name = ps.name; + } + + if (ps.description !== undefined) { + set.description = ps.description; + } + await Meta.update({}, { $set: set }, { upsert: true }); diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index b3027cd5ef..34a62d6452 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -41,8 +41,8 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { version: pkg.version, clientVersion: client.version, - name: config.name || 'Misskey', - description: config.description, + name: met.name || 'Misskey', + description: met.description, secure: config.https != null, machine: os.hostname(), diff --git a/src/server/api/mastodon.ts b/src/server/api/mastodon.ts index a9253be805..a5b59e2e0f 100644 --- a/src/server/api/mastodon.ts +++ b/src/server/api/mastodon.ts @@ -37,8 +37,8 @@ router.get('/v1/instance', async ctx => { // TODO: This is a temporary implement ctx.body = { uri: config.hostname, - title: config.name || 'Misskey', - description: config.description || '', + title: meta.name || 'Misskey', + description: meta.description || '', email: config.maintainer.email || config.maintainer.url.startsWith('mailto:') ? config.maintainer.url.slice(7) : '', version: `0.0.0:compatible:misskey:${pkg.version}`, // TODO: How to tell about that this is an api for compatibility? thumbnail: meta.bannerUrl, |