mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	refactor: separate meta api for admin or not
This commit is contained in:
		
							parent
							
								
									725b78349a
								
							
						
					
					
						commit
						d0a346ed8a
					
				
					 14 changed files with 413 additions and 196 deletions
				
			
		
							
								
								
									
										401
									
								
								packages/backend/src/server/api/endpoints/admin/meta.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										401
									
								
								packages/backend/src/server/api/endpoints/admin/meta.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,401 @@
 | 
			
		|||
import config from '@/config/index.js';
 | 
			
		||||
import define from '../../define.js';
 | 
			
		||||
import { fetchMeta } from '@/misc/fetch-meta.js';
 | 
			
		||||
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	tags: ['meta'],
 | 
			
		||||
 | 
			
		||||
	requireCredential: true,
 | 
			
		||||
	requireAdmin: true,
 | 
			
		||||
 | 
			
		||||
	res: {
 | 
			
		||||
		type: 'object',
 | 
			
		||||
		optional: false, nullable: false,
 | 
			
		||||
		properties: {
 | 
			
		||||
			driveCapacityPerLocalUserMb: {
 | 
			
		||||
				type: 'number',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			driveCapacityPerRemoteUserMb: {
 | 
			
		||||
				type: 'number',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			cacheRemoteFiles: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			emailRequiredForSignup: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			enableHcaptcha: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			hcaptchaSiteKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			enableRecaptcha: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			recaptchaSiteKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			swPublickey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			mascotImageUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
				default: '/assets/ai.png',
 | 
			
		||||
			},
 | 
			
		||||
			bannerUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			errorImageUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
				default: 'https://xn--931a.moe/aiart/yubitun.png',
 | 
			
		||||
			},
 | 
			
		||||
			iconUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			maxNoteTextLength: {
 | 
			
		||||
				type: 'number',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			emojis: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'object',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
					properties: {
 | 
			
		||||
						id: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
							format: 'id',
 | 
			
		||||
						},
 | 
			
		||||
						aliases: {
 | 
			
		||||
							type: 'array',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
							items: {
 | 
			
		||||
								type: 'string',
 | 
			
		||||
								optional: false, nullable: false,
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						category: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: true,
 | 
			
		||||
						},
 | 
			
		||||
						host: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: true,
 | 
			
		||||
						},
 | 
			
		||||
						url: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
							format: 'url',
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			ads: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'object',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
					properties: {
 | 
			
		||||
						place: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
						},
 | 
			
		||||
						url: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
							format: 'url',
 | 
			
		||||
						},
 | 
			
		||||
						imageUrl: {
 | 
			
		||||
							type: 'string',
 | 
			
		||||
							optional: false, nullable: false,
 | 
			
		||||
							format: 'url',
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			enableEmail: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			enableTwitterIntegration: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			enableGithubIntegration: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			enableDiscordIntegration: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			enableServiceWorker: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			translatorAvailable: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: false, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			proxyAccountName: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: false, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			userStarForReactionFallback: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			pinnedUsers: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			hiddenTags: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			blockedHosts: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			hcaptchaSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			recaptchaSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			proxyAccountId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
				format: 'id',
 | 
			
		||||
			},
 | 
			
		||||
			twitterConsumerKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			twitterConsumerSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			githubClientId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			githubClientSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			discordClientId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			discordClientSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			summaryProxy: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			email: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpSecure: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			smtpHost: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpPort: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpUser: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpPass: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			swPrivateKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			useObjectStorage: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageBaseUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageBucket: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStoragePrefix: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageEndpoint: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageRegion: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStoragePort: {
 | 
			
		||||
				type: 'number',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageAccessKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageUseSSL: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageUseProxy: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageSetPublicRead: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
export const paramDef = {
 | 
			
		||||
	type: 'object',
 | 
			
		||||
	properties: {
 | 
			
		||||
	},
 | 
			
		||||
	required: [],
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line import/no-default-export
 | 
			
		||||
export default define(meta, paramDef, async (ps, me) => {
 | 
			
		||||
	const instance = await fetchMeta(true);
 | 
			
		||||
 | 
			
		||||
	return {
 | 
			
		||||
		maintainerName: instance.maintainerName,
 | 
			
		||||
		maintainerEmail: instance.maintainerEmail,
 | 
			
		||||
		version: config.version,
 | 
			
		||||
		name: instance.name,
 | 
			
		||||
		uri: config.url,
 | 
			
		||||
		description: instance.description,
 | 
			
		||||
		langs: instance.langs,
 | 
			
		||||
		tosUrl: instance.ToSUrl,
 | 
			
		||||
		repositoryUrl: instance.repositoryUrl,
 | 
			
		||||
		feedbackUrl: instance.feedbackUrl,
 | 
			
		||||
		disableRegistration: instance.disableRegistration,
 | 
			
		||||
		disableLocalTimeline: instance.disableLocalTimeline,
 | 
			
		||||
		disableGlobalTimeline: instance.disableGlobalTimeline,
 | 
			
		||||
		driveCapacityPerLocalUserMb: instance.localDriveCapacityMb,
 | 
			
		||||
		driveCapacityPerRemoteUserMb: instance.remoteDriveCapacityMb,
 | 
			
		||||
		emailRequiredForSignup: instance.emailRequiredForSignup,
 | 
			
		||||
		enableHcaptcha: instance.enableHcaptcha,
 | 
			
		||||
		hcaptchaSiteKey: instance.hcaptchaSiteKey,
 | 
			
		||||
		enableRecaptcha: instance.enableRecaptcha,
 | 
			
		||||
		recaptchaSiteKey: instance.recaptchaSiteKey,
 | 
			
		||||
		swPublickey: instance.swPublicKey,
 | 
			
		||||
		themeColor: instance.themeColor,
 | 
			
		||||
		mascotImageUrl: instance.mascotImageUrl,
 | 
			
		||||
		bannerUrl: instance.bannerUrl,
 | 
			
		||||
		errorImageUrl: instance.errorImageUrl,
 | 
			
		||||
		iconUrl: instance.iconUrl,
 | 
			
		||||
		backgroundImageUrl: instance.backgroundImageUrl,
 | 
			
		||||
		logoImageUrl: instance.logoImageUrl,
 | 
			
		||||
		maxNoteTextLength: MAX_NOTE_TEXT_LENGTH, // 後方互換性のため
 | 
			
		||||
		defaultLightTheme: instance.defaultLightTheme,
 | 
			
		||||
		defaultDarkTheme: instance.defaultDarkTheme,
 | 
			
		||||
		enableEmail: instance.enableEmail,
 | 
			
		||||
		enableTwitterIntegration: instance.enableTwitterIntegration,
 | 
			
		||||
		enableGithubIntegration: instance.enableGithubIntegration,
 | 
			
		||||
		enableDiscordIntegration: instance.enableDiscordIntegration,
 | 
			
		||||
		enableServiceWorker: instance.enableServiceWorker,
 | 
			
		||||
		translatorAvailable: instance.deeplAuthKey != null,
 | 
			
		||||
		pinnedPages: instance.pinnedPages,
 | 
			
		||||
		pinnedClipId: instance.pinnedClipId,
 | 
			
		||||
		cacheRemoteFiles: instance.cacheRemoteFiles,
 | 
			
		||||
 | 
			
		||||
		useStarForReactionFallback: instance.useStarForReactionFallback,
 | 
			
		||||
		pinnedUsers: instance.pinnedUsers,
 | 
			
		||||
		hiddenTags: instance.hiddenTags,
 | 
			
		||||
		blockedHosts: instance.blockedHosts,
 | 
			
		||||
		hcaptchaSecretKey: instance.hcaptchaSecretKey,
 | 
			
		||||
		recaptchaSecretKey: instance.recaptchaSecretKey,
 | 
			
		||||
		proxyAccountId: instance.proxyAccountId,
 | 
			
		||||
		twitterConsumerKey: instance.twitterConsumerKey,
 | 
			
		||||
		twitterConsumerSecret: instance.twitterConsumerSecret,
 | 
			
		||||
		githubClientId: instance.githubClientId,
 | 
			
		||||
		githubClientSecret: instance.githubClientSecret,
 | 
			
		||||
		discordClientId: instance.discordClientId,
 | 
			
		||||
		discordClientSecret: instance.discordClientSecret,
 | 
			
		||||
		summalyProxy: instance.summalyProxy,
 | 
			
		||||
		email: instance.email,
 | 
			
		||||
		smtpSecure: instance.smtpSecure,
 | 
			
		||||
		smtpHost: instance.smtpHost,
 | 
			
		||||
		smtpPort: instance.smtpPort,
 | 
			
		||||
		smtpUser: instance.smtpUser,
 | 
			
		||||
		smtpPass: instance.smtpPass,
 | 
			
		||||
		swPrivateKey: instance.swPrivateKey,
 | 
			
		||||
		useObjectStorage: instance.useObjectStorage,
 | 
			
		||||
		objectStorageBaseUrl: instance.objectStorageBaseUrl,
 | 
			
		||||
		objectStorageBucket: instance.objectStorageBucket,
 | 
			
		||||
		objectStoragePrefix: instance.objectStoragePrefix,
 | 
			
		||||
		objectStorageEndpoint: instance.objectStorageEndpoint,
 | 
			
		||||
		objectStorageRegion: instance.objectStorageRegion,
 | 
			
		||||
		objectStoragePort: instance.objectStoragePort,
 | 
			
		||||
		objectStorageAccessKey: instance.objectStorageAccessKey,
 | 
			
		||||
		objectStorageSecretKey: instance.objectStorageSecretKey,
 | 
			
		||||
		objectStorageUseSSL: instance.objectStorageUseSSL,
 | 
			
		||||
		objectStorageUseProxy: instance.objectStorageUseProxy,
 | 
			
		||||
		objectStorageSetPublicRead: instance.objectStorageSetPublicRead,
 | 
			
		||||
		objectStorageS3ForcePathStyle: instance.objectStorageS3ForcePathStyle,
 | 
			
		||||
		deeplAuthKey: instance.deeplAuthKey,
 | 
			
		||||
		deeplIsPro: instance.deeplIsPro,
 | 
			
		||||
	};
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -290,151 +290,6 @@ export const meta = {
 | 
			
		|||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			userStarForReactionFallback: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			pinnedUsers: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			hiddenTags: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			blockedHosts: {
 | 
			
		||||
				type: 'array',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
				items: {
 | 
			
		||||
					type: 'string',
 | 
			
		||||
					optional: false, nullable: false,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			hcaptchaSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			recaptchaSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			proxyAccountId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
				format: 'id',
 | 
			
		||||
			},
 | 
			
		||||
			twitterConsumerKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			twitterConsumerSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			githubClientId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			githubClientSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			discordClientId: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			discordClientSecret: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			summaryProxy: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			email: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpSecure: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			smtpHost: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpPort: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpUser: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			smtpPass: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			swPrivateKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			useObjectStorage: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageBaseUrl: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageBucket: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStoragePrefix: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageEndpoint: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageRegion: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStoragePort: {
 | 
			
		||||
				type: 'number',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageAccessKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageSecretKey: {
 | 
			
		||||
				type: 'string',
 | 
			
		||||
				optional: true, nullable: true,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageUseSSL: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageUseProxy: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
			objectStorageSetPublicRead: {
 | 
			
		||||
				type: 'boolean',
 | 
			
		||||
				optional: true, nullable: false,
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
} as const;
 | 
			
		||||
| 
						 | 
				
			
			@ -552,45 +407,6 @@ export default define(meta, paramDef, async (ps, me) => {
 | 
			
		|||
			serviceWorker: instance.enableServiceWorker,
 | 
			
		||||
			miauth: true,
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		if (me && me.isAdmin) {
 | 
			
		||||
			response.useStarForReactionFallback = instance.useStarForReactionFallback;
 | 
			
		||||
			response.pinnedUsers = instance.pinnedUsers;
 | 
			
		||||
			response.hiddenTags = instance.hiddenTags;
 | 
			
		||||
			response.blockedHosts = instance.blockedHosts;
 | 
			
		||||
			response.hcaptchaSecretKey = instance.hcaptchaSecretKey;
 | 
			
		||||
			response.recaptchaSecretKey = instance.recaptchaSecretKey;
 | 
			
		||||
			response.proxyAccountId = instance.proxyAccountId;
 | 
			
		||||
			response.twitterConsumerKey = instance.twitterConsumerKey;
 | 
			
		||||
			response.twitterConsumerSecret = instance.twitterConsumerSecret;
 | 
			
		||||
			response.githubClientId = instance.githubClientId;
 | 
			
		||||
			response.githubClientSecret = instance.githubClientSecret;
 | 
			
		||||
			response.discordClientId = instance.discordClientId;
 | 
			
		||||
			response.discordClientSecret = instance.discordClientSecret;
 | 
			
		||||
			response.summalyProxy = instance.summalyProxy;
 | 
			
		||||
			response.email = instance.email;
 | 
			
		||||
			response.smtpSecure = instance.smtpSecure;
 | 
			
		||||
			response.smtpHost = instance.smtpHost;
 | 
			
		||||
			response.smtpPort = instance.smtpPort;
 | 
			
		||||
			response.smtpUser = instance.smtpUser;
 | 
			
		||||
			response.smtpPass = instance.smtpPass;
 | 
			
		||||
			response.swPrivateKey = instance.swPrivateKey;
 | 
			
		||||
			response.useObjectStorage = instance.useObjectStorage;
 | 
			
		||||
			response.objectStorageBaseUrl = instance.objectStorageBaseUrl;
 | 
			
		||||
			response.objectStorageBucket = instance.objectStorageBucket;
 | 
			
		||||
			response.objectStoragePrefix = instance.objectStoragePrefix;
 | 
			
		||||
			response.objectStorageEndpoint = instance.objectStorageEndpoint;
 | 
			
		||||
			response.objectStorageRegion = instance.objectStorageRegion;
 | 
			
		||||
			response.objectStoragePort = instance.objectStoragePort;
 | 
			
		||||
			response.objectStorageAccessKey = instance.objectStorageAccessKey;
 | 
			
		||||
			response.objectStorageSecretKey = instance.objectStorageSecretKey;
 | 
			
		||||
			response.objectStorageUseSSL = instance.objectStorageUseSSL;
 | 
			
		||||
			response.objectStorageUseProxy = instance.objectStorageUseProxy;
 | 
			
		||||
			response.objectStorageSetPublicRead = instance.objectStorageSetPublicRead;
 | 
			
		||||
			response.objectStorageS3ForcePathStyle = instance.objectStorageS3ForcePathStyle;
 | 
			
		||||
			response.deeplAuthKey = instance.deeplAuthKey;
 | 
			
		||||
			response.deeplIsPro = instance.deeplIsPro;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return response;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,7 +84,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.enableHcaptcha = meta.enableHcaptcha;
 | 
			
		||||
			this.hcaptchaSiteKey = meta.hcaptchaSiteKey;
 | 
			
		||||
			this.hcaptchaSecretKey = meta.hcaptchaSecretKey;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.enableEmail = meta.enableEmail;
 | 
			
		||||
			this.email = meta.email;
 | 
			
		||||
			this.smtpSecure = meta.smtpSecure;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.blockedHosts = meta.blockedHosts.join('\n');
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.uri = meta.uri;
 | 
			
		||||
			this.enableDiscordIntegration = meta.enableDiscordIntegration;
 | 
			
		||||
			this.discordClientId = meta.discordClientId;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.uri = meta.uri;
 | 
			
		||||
			this.enableGithubIntegration = meta.enableGithubIntegration;
 | 
			
		||||
			this.githubClientId = meta.githubClientId;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.uri = meta.uri;
 | 
			
		||||
			this.enableTwitterIntegration = meta.enableTwitterIntegration;
 | 
			
		||||
			this.twitterConsumerKey = meta.twitterConsumerKey;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.enableTwitterIntegration = meta.enableTwitterIntegration;
 | 
			
		||||
			this.enableGithubIntegration = meta.enableGithubIntegration;
 | 
			
		||||
			this.enableDiscordIntegration = meta.enableDiscordIntegration;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.useObjectStorage = meta.useObjectStorage;
 | 
			
		||||
			this.objectStorageBaseUrl = meta.objectStorageBaseUrl;
 | 
			
		||||
			this.objectStorageBucket = meta.objectStorageBucket;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
		},
 | 
			
		||||
		save() {
 | 
			
		||||
			os.apiWithDialog('admin/update-meta', {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.proxyAccountId = meta.proxyAccountId;
 | 
			
		||||
			if (this.proxyAccountId) {
 | 
			
		||||
				this.proxyAccount = await os.api('users/show', { userId: this.proxyAccountId });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.summalyProxy = meta.summalyProxy;
 | 
			
		||||
			this.enableHcaptcha = meta.enableHcaptcha;
 | 
			
		||||
			this.enableRecaptcha = meta.enableRecaptcha;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -210,7 +210,7 @@ export default defineComponent({
 | 
			
		|||
 | 
			
		||||
	methods: {
 | 
			
		||||
		async init() {
 | 
			
		||||
			const meta = await os.api('meta', { detail: true });
 | 
			
		||||
			const meta = await os.api('admin/meta');
 | 
			
		||||
			this.name = meta.name;
 | 
			
		||||
			this.description = meta.description;
 | 
			
		||||
			this.tosUrl = meta.tosUrl;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue