refactor
This commit is contained in:
		@@ -50,8 +50,8 @@
 | 
			
		||||
import { computed } from 'vue';
 | 
			
		||||
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkSelect from '@/components/form/select.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkSelect from '@/components/MkSelect.vue';
 | 
			
		||||
import MkPagination from '@/components/MkPagination.vue';
 | 
			
		||||
import XAbuseReport from '@/components/MkAbuseReport.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
 
 | 
			
		||||
@@ -11,12 +11,12 @@
 | 
			
		||||
				<MkInput v-model="ad.imageUrl">
 | 
			
		||||
					<template #label>{{ i18n.ts.imageUrl }}</template>
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<FormRadios v-model="ad.place">
 | 
			
		||||
				<MkRadios v-model="ad.place">
 | 
			
		||||
					<template #label>Form</template>
 | 
			
		||||
					<option value="square">square</option>
 | 
			
		||||
					<option value="horizontal">horizontal</option>
 | 
			
		||||
					<option value="horizontal-big">horizontal-big</option>
 | 
			
		||||
				</FormRadios>
 | 
			
		||||
				</MkRadios>
 | 
			
		||||
				<!--
 | 
			
		||||
			<div style="margin: 32px 0;">
 | 
			
		||||
				{{ i18n.ts.priority }}
 | 
			
		||||
@@ -50,9 +50,9 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkTextarea from '@/components/form/textarea.vue';
 | 
			
		||||
import FormRadios from '@/components/form/radios.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkTextarea from '@/components/MkTextarea.vue';
 | 
			
		||||
import MkRadios from '@/components/MkRadios.vue';
 | 
			
		||||
import FormSplit from '@/components/form/split.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { i18n } from '@/i18n';
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,8 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkTextarea from '@/components/form/textarea.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkTextarea from '@/components/MkTextarea.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { i18n } from '@/i18n';
 | 
			
		||||
import { definePageMetadata } from '@/scripts/page-metadata';
 | 
			
		||||
 
 | 
			
		||||
@@ -2,50 +2,50 @@
 | 
			
		||||
<div>
 | 
			
		||||
	<FormSuspense :p="init">
 | 
			
		||||
		<div class="_gaps_m">
 | 
			
		||||
			<FormRadios v-model="provider">
 | 
			
		||||
			<MkRadios v-model="provider">
 | 
			
		||||
				<option :value="null">{{ i18n.ts.none }} ({{ i18n.ts.notRecommended }})</option>
 | 
			
		||||
				<option value="hcaptcha">hCaptcha</option>
 | 
			
		||||
				<option value="recaptcha">reCAPTCHA</option>
 | 
			
		||||
				<option value="turnstile">Turnstile</option>
 | 
			
		||||
			</FormRadios>
 | 
			
		||||
			</MkRadios>
 | 
			
		||||
 | 
			
		||||
			<template v-if="provider === 'hcaptcha'">
 | 
			
		||||
				<FormInput v-model="hcaptchaSiteKey">
 | 
			
		||||
				<MkInput v-model="hcaptchaSiteKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.hcaptchaSiteKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				<FormInput v-model="hcaptchaSecretKey">
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<MkInput v-model="hcaptchaSecretKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.hcaptchaSecretKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<FormSlot>
 | 
			
		||||
					<template #label>{{ i18n.ts.preview }}</template>
 | 
			
		||||
					<MkCaptcha provider="hcaptcha" :sitekey="hcaptchaSiteKey || '10000000-ffff-ffff-ffff-000000000001'"/>
 | 
			
		||||
				</FormSlot>
 | 
			
		||||
			</template>
 | 
			
		||||
			<template v-else-if="provider === 'recaptcha'">
 | 
			
		||||
				<FormInput v-model="recaptchaSiteKey">
 | 
			
		||||
				<MkInput v-model="recaptchaSiteKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.recaptchaSiteKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				<FormInput v-model="recaptchaSecretKey">
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<MkInput v-model="recaptchaSecretKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.recaptchaSecretKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<FormSlot v-if="recaptchaSiteKey">
 | 
			
		||||
					<template #label>{{ i18n.ts.preview }}</template>
 | 
			
		||||
					<MkCaptcha provider="recaptcha" :sitekey="recaptchaSiteKey"/>
 | 
			
		||||
				</FormSlot>
 | 
			
		||||
			</template>
 | 
			
		||||
			<template v-else-if="provider === 'turnstile'">
 | 
			
		||||
				<FormInput v-model="turnstileSiteKey">
 | 
			
		||||
				<MkInput v-model="turnstileSiteKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.turnstileSiteKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				<FormInput v-model="turnstileSecretKey">
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<MkInput v-model="turnstileSecretKey">
 | 
			
		||||
					<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
					<template #label>{{ i18n.ts.turnstileSecretKey }}</template>
 | 
			
		||||
				</FormInput>
 | 
			
		||||
				</MkInput>
 | 
			
		||||
				<FormSlot>
 | 
			
		||||
					<template #label>{{ i18n.ts.preview }}</template>
 | 
			
		||||
					<MkCaptcha provider="turnstile" :sitekey="turnstileSiteKey || '1x00000000000000000000AA'"/>
 | 
			
		||||
@@ -60,8 +60,8 @@
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { defineAsyncComponent } from 'vue';
 | 
			
		||||
import FormRadios from '@/components/form/radios.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkRadios from '@/components/MkRadios.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import FormSlot from '@/components/form/slot.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -10,29 +10,29 @@
 | 
			
		||||
				</MkSwitch>
 | 
			
		||||
 | 
			
		||||
				<template v-if="enableEmail">
 | 
			
		||||
					<FormInput v-model="email" type="email">
 | 
			
		||||
					<MkInput v-model="email" type="email">
 | 
			
		||||
						<template #label>{{ i18n.ts.emailAddress }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormSection>
 | 
			
		||||
						<template #label>{{ i18n.ts.smtpConfig }}</template>
 | 
			
		||||
 | 
			
		||||
						<div class="_gaps_m">
 | 
			
		||||
							<FormSplit :min-width="280">
 | 
			
		||||
								<FormInput v-model="smtpHost">
 | 
			
		||||
								<MkInput v-model="smtpHost">
 | 
			
		||||
									<template #label>{{ i18n.ts.smtpHost }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								<FormInput v-model="smtpPort" type="number">
 | 
			
		||||
								</MkInput>
 | 
			
		||||
								<MkInput v-model="smtpPort" type="number">
 | 
			
		||||
									<template #label>{{ i18n.ts.smtpPort }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
							</FormSplit>
 | 
			
		||||
							<FormSplit :min-width="280">
 | 
			
		||||
								<FormInput v-model="smtpUser">
 | 
			
		||||
								<MkInput v-model="smtpUser">
 | 
			
		||||
									<template #label>{{ i18n.ts.smtpUser }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								<FormInput v-model="smtpPass" type="password">
 | 
			
		||||
								</MkInput>
 | 
			
		||||
								<MkInput v-model="smtpPass" type="password">
 | 
			
		||||
									<template #label>{{ i18n.ts.smtpPass }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
							</FormSplit>
 | 
			
		||||
							<FormInfo>{{ i18n.ts.emptyToDisableSmtpAuth }}</FormInfo>
 | 
			
		||||
							<MkSwitch v-model="smtpSecure">
 | 
			
		||||
@@ -52,7 +52,7 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import FormSplit from '@/components/form/split.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import MkModalWindow from '@/components/MkModalWindow.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { unique } from '@/scripts/array';
 | 
			
		||||
import { i18n } from '@/i18n';
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,7 @@
 | 
			
		||||
import { computed, defineAsyncComponent, defineComponent, ref, shallowRef } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkPagination from '@/components/MkPagination.vue';
 | 
			
		||||
import MkTab from '@/components/MkTab.vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,8 @@ import { computed, defineAsyncComponent } from 'vue';
 | 
			
		||||
import * as Acct from 'misskey-js/built/acct';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkSelect from '@/components/form/select.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkSelect from '@/components/MkSelect.vue';
 | 
			
		||||
import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue';
 | 
			
		||||
import bytes from '@/filters/bytes';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,10 @@
 | 
			
		||||
	<template #header><XHeader :actions="headerActions" :tabs="headerTabs"/></template>
 | 
			
		||||
	<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
 | 
			
		||||
		<FormSuspense :p="init">
 | 
			
		||||
			<FormTextarea v-model="blockedHosts">
 | 
			
		||||
			<MkTextarea v-model="blockedHosts">
 | 
			
		||||
				<span>{{ i18n.ts.blockedInstances }}</span>
 | 
			
		||||
				<template #caption>{{ i18n.ts.blockedInstancesDescription }}</template>
 | 
			
		||||
			</FormTextarea>
 | 
			
		||||
			</MkTextarea>
 | 
			
		||||
 | 
			
		||||
			<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
		</FormSuspense>
 | 
			
		||||
@@ -18,7 +18,7 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormTextarea from '@/components/form/textarea.vue';
 | 
			
		||||
import MkTextarea from '@/components/MkTextarea.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { fetchInstance } from '@/instance';
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,15 @@
 | 
			
		||||
		<template v-if="enableDiscordIntegration">
 | 
			
		||||
			<FormInfo>Callback URL: {{ `${uri}/api/dc/cb` }}</FormInfo>
 | 
			
		||||
		
 | 
			
		||||
			<FormInput v-model="discordClientId">
 | 
			
		||||
			<MkInput v-model="discordClientId">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Client ID</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
 | 
			
		||||
			<FormInput v-model="discordClientSecret">
 | 
			
		||||
			<MkInput v-model="discordClientSecret">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Client Secret</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
		</template>
 | 
			
		||||
 | 
			
		||||
		<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,15 @@
 | 
			
		||||
		<template v-if="enableGithubIntegration">
 | 
			
		||||
			<FormInfo>Callback URL: {{ `${uri}/api/gh/cb` }}</FormInfo>
 | 
			
		||||
		
 | 
			
		||||
			<FormInput v-model="githubClientId">
 | 
			
		||||
			<MkInput v-model="githubClientId">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Client ID</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
 | 
			
		||||
			<FormInput v-model="githubClientSecret">
 | 
			
		||||
			<MkInput v-model="githubClientSecret">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Client Secret</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
		</template>
 | 
			
		||||
 | 
			
		||||
		<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -8,15 +8,15 @@
 | 
			
		||||
		<template v-if="enableTwitterIntegration">
 | 
			
		||||
			<FormInfo>Callback URL: {{ `${uri}/api/tw/cb` }}</FormInfo>
 | 
			
		||||
		
 | 
			
		||||
			<FormInput v-model="twitterConsumerKey">
 | 
			
		||||
			<MkInput v-model="twitterConsumerKey">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Consumer Key</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
 | 
			
		||||
			<FormInput v-model="twitterConsumerSecret">
 | 
			
		||||
			<MkInput v-model="twitterConsumerSecret">
 | 
			
		||||
				<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
				<template #label>Consumer Secret</template>
 | 
			
		||||
			</FormInput>
 | 
			
		||||
			</MkInput>
 | 
			
		||||
		</template>
 | 
			
		||||
 | 
			
		||||
		<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
@@ -27,7 +27,7 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { defineComponent } from 'vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -7,41 +7,41 @@
 | 
			
		||||
				<MkSwitch v-model="useObjectStorage">{{ i18n.ts.useObjectStorage }}</MkSwitch>
 | 
			
		||||
 | 
			
		||||
				<template v-if="useObjectStorage">
 | 
			
		||||
					<FormInput v-model="objectStorageBaseUrl">
 | 
			
		||||
					<MkInput v-model="objectStorageBaseUrl">
 | 
			
		||||
						<template #label>{{ i18n.ts.objectStorageBaseUrl }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.objectStorageBaseUrlDesc }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormInput v-model="objectStorageBucket">
 | 
			
		||||
					<MkInput v-model="objectStorageBucket">
 | 
			
		||||
						<template #label>{{ i18n.ts.objectStorageBucket }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.objectStorageBucketDesc }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormInput v-model="objectStoragePrefix">
 | 
			
		||||
					<MkInput v-model="objectStoragePrefix">
 | 
			
		||||
						<template #label>{{ i18n.ts.objectStoragePrefix }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.objectStoragePrefixDesc }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormInput v-model="objectStorageEndpoint">
 | 
			
		||||
					<MkInput v-model="objectStorageEndpoint">
 | 
			
		||||
						<template #label>{{ i18n.ts.objectStorageEndpoint }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.objectStorageEndpointDesc }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormInput v-model="objectStorageRegion">
 | 
			
		||||
					<MkInput v-model="objectStorageRegion">
 | 
			
		||||
						<template #label>{{ i18n.ts.objectStorageRegion }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.objectStorageRegionDesc }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormSplit :min-width="280">
 | 
			
		||||
						<FormInput v-model="objectStorageAccessKey">
 | 
			
		||||
						<MkInput v-model="objectStorageAccessKey">
 | 
			
		||||
							<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
							<template #label>Access key</template>
 | 
			
		||||
						</FormInput>
 | 
			
		||||
						</MkInput>
 | 
			
		||||
 | 
			
		||||
						<FormInput v-model="objectStorageSecretKey">
 | 
			
		||||
						<MkInput v-model="objectStorageSecretKey">
 | 
			
		||||
							<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
							<template #label>Secret key</template>
 | 
			
		||||
						</FormInput>
 | 
			
		||||
						</MkInput>
 | 
			
		||||
					</FormSplit>
 | 
			
		||||
 | 
			
		||||
					<MkSwitch v-model="objectStorageUseSSL">
 | 
			
		||||
@@ -72,7 +72,7 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import FormSplit from '@/components/form/split.vue';
 | 
			
		||||
import FormSection from '@/components/form/section.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import MkHeatmap from '@/components/MkHeatmap.vue';
 | 
			
		||||
import MkSelect from '@/components/form/select.vue';
 | 
			
		||||
import MkSelect from '@/components/MkSelect.vue';
 | 
			
		||||
 | 
			
		||||
let src = $ref('active-users');
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -26,17 +26,17 @@
 | 
			
		||||
					<div class="_gaps_m">
 | 
			
		||||
						<span>{{ i18n.ts._sensitiveMediaDetection.description }}</span>
 | 
			
		||||
 | 
			
		||||
						<FormRadios v-model="sensitiveMediaDetection">
 | 
			
		||||
						<MkRadios v-model="sensitiveMediaDetection">
 | 
			
		||||
							<option value="none">{{ i18n.ts.none }}</option>
 | 
			
		||||
							<option value="all">{{ i18n.ts.all }}</option>
 | 
			
		||||
							<option value="local">{{ i18n.ts.localOnly }}</option>
 | 
			
		||||
							<option value="remote">{{ i18n.ts.remoteOnly }}</option>
 | 
			
		||||
						</FormRadios>
 | 
			
		||||
						</MkRadios>
 | 
			
		||||
 | 
			
		||||
						<FormRange v-model="sensitiveMediaDetectionSensitivity" :min="0" :max="4" :step="1" :text-converter="(v) => `${v + 1}`">
 | 
			
		||||
						<MkRange v-model="sensitiveMediaDetectionSensitivity" :min="0" :max="4" :step="1" :text-converter="(v) => `${v + 1}`">
 | 
			
		||||
							<template #label>{{ i18n.ts._sensitiveMediaDetection.sensitivity }}</template>
 | 
			
		||||
							<template #caption>{{ i18n.ts._sensitiveMediaDetection.sensitivityDescription }}</template>
 | 
			
		||||
						</FormRange>
 | 
			
		||||
						</MkRange>
 | 
			
		||||
 | 
			
		||||
						<MkSwitch v-model="enableSensitiveMediaDetectionForVideos">
 | 
			
		||||
							<template #label>{{ i18n.ts._sensitiveMediaDetection.analyzeVideos }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
 | 
			
		||||
@@ -87,10 +87,10 @@
 | 
			
		||||
					<template #label>Summaly Proxy</template>
 | 
			
		||||
 | 
			
		||||
					<div class="_gaps_m">
 | 
			
		||||
						<FormInput v-model="summalyProxy">
 | 
			
		||||
						<MkInput v-model="summalyProxy">
 | 
			
		||||
							<template #prefix><i class="ti ti-link"></i></template>
 | 
			
		||||
							<template #label>Summaly Proxy URL</template>
 | 
			
		||||
						</FormInput>
 | 
			
		||||
						</MkInput>
 | 
			
		||||
 | 
			
		||||
						<MkButton primary @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
 | 
			
		||||
					</div>
 | 
			
		||||
@@ -106,12 +106,12 @@ import { } from 'vue';
 | 
			
		||||
import XBotProtection from './bot-protection.vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import FormFolder from '@/components/form/folder.vue';
 | 
			
		||||
import FormRadios from '@/components/form/radios.vue';
 | 
			
		||||
import MkRadios from '@/components/MkRadios.vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSuspense from '@/components/form/suspense.vue';
 | 
			
		||||
import FormRange from '@/components/form/range.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import MkRange from '@/components/MkRange.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkButton from '@/components/MkButton.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { fetchInstance } from '@/instance';
 | 
			
		||||
 
 | 
			
		||||
