enhance: TLキャッシュ容量を設定できるように
This commit is contained in:
		
							
								
								
									
										81
									
								
								packages/frontend/src/pages/admin/external-services.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								packages/frontend/src/pages/admin/external-services.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
<!--
 | 
			
		||||
SPDX-FileCopyrightText: syuilo and other misskey contributors
 | 
			
		||||
SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
<MkStickyContainer>
 | 
			
		||||
	<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
 | 
			
		||||
	<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
 | 
			
		||||
		<FormSuspense :p="init">
 | 
			
		||||
			<FormSection>
 | 
			
		||||
				<template #label>DeepL Translation</template>
 | 
			
		||||
 | 
			
		||||
				<div class="_gaps_m">
 | 
			
		||||
					<MkInput v-model="deeplAuthKey">
 | 
			
		||||
						<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
						<template #label>DeepL Auth Key</template>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
					<MkSwitch v-model="deeplIsPro">
 | 
			
		||||
						<template #label>Pro account</template>
 | 
			
		||||
					</MkSwitch>
 | 
			
		||||
				</div>
 | 
			
		||||
			</FormSection>
 | 
			
		||||
		</FormSuspense>
 | 
			
		||||
	</MkSpacer>
 | 
			
		||||
	<template #footer>
 | 
			
		||||
		<div :class="$style.footer">
 | 
			
		||||
			<MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
 | 
			
		||||
				<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
			</MkSpacer>
 | 
			
		||||
		</div>
 | 
			
		||||
	</template>
 | 
			
		||||
</MkStickyContainer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import FormSection from '@/components/form/section.vue';
 | 
			
		||||
import * as os from '@/os.js';
 | 
			
		||||
import { fetchInstance } from '@/instance.js';
 | 
			
		||||
import { i18n } from '@/i18n.js';
 | 
			
		||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
 | 
			
		||||
 | 
			
		||||
let deeplAuthKey: string = $ref('');
 | 
			
		||||
let deeplIsPro: boolean = $ref(false);
 | 
			
		||||
 | 
			
		||||
