@@ -84,18 +84,19 @@ export default Vue.extend({
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			version,
 | 
			
		||||
			meta: null,
 | 
			
		||||
			stats: null,
 | 
			
		||||
			serverInfo: null,
 | 
			
		||||
			faInfoCircle
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
		});
 | 
			
		||||
	computed: {
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.api('stats').then(res => {
 | 
			
		||||
			this.stats = res;
 | 
			
		||||
		});
 | 
			
		||||
 
 | 
			
		||||
@@ -115,13 +115,15 @@ export default Vue.extend({
 | 
			
		||||
			tagsLocal: [],
 | 
			
		||||
			tagsRemote: [],
 | 
			
		||||
			stats: null,
 | 
			
		||||
			meta: null,
 | 
			
		||||
			num: Vue.filter('number'),
 | 
			
		||||
			faBookmark, faChartLine, faCommentAlt, faPlus, faHashtag, faRocket
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	computed: {
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
		tagUsers(): any {
 | 
			
		||||
			return {
 | 
			
		||||
				endpoint: 'hashtags/users',
 | 
			
		||||
@@ -159,9 +161,6 @@ export default Vue.extend({
 | 
			
		||||
		this.$root.api('stats').then(stats => {
 | 
			
		||||
			this.stats = stats;
 | 
			
		||||
		});
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -83,15 +83,6 @@ export default Vue.extend({
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then((meta: Record<string, any>) => {
 | 
			
		||||
			if (!(
 | 
			
		||||
				this.enableGlobalTimeline = !meta.disableGlobalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin
 | 
			
		||||
			) && this.src === 'global') this.src = 'local';
 | 
			
		||||
			if (!(
 | 
			
		||||
				this.enableLocalTimeline = !meta.disableLocalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin
 | 
			
		||||
			) && ['local', 'social'].includes(this.src)) this.src = 'home';
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		this.src = this.$store.state.deviceUser.tl.src;
 | 
			
		||||
		if (this.src === 'list') {
 | 
			
		||||
			this.list = this.$store.state.deviceUser.tl.arg;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
<template>
 | 
			
		||||
<div class="rsqzvsbo">
 | 
			
		||||
	<div class="_panel about">
 | 
			
		||||
		<div class="banner" :style="{ backgroundImage: `url(${ banner })` }"></div>
 | 
			
		||||
	<div class="_panel about" v-if="meta">
 | 
			
		||||
		<div class="banner" :style="{ backgroundImage: `url(${ meta.bannerUrl })` }"></div>
 | 
			
		||||
		<div class="body">
 | 
			
		||||
			<h1 class="name" v-html="name || host"></h1>
 | 
			
		||||
			<div class="desc" v-html="description || $t('introMisskey')"></div>
 | 
			
		||||
			<h1 class="name" v-html="meta.name || host"></h1>
 | 
			
		||||
			<div class="desc" v-html="meta.description || $t('introMisskey')"></div>
 | 
			
		||||
			<mk-button @click="signup()" style="display: inline-block; margin-right: 16px;" primary>{{ $t('signup') }}</mk-button>
 | 
			
		||||
			<mk-button @click="signin()" style="display: inline-block;">{{ $t('login') }}</mk-button>
 | 
			
		||||
		</div>
 | 
			
		||||
@@ -39,23 +39,16 @@ export default Vue.extend({
 | 
			
		||||
				noPaging: true,
 | 
			
		||||
			},
 | 
			
		||||
			host: toUnicode(host),
 | 
			
		||||
			meta: null,
 | 
			
		||||
			name: null,
 | 
			
		||||
			description: null,
 | 
			
		||||
			banner: null,
 | 
			
		||||
			announcements: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
			this.name = meta.name;
 | 
			
		||||
			this.description = meta.description;
 | 
			
		||||
			this.announcements = meta.announcements;
 | 
			
		||||
			this.banner = meta.bannerUrl;
 | 
			
		||||
		});
 | 
			
		||||
	computed: {
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.api('stats').then(stats => {
 | 
			
		||||
			this.stats = stats;
 | 
			
		||||
		});
 | 
			
		||||
 
 | 
			
		||||
@@ -20,15 +20,14 @@ export default Vue.extend({
 | 
			
		||||
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			meta: null,
 | 
			
		||||
			instanceName: getInstanceName(),
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
	computed: {
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@
 | 
			
		||||
		<div class="operations">
 | 
			
		||||
			<span class="label">{{ $t('operations') }}</span>
 | 
			
		||||
			<mk-switch v-model="isSuspended" class="switch">{{ $t('stopActivityDelivery') }}</mk-switch>
 | 
			
		||||
			<mk-switch v-model="isBlocked" class="switch">{{ $t('blockThisInstance') }}</mk-switch>
 | 
			
		||||
			<mk-switch :value="isBlocked" class="switch" @change="changeBlock">{{ $t('blockThisInstance') }}</mk-switch>
 | 
			
		||||
		</div>
 | 
			
		||||
		<details class="metadata">
 | 
			
		||||
			<summary class="label">{{ $t('metadata') }}</summary>
 | 
			
		||||
@@ -147,9 +147,7 @@ export default Vue.extend({
 | 
			
		||||
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			meta: null,
 | 
			
		||||
			isSuspended: false,
 | 
			
		||||
			isBlocked: false,
 | 
			
		||||
			isSuspended: this.instance.isSuspended,
 | 
			
		||||
			now: null,
 | 
			
		||||
			chart: null,
 | 
			
		||||
			chartInstance: null,
 | 
			
		||||
@@ -184,6 +182,14 @@ export default Vue.extend({
 | 
			
		||||
				null;
 | 
			
		||||
 | 
			
		||||
			return stats;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		isBlocked() {
 | 
			
		||||
			return this.meta && this.meta.blockedHosts.includes(this.instance.host);
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
@@ -195,12 +201,6 @@ export default Vue.extend({
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		isBlocked() {
 | 
			
		||||
			this.$root.api('admin/update-meta', {
 | 
			
		||||
				blockedHosts: this.isBlocked ? this.meta.blockedHosts.concat([this.instance.host]) : this.meta.blockedHosts.filter(x => x !== this.instance.host)
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		chartSrc() {
 | 
			
		||||
			this.renderChart();
 | 
			
		||||
		},
 | 
			
		||||
@@ -210,13 +210,7 @@ export default Vue.extend({
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	async created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
			this.isSuspended = this.instance.isSuspended;
 | 
			
		||||
			this.isBlocked = this.meta.blockedHosts.includes(this.instance.host);
 | 
			
		||||
		});
 | 
			
		||||
	
 | 
			
		||||
	async created() {	
 | 
			
		||||
		this.now = new Date();
 | 
			
		||||
 | 
			
		||||
		const [perHour, perDay] = await Promise.all([
 | 
			
		||||
@@ -235,6 +229,12 @@ export default Vue.extend({
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	methods: {
 | 
			
		||||
		changeBlock(e) {
 | 
			
		||||
			this.$root.api('admin/update-meta', {
 | 
			
		||||
				blockedHosts: this.isBlocked ? this.meta.blockedHosts.concat([this.instance.host]) : this.meta.blockedHosts.filter(x => x !== this.instance.host)
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		setSrc(src) {
 | 
			
		||||
			this.chartSrc = src;
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,9 @@
 | 
			
		||||
	</section>
 | 
			
		||||
 | 
			
		||||
	<section class="_card info">
 | 
			
		||||
		<div class="_content">
 | 
			
		||||
			<mk-input v-model="maxNoteTextLength" type="number" :save="() => save()" style="margin:0;"><template #icon><fa :icon="faPencilAlt"/></template>{{ $t('maxNoteTextLength') }}</mk-input>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="_content">
 | 
			
		||||
			<mk-switch v-model="enableLocalTimeline" @change="save()">{{ $t('enableLocalTimeline') }}</mk-switch>
 | 
			
		||||
			<mk-switch v-model="enableGlobalTimeline" @change="save()">{{ $t('enableGlobalTimeline') }}</mk-switch>
 | 
			
		||||
@@ -171,7 +174,7 @@
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import { faShareAlt, faGhost, faCog, faPlus, faCloud, faInfoCircle, faBan, faSave, faServer, faLink, faThumbtack, faUser, faShieldAlt, faKey, faBolt } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import { faPencilAlt, faShareAlt, faGhost, faCog, faPlus, faCloud, faInfoCircle, faBan, faSave, faServer, faLink, faThumbtack, faUser, faShieldAlt, faKey, faBolt } from '@fortawesome/free-solid-svg-icons';
 | 
			
		||||
import { faTrashAlt, faEnvelope } from '@fortawesome/free-regular-svg-icons';
 | 
			
		||||
import { faTwitter, faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
 | 
			
		||||
import MkButton from '../../components/ui/button.vue';
 | 
			
		||||
@@ -205,7 +208,6 @@ export default Vue.extend({
 | 
			
		||||
		return {
 | 
			
		||||
			version,
 | 
			
		||||
			url,
 | 
			
		||||
			meta: null,
 | 
			
		||||
			stats: null,
 | 
			
		||||
			serverInfo: null,
 | 
			
		||||
			proxyAccount: null,
 | 
			
		||||
@@ -223,6 +225,7 @@ export default Vue.extend({
 | 
			
		||||
			tosUrl: null,
 | 
			
		||||
			bannerUrl: null,
 | 
			
		||||
			iconUrl: null,
 | 
			
		||||
			maxNoteTextLength: 0,
 | 
			
		||||
			enableRegistration: false,
 | 
			
		||||
			enableLocalTimeline: false,
 | 
			
		||||
			enableGlobalTimeline: false,
 | 
			
		||||
@@ -241,52 +244,56 @@ export default Vue.extend({
 | 
			
		||||
			enableDiscordIntegration: false,
 | 
			
		||||
			discordClientId: null,
 | 
			
		||||
			discordClientSecret: null,
 | 
			
		||||
			faTwitter, faDiscord, faGithub, faShareAlt, faTrashAlt, faGhost, faCog, faPlus, faCloud, faInfoCircle, faBan, faSave, faServer, faLink, faEnvelope, faThumbtack, faUser, faShieldAlt, faKey, faBolt
 | 
			
		||||
			faPencilAlt, faTwitter, faDiscord, faGithub, faShareAlt, faTrashAlt, faGhost, faCog, faPlus, faCloud, faInfoCircle, faBan, faSave, faServer, faLink, faEnvelope, faThumbtack, faUser, faShieldAlt, faKey, faBolt
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.meta = meta;
 | 
			
		||||
			this.name = this.meta.name;
 | 
			
		||||
			this.description = this.meta.description;
 | 
			
		||||
			this.tosUrl = this.meta.tosUrl;
 | 
			
		||||
			this.bannerUrl = this.meta.bannerUrl;
 | 
			
		||||
			this.iconUrl = this.meta.iconUrl;
 | 
			
		||||
			this.maintainerName = this.meta.maintainerName;
 | 
			
		||||
			this.maintainerEmail = this.meta.maintainerEmail;
 | 
			
		||||
			this.enableRegistration = !this.meta.disableRegistration;
 | 
			
		||||
			this.enableLocalTimeline = !this.meta.disableLocalTimeline;
 | 
			
		||||
			this.enableGlobalTimeline = !this.meta.disableGlobalTimeline;
 | 
			
		||||
			this.enableRecaptcha = this.meta.enableRecaptcha;
 | 
			
		||||
			this.recaptchaSiteKey = this.meta.recaptchaSiteKey;
 | 
			
		||||
			this.recaptchaSecretKey = this.meta.recaptchaSecretKey;
 | 
			
		||||
			this.proxyAccountId = this.meta.proxyAccountId;
 | 
			
		||||
			this.cacheRemoteFiles = this.meta.cacheRemoteFiles;
 | 
			
		||||
			this.proxyRemoteFiles = this.meta.proxyRemoteFiles;
 | 
			
		||||
			this.localDriveCapacityMb = this.meta.driveCapacityPerLocalUserMb;
 | 
			
		||||
			this.remoteDriveCapacityMb = this.meta.driveCapacityPerRemoteUserMb;
 | 
			
		||||
			this.blockedHosts = this.meta.blockedHosts.join('\n');
 | 
			
		||||
			this.pinnedUsers = this.meta.pinnedUsers.join('\n');
 | 
			
		||||
			this.enableServiceWorker = this.meta.enableServiceWorker;
 | 
			
		||||
			this.swPublicKey = this.meta.swPublickey;
 | 
			
		||||
			this.swPrivateKey = this.meta.swPrivateKey;
 | 
			
		||||
			this.enableTwitterIntegration = this.meta.enableTwitterIntegration;
 | 
			
		||||
			this.twitterConsumerKey = this.meta.twitterConsumerKey;
 | 
			
		||||
			this.twitterConsumerSecret = this.meta.twitterConsumerSecret;
 | 
			
		||||
			this.enableGithubIntegration = this.meta.enableGithubIntegration;
 | 
			
		||||
			this.githubClientId = this.meta.githubClientId;
 | 
			
		||||
			this.githubClientSecret = this.meta.githubClientSecret;
 | 
			
		||||
			this.enableDiscordIntegration = this.meta.enableDiscordIntegration;
 | 
			
		||||
			this.discordClientId = this.meta.discordClientId;
 | 
			
		||||
			this.discordClientSecret = this.meta.discordClientSecret;
 | 
			
		||||
	computed: {
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
			if (this.proxyAccountId) {
 | 
			
		||||
				this.$root.api('users/show', { userId: this.proxyAccountId }).then(proxyAccount => {
 | 
			
		||||
					this.proxyAccount = proxyAccount;
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	created() {
 | 
			
		||||
		this.name = this.meta.name;
 | 
			
		||||
		this.description = this.meta.description;
 | 
			
		||||
		this.tosUrl = this.meta.tosUrl;
 | 
			
		||||
		this.bannerUrl = this.meta.bannerUrl;
 | 
			
		||||
		this.iconUrl = this.meta.iconUrl;
 | 
			
		||||
		this.maintainerName = this.meta.maintainerName;
 | 
			
		||||
		this.maintainerEmail = this.meta.maintainerEmail;
 | 
			
		||||
		this.maxNoteTextLength = this.meta.maxNoteTextLength;
 | 
			
		||||
		this.enableRegistration = !this.meta.disableRegistration;
 | 
			
		||||
		this.enableLocalTimeline = !this.meta.disableLocalTimeline;
 | 
			
		||||
		this.enableGlobalTimeline = !this.meta.disableGlobalTimeline;
 | 
			
		||||
		this.enableRecaptcha = this.meta.enableRecaptcha;
 | 
			
		||||
		this.recaptchaSiteKey = this.meta.recaptchaSiteKey;
 | 
			
		||||
		this.recaptchaSecretKey = this.meta.recaptchaSecretKey;
 | 
			
		||||
		this.proxyAccountId = this.meta.proxyAccountId;
 | 
			
		||||
		this.cacheRemoteFiles = this.meta.cacheRemoteFiles;
 | 
			
		||||
		this.proxyRemoteFiles = this.meta.proxyRemoteFiles;
 | 
			
		||||
		this.localDriveCapacityMb = this.meta.driveCapacityPerLocalUserMb;
 | 
			
		||||
		this.remoteDriveCapacityMb = this.meta.driveCapacityPerRemoteUserMb;
 | 
			
		||||
		this.blockedHosts = this.meta.blockedHosts.join('\n');
 | 
			
		||||
		this.pinnedUsers = this.meta.pinnedUsers.join('\n');
 | 
			
		||||
		this.enableServiceWorker = this.meta.enableServiceWorker;
 | 
			
		||||
		this.swPublicKey = this.meta.swPublickey;
 | 
			
		||||
		this.swPrivateKey = this.meta.swPrivateKey;
 | 
			
		||||
		this.enableTwitterIntegration = this.meta.enableTwitterIntegration;
 | 
			
		||||
		this.twitterConsumerKey = this.meta.twitterConsumerKey;
 | 
			
		||||
		this.twitterConsumerSecret = this.meta.twitterConsumerSecret;
 | 
			
		||||
		this.enableGithubIntegration = this.meta.enableGithubIntegration;
 | 
			
		||||
		this.githubClientId = this.meta.githubClientId;
 | 
			
		||||
		this.githubClientSecret = this.meta.githubClientSecret;
 | 
			
		||||
		this.enableDiscordIntegration = this.meta.enableDiscordIntegration;
 | 
			
		||||
		this.discordClientId = this.meta.discordClientId;
 | 
			
		||||
		this.discordClientSecret = this.meta.discordClientSecret;
 | 
			
		||||
 | 
			
		||||
		if (this.proxyAccountId) {
 | 
			
		||||
			this.$root.api('users/show', { userId: this.proxyAccountId }).then(proxyAccount => {
 | 
			
		||||
				this.proxyAccount = proxyAccount;
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		this.$root.api('admin/server-info').then(res => {
 | 
			
		||||
			this.serverInfo = res;
 | 
			
		||||
@@ -347,6 +354,7 @@ export default Vue.extend({
 | 
			
		||||
				iconUrl: this.iconUrl,
 | 
			
		||||
				maintainerName: this.maintainerName,
 | 
			
		||||
				maintainerEmail: this.maintainerEmail,
 | 
			
		||||
				maxNoteTextLength: this.maxNoteTextLength,
 | 
			
		||||
				disableRegistration: !this.enableRegistration,
 | 
			
		||||
				disableLocalTimeline: !this.enableLocalTimeline,
 | 
			
		||||
				disableGlobalTimeline: !this.enableGlobalTimeline,
 | 
			
		||||
@@ -373,6 +381,7 @@ export default Vue.extend({
 | 
			
		||||
				discordClientId: this.discordClientId,
 | 
			
		||||
				discordClientSecret: this.discordClientSecret,
 | 
			
		||||
			}).then(() => {
 | 
			
		||||
				this.$store.dispatch('instance/fetch');
 | 
			
		||||
				if (withDialog) {
 | 
			
		||||
					this.$root.dialog({
 | 
			
		||||
						type: 'success',
 | 
			
		||||
 
 | 
			
		||||
@@ -56,15 +56,17 @@ export default Vue.extend({
 | 
			
		||||
	computed: {
 | 
			
		||||
		integrations() {
 | 
			
		||||
			return this.$store.state.i.integrations;
 | 
			
		||||
		}
 | 
			
		||||
		},
 | 
			
		||||
		
 | 
			
		||||
		meta() {
 | 
			
		||||
			return this.$store.state.instance.meta;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.getMeta().then(meta => {
 | 
			
		||||
			this.enableTwitterIntegration = meta.enableTwitterIntegration;
 | 
			
		||||
			this.enableDiscordIntegration = meta.enableDiscordIntegration;
 | 
			
		||||
			this.enableGithubIntegration = meta.enableGithubIntegration;
 | 
			
		||||
		});
 | 
			
		||||
		this.enableTwitterIntegration = this.meta.enableTwitterIntegration;
 | 
			
		||||
		this.enableDiscordIntegration = this.meta.enableDiscordIntegration;
 | 
			
		||||
		this.enableGithubIntegration = this.meta.enableGithubIntegration;
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	mounted() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user