@@ -47,6 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
47
47
<MkButton v-if="suspensionState !== 'none'" :disabled="!instance" @click="resumeDelivery">{{ i18n.ts._delivery.resume }}</MkButton>
48
48
<MkSwitch v-model="isBlocked" :disabled="!meta || !instance" @update:modelValue="toggleBlock">{{ i18n.ts.blockThisInstance }}</MkSwitch>
49
49
<MkSwitch v-model="isSilenced" :disabled="!meta || !instance" @update:modelValue="toggleSilenced">{{ i18n.ts.silenceThisInstance }}</MkSwitch>
50
+ <MkSwitch v-model="isMediaSilenced" :disabled="!meta || !instance" @update:modelValue="toggleMediaSilenced">{{ i18n.ts.mediaSilenceThisInstance }}</MkSwitch>
50
51
<MkButton @click="refreshMetadata"><i class="ti ti-refresh"></i> Refresh metadata</MkButton>
51
52
<MkTextarea v-model="moderationNote" manualSave>
52
53
<template #label>{{ i18n.ts.moderationNote }}</template>
@@ -167,6 +168,7 @@ const instance = ref<Misskey.entities.FederationInstance | null>(null);
167
168
const suspensionState = ref<'none' | 'manuallySuspended' | 'goneSuspended' | 'autoSuspendedForNotResponding'>('none');
168
169
const isBlocked = ref(false);
169
170
const isSilenced = ref(false);
171
+ const isMediaSilenced = ref(false);
170
172
const faviconUrl = ref<string | null>(null);
171
173
const moderationNote = ref('');
172
174
@@ -195,8 +197,9 @@ async function fetch(): Promise<void> {
195
197
suspensionState.value = instance.value?.suspensionState ?? 'none';
196
198
isBlocked.value = instance.value?.isBlocked ?? false;
197
199
isSilenced.value = instance.value?.isSilenced ?? false;
200
+ isMediaSilenced.value = instance.value?.isMediaSilenced ?? false;
198
201
faviconUrl.value = getProxiedImageUrlNullable(instance.value?.faviconUrl, 'preview') ?? getProxiedImageUrlNullable(instance.value?.iconUrl, 'preview');
199
- moderationNote.value = instance.value?.moderationNote;
202
+ moderationNote.value = instance.value?.moderationNote ?? '' ;
200
203
}
201
204
202
205
async function toggleBlock(): Promise<void> {
@@ -218,6 +221,16 @@ async function toggleSilenced(): Promise<void> {
218
221
});
219
222
}
220
223
224
+ async function toggleMediaSilenced(): Promise<void> {
225
+ if (!meta.value) throw new Error('No meta?');
226
+ if (!instance.value) throw new Error('No instance?');
227
+ const { host } = instance.value;
228
+ const mediaSilencedHosts = meta.value.mediaSilencedHosts ?? [];
229
+ await misskeyApi('admin/update-meta', {
230
+ mediaSilencedHosts: isMediaSilenced.value ? mediaSilencedHosts.concat([host]) : mediaSilencedHosts.filter(x => x !== host),
231
+ });
232
+ }
233
+
221
234
async function stopDelivery(): Promise<void> {
222
235
if (!instance.value) throw new Error('No instance?');
223
236
suspensionState.value = 'manuallySuspended';
0 commit comments