async function init() {
 | 
			
		||||
	const meta = await os.api('admin/meta');
 | 
			
		||||
	deeplAuthKey = meta.deeplAuthKey;
 | 
			
		||||
	deeplIsPro = meta.deeplIsPro;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function save() {
 | 
			
		||||
	os.apiWithDialog('admin/update-meta', {
 | 
			
		||||
		deeplAuthKey,
 | 
			
		||||
		deeplIsPro,
 | 
			
		||||
	}).then(() => {
 | 
			
		||||
		fetchInstance();
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const headerActions = $computed(() => []);
 | 
			
		||||
 | 
			
		||||
const headerTabs = $computed(() => []);
 | 
			
		||||
 | 
			
		||||
definePageMetadata({
 | 
			
		||||
	title: i18n.ts.instanceBlocking,
 | 
			
		||||
	icon: 'ti ti-ban',
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" module>
 | 
			
		||||
.footer {
 | 
			
		||||
	-webkit-backdrop-filter: var(--blur, blur(15px));
 | 
			
		||||
	backdrop-filter: var(--blur, blur(15px));
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -198,6 +198,11 @@ const menuDef = $computed(() => [{
 | 
			
		||||
		text: i18n.ts.proxyAccount,
 | 
			
		||||
		to: '/admin/proxy-account',
 | 
			
		||||
		active: currentPage?.route.name === 'proxy-account',
 | 
			
		||||
	}, {
 | 
			
		||||
		icon: 'ti ti-link',
 | 
			
		||||
		text: i18n.ts.externalServices,
 | 
			
		||||
		to: '/admin/external-services',
 | 
			
		||||
		active: currentPage?.route.name === 'external-services',
 | 
			
		||||
	}, {
 | 
			
		||||
		icon: 'ti ti-adjustments',
 | 
			
		||||
		text: i18n.ts.other,
 | 
			
		||||
 
 | 
			
		||||
@@ -81,16 +81,24 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		||||
					</FormSection>
 | 
			
		||||
 | 
			
		||||
					<FormSection>
 | 
			
		||||
						<template #label>DeepL Translation</template>
 | 
			
		||||
						<template #label>Timeline caching</template>
 | 
			
		||||
 | 
			
		||||
						<div class="_gaps_m">
 | 
			
		||||
							<MkInput v-model="deeplAuthKey">
 | 
			
		||||
								<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
								<template #label>DeepL Auth Key</template>
 | 
			
		||||
							<MkInput v-model="perLocalUserUserTimelineCacheMax" type="number">
 | 
			
		||||
								<template #label>perLocalUserUserTimelineCacheMax</template>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<MkInput v-model="perRemoteUserUserTimelineCacheMax" type="number">
 | 
			
		||||
								<template #label>perRemoteUserUserTimelineCacheMax</template>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<MkInput v-model="perUserHomeTimelineCacheMax" type="number">
 | 
			
		||||
								<template #label>perUserHomeTimelineCacheMax</template>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<MkInput v-model="perUserListTimelineCacheMax" type="number">
 | 
			
		||||
								<template #label>perUserListTimelineCacheMax</template>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
							<MkSwitch v-model="deeplIsPro">
 | 
			
		||||
								<template #label>Pro account</template>
 | 
			
		||||
							</MkSwitch>
 | 
			
		||||
						</div>
 | 
			
		||||
					</FormSection>
 | 
			
		||||
				</div>
 | 
			
		||||
@@ -133,8 +141,10 @@ let cacheRemoteSensitiveFiles: boolean = $ref(false);
 | 
			
		||||
let enableServiceWorker: boolean = $ref(false);
 | 
			
		||||
let swPublicKey: any = $ref(null);
 | 
			
		||||
let swPrivateKey: any = $ref(null);
 | 
			
		||||
let deeplAuthKey: string = $ref('');
 | 
			
		||||
let deeplIsPro: boolean = $ref(false);
 | 
			
		||||
let perLocalUserUserTimelineCacheMax: number = $ref(0);
 | 
			
		||||
let perRemoteUserUserTimelineCacheMax: number = $ref(0);
 | 
			
		||||
let perUserHomeTimelineCacheMax: number = $ref(0);
 | 
			
		||||
let perUserListTimelineCacheMax: number = $ref(0);
 | 
			
		||||
 | 
			
		||||
async function init(): Promise<void> {
 | 
			
		||||
	const meta = await os.api('admin/meta');
 | 
			
		||||
@@ -149,8 +159,10 @@ async function init(): Promise<void> {
 | 
			
		||||
	enableServiceWorker = meta.enableServiceWorker;
 | 
			
		||||
	swPublicKey = meta.swPublickey;
 | 
			
		||||
	swPrivateKey = meta.swPrivateKey;
 | 
			
		||||
	deeplAuthKey = meta.deeplAuthKey;
 | 
			
		||||
	deeplIsPro = meta.deeplIsPro;
 | 
			
		||||
	perLocalUserUserTimelineCacheMax = meta.perLocalUserUserTimelineCacheMax;
 | 
			
		||||
	perRemoteUserUserTimelineCacheMax = meta.perRemoteUserUserTimelineCacheMax;
 | 
			
		||||
	perUserHomeTimelineCacheMax = meta.perUserHomeTimelineCacheMax;
 | 
			
		||||
	perUserListTimelineCacheMax = meta.perUserListTimelineCacheMax;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function save(): void {
 | 
			
		||||
@@ -166,8 +178,10 @@ function save(): void {
 | 
			
		||||
		enableServiceWorker,
 | 
			
		||||
		swPublicKey,
 | 
			
		||||
		swPrivateKey,
 | 
			
		||||
		deeplAuthKey,
 | 
			
		||||
		deeplIsPro,
 | 
			
		||||
		perLocalUserUserTimelineCacheMax,
 | 
			
		||||
		perRemoteUserUserTimelineCacheMax,
 | 
			
		||||
		perUserHomeTimelineCacheMax,
 | 
			
		||||
		perUserListTimelineCacheMax,
 | 
			
		||||
	}).then(() => {
 | 
			
		||||
		fetchInstance();
 | 
			
		||||
	});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user