@@ -5,34 +5,34 @@
 | 
			
		||||
		<MkSpacer :content-max="700" :margin-min="16" :margin-max="32">
 | 
			
		||||
			<FormSuspense :p="init">
 | 
			
		||||
				<div class="_gaps_m">
 | 
			
		||||
					<FormInput v-model="name">
 | 
			
		||||
					<MkInput v-model="name">
 | 
			
		||||
						<template #label>{{ i18n.ts.instanceName }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormTextarea v-model="description">
 | 
			
		||||
					<MkTextarea v-model="description">
 | 
			
		||||
						<template #label>{{ i18n.ts.instanceDescription }}</template>
 | 
			
		||||
					</FormTextarea>
 | 
			
		||||
					</MkTextarea>
 | 
			
		||||
 | 
			
		||||
					<FormInput v-model="tosUrl">
 | 
			
		||||
					<MkInput v-model="tosUrl">
 | 
			
		||||
						<template #prefix><i class="ti ti-link"></i></template>
 | 
			
		||||
						<template #label>{{ i18n.ts.tosUrl }}</template>
 | 
			
		||||
					</FormInput>
 | 
			
		||||
					</MkInput>
 | 
			
		||||
 | 
			
		||||
					<FormSplit :min-width="300">
 | 
			
		||||
						<FormInput v-model="maintainerName">
 | 
			
		||||
						<MkInput v-model="maintainerName">
 | 
			
		||||
							<template #label>{{ i18n.ts.maintainerName }}</template>
 | 
			
		||||
						</FormInput>
 | 
			
		||||
						</MkInput>
 | 
			
		||||
 | 
			
		||||
						<FormInput v-model="maintainerEmail" type="email">
 | 
			
		||||
						<MkInput v-model="maintainerEmail" type="email">
 | 
			
		||||
							<template #prefix><i class="ti ti-mail"></i></template>
 | 
			
		||||
							<template #label>{{ i18n.ts.maintainerEmail }}</template>
 | 
			
		||||
						</FormInput>
 | 
			
		||||
						</MkInput>
 | 
			
		||||
					</FormSplit>
 | 
			
		||||
 | 
			
		||||
					<FormTextarea v-model="pinnedUsers">
 | 
			
		||||
					<MkTextarea v-model="pinnedUsers">
 | 
			
		||||
						<template #label>{{ i18n.ts.pinnedUsers }}</template>
 | 
			
		||||
						<template #caption>{{ i18n.ts.pinnedUsersDescription }}</template>
 | 
			
		||||
					</FormTextarea>
 | 
			
		||||
					</MkTextarea>
 | 
			
		||||
 | 
			
		||||
					<FormSection>
 | 
			
		||||
						<div class="_gaps_s">
 | 
			
		||||
@@ -58,36 +58,36 @@
 | 
			
		||||
						<template #label>{{ i18n.ts.theme }}</template>
 | 
			
		||||
 | 
			
		||||
						<div class="_gaps_m">
 | 
			
		||||
							<FormInput v-model="iconUrl">
 | 
			
		||||
							<MkInput v-model="iconUrl">
 | 
			
		||||
								<template #prefix><i class="ti ti-link"></i></template>
 | 
			
		||||
								<template #label>{{ i18n.ts.iconUrl }}</template>
 | 
			
		||||
							</FormInput>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<FormInput v-model="bannerUrl">
 | 
			
		||||
							<MkInput v-model="bannerUrl">
 | 
			
		||||
								<template #prefix><i class="ti ti-link"></i></template>
 | 
			
		||||
								<template #label>{{ i18n.ts.bannerUrl }}</template>
 | 
			
		||||
							</FormInput>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<FormInput v-model="backgroundImageUrl">
 | 
			
		||||
							<MkInput v-model="backgroundImageUrl">
 | 
			
		||||
								<template #prefix><i class="ti ti-link"></i></template>
 | 
			
		||||
								<template #label>{{ i18n.ts.backgroundImageUrl }}</template>
 | 
			
		||||
							</FormInput>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<FormInput v-model="themeColor">
 | 
			
		||||
							<MkInput v-model="themeColor">
 | 
			
		||||
								<template #prefix><i class="ti ti-palette"></i></template>
 | 
			
		||||
								<template #label>{{ i18n.ts.themeColor }}</template>
 | 
			
		||||
								<template #caption>#RRGGBB</template>
 | 
			
		||||
							</FormInput>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
 | 
			
		||||
							<FormTextarea v-model="defaultLightTheme">
 | 
			
		||||
							<MkTextarea v-model="defaultLightTheme">
 | 
			
		||||
								<template #label>{{ i18n.ts.instanceDefaultLightTheme }}</template>
 | 
			
		||||
								<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
 | 
			
		||||
							</FormTextarea>
 | 
			
		||||
							</MkTextarea>
 | 
			
		||||
 | 
			
		||||
							<FormTextarea v-model="defaultDarkTheme">
 | 
			
		||||
							<MkTextarea v-model="defaultDarkTheme">
 | 
			
		||||
								<template #label>{{ i18n.ts.instanceDefaultDarkTheme }}</template>
 | 
			
		||||
								<template #caption>{{ i18n.ts.instanceDefaultThemeDescription }}</template>
 | 
			
		||||
							</FormTextarea>
 | 
			
		||||
							</MkTextarea>
 | 
			
		||||
						</div>
 | 
			
		||||
					</FormSection>
 | 
			
		||||
 | 
			
		||||
