import $ from 'cafy'; import Meta from '../../../../models/meta'; import getParams from '../../get-params'; export const meta = { desc: { 'ja-JP': 'インスタンスの設定を更新します。' }, requireCredential: true, requireAdmin: true, params: { broadcasts: { validator: $.arr($.obj()).optional.nullable, desc: { 'ja-JP': 'ブロードキャスト' } }, emojis: { validator: $.arr($.obj()).optional, desc: { 'ja-JP': 'カスタム絵文字定義' } }, disableRegistration: { validator: $.bool.optional.nullable, desc: { 'ja-JP': '招待制か否か' } }, disableLocalTimeline: { validator: $.bool.optional.nullable, desc: { 'ja-JP': 'ローカルタイムライン(とソーシャルタイムライン)を無効にするか否か' } }, hidedTags: { validator: $.arr($.str).optional.nullable, desc: { 'ja-JP': '統計などで無視するハッシュタグ' } }, bannerUrl: { validator: $.str.optional.nullable, desc: { 'ja-JP': 'インスタンスのバナー画像URL' } }, } }; export default (params: any) => new Promise(async (res, rej) => { const [ps, psErr] = getParams(meta, params); if (psErr) return rej(psErr); const set = {} as any; if (ps.broadcasts) { set.broadcasts = ps.broadcasts; } if (ps.emojis) { set.emojis = ps.emojis; } if (typeof ps.disableRegistration === 'boolean') { set.disableRegistration = ps.disableRegistration; } if (typeof ps.disableLocalTimeline === 'boolean') { set.disableLocalTimeline = ps.disableLocalTimeline; } if (Array.isArray(ps.hidedTags)) { set.hidedTags = ps.hidedTags; } if (ps.bannerUrl !== undefined) { set.bannerUrl = ps.bannerUrl; } await Meta.update({}, { $set: set }, { upsert: true }); res(); });