@@ -101,17 +101,17 @@
 | 
			
		||||
							</MkSwitch>
 | 
			
		||||
 | 
			
		||||
							<FormSplit :min-width="280">
 | 
			
		||||
								<FormInput v-model="localDriveCapacityMb" type="number">
 | 
			
		||||
								<MkInput v-model="localDriveCapacityMb" type="number">
 | 
			
		||||
									<template #label>{{ i18n.ts.driveCapacityPerLocalAccount }}</template>
 | 
			
		||||
									<template #suffix>MB</template>
 | 
			
		||||
									<template #caption>{{ i18n.ts.inMb }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
 | 
			
		||||
								<FormInput v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">
 | 
			
		||||
								<MkInput v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">
 | 
			
		||||
									<template #label>{{ i18n.ts.driveCapacityPerRemoteAccount }}</template>
 | 
			
		||||
									<template #suffix>MB</template>
 | 
			
		||||
									<template #caption>{{ i18n.ts.inMb }}</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
							</FormSplit>
 | 
			
		||||
						</div>
 | 
			
		||||
					</FormSection>
 | 
			
		||||
@@ -126,15 +126,15 @@
 | 
			
		||||
							</MkSwitch>
 | 
			
		||||
 | 
			
		||||
							<template v-if="enableServiceWorker">
 | 
			
		||||
								<FormInput v-model="swPublicKey">
 | 
			
		||||
								<MkInput v-model="swPublicKey">
 | 
			
		||||
									<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
									<template #label>Public key</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
 | 
			
		||||
								<FormInput v-model="swPrivateKey">
 | 
			
		||||
								<MkInput v-model="swPrivateKey">
 | 
			
		||||
									<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
									<template #label>Private key</template>
 | 
			
		||||
								</FormInput>
 | 
			
		||||
								</MkInput>
 | 
			
		||||
							</template>
 | 
			
		||||
						</div>
 | 
			
		||||
					</FormSection>
 | 
			
		||||
@@ -143,10 +143,10 @@
 | 
			
		||||
						<template #label>DeepL Translation</template>
 | 
			
		||||
 | 
			
		||||
						<div class="_gaps_m">
 | 
			
		||||
							<FormInput v-model="deeplAuthKey">
 | 
			
		||||
							<MkInput v-model="deeplAuthKey">
 | 
			
		||||
								<template #prefix><i class="ti ti-key"></i></template>
 | 
			
		||||
								<template #label>DeepL Auth Key</template>
 | 
			
		||||
							</FormInput>
 | 
			
		||||
							</MkInput>
 | 
			
		||||
							<MkSwitch v-model="deeplIsPro">
 | 
			
		||||
								<template #label>Pro account</template>
 | 
			
		||||
							</MkSwitch>
 | 
			
		||||
@@ -163,8 +163,8 @@
 | 
			
		||||
import { } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkSwitch from '@/components/MkSwitch.vue';
 | 
			
		||||
import FormInput from '@/components/form/input.vue';
 | 
			
		||||
import FormTextarea from '@/components/form/textarea.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkTextarea from '@/components/MkTextarea.vue';
 | 
			
		||||
import FormInfo from '@/components/MkInfo.vue';
 | 
			
		||||
import FormSection from '@/components/form/section.vue';
 | 
			
		||||
import FormSplit from '@/components/form/split.vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -55,8 +55,8 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
import { computed } from 'vue';
 | 
			
		||||
import XHeader from './_header_.vue';
 | 
			
		||||
import MkInput from '@/components/form/input.vue';
 | 
			
		||||
import MkSelect from '@/components/form/select.vue';
 | 
			
		||||
import MkInput from '@/components/MkInput.vue';
 | 
			
		||||
import MkSelect from '@/components/MkSelect.vue';
 | 
			
		||||
import MkPagination from '@/components/MkPagination.vue';
 | 
			
		||||
import * as os from '@/os';
 | 
			
		||||
import { lookupUser } from '@/scripts/lookup-user';
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user