diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2024-02-22 20:59:52 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2024-02-22 20:59:52 +0900 |
| commit | 26c8b53f701df76a42897af18f0a117a30226662 (patch) | |
| tree | 09dd91179c93ab0e950c8e50989fd75d96330963 /packages/frontend/src | |
| parent | :art: (diff) | |
| download | misskey-26c8b53f701df76a42897af18f0a117a30226662.tar.gz misskey-26c8b53f701df76a42897af18f0a117a30226662.tar.bz2 misskey-26c8b53f701df76a42897af18f0a117a30226662.zip | |
enhance: サーバーごとにモデレーションノートを残せるように
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/pages/admin/modlog.ModLog.vue | 6 | ||||
| -rw-r--r-- | packages/frontend/src/pages/instance-info.vue | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/packages/frontend/src/pages/admin/modlog.ModLog.vue b/packages/frontend/src/pages/admin/modlog.ModLog.vue index 21d68331cb..e33c882721 100644 --- a/packages/frontend/src/pages/admin/modlog.ModLog.vue +++ b/packages/frontend/src/pages/admin/modlog.ModLog.vue @@ -110,6 +110,12 @@ SPDX-License-Identifier: AGPL-3.0-only <CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/> </div> </template> + <template v-else-if="log.type === 'updateRemoteInstanceNote'"> + <div>{{ i18n.ts.user }}: {{ log.info.userId }}</div> + <div :class="$style.diff"> + <CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/> + </div> + </template> <details> <summary>raw</summary> diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 2f1557182a..cb7fe2866c 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -39,6 +39,9 @@ SPDX-License-Identifier: AGPL-3.0-only <MkSwitch v-model="isBlocked" :disabled="!meta || !instance" @update:modelValue="toggleBlock">{{ i18n.ts.blockThisInstance }}</MkSwitch> <MkSwitch v-model="isSilenced" :disabled="!meta || !instance" @update:modelValue="toggleSilenced">{{ i18n.ts.silenceThisInstance }}</MkSwitch> <MkButton @click="refreshMetadata"><i class="ti ti-refresh"></i> Refresh metadata</MkButton> + <MkTextarea v-model="moderationNote" manualSave> + <template #label>{{ i18n.ts.moderationNote }}</template> + </MkTextarea> </div> </FormSection> @@ -119,7 +122,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { ref, computed } from 'vue'; +import { ref, computed, watch } from 'vue'; import * as Misskey from 'misskey-js'; import MkChart from '@/components/MkChart.vue'; import MkObjectView from '@/components/MkObjectView.vue'; @@ -141,6 +144,7 @@ import MkPagination from '@/components/MkPagination.vue'; import MkHorizontalSwipe from '@/components/MkHorizontalSwipe.vue'; import { getProxiedImageUrlNullable } from '@/scripts/media-proxy.js'; import { dateString } from '@/filters/date.js'; +import MkTextarea from '@/components/MkTextarea.vue'; const props = defineProps<{ host: string; @@ -155,6 +159,7 @@ const suspended = ref(false); const isBlocked = ref(false); const isSilenced = ref(false); const faviconUrl = ref<string | null>(null); +const moderationNote = ref(''); const usersPagination = { endpoint: iAmModerator ? 'admin/show-users' : 'users' as const, @@ -167,6 +172,10 @@ const usersPagination = { offsetMode: true, }; +watch(moderationNote, async () => { + await misskeyApi('admin/federation/update-instance', { host: instance.value.host, moderationNote: moderationNote.value }); +}); + async function fetch(): Promise<void> { if (iAmAdmin) { meta.value = await misskeyApi('admin/meta'); @@ -178,6 +187,7 @@ async function fetch(): Promise<void> { isBlocked.value = instance.value?.isBlocked ?? false; isSilenced.value = instance.value?.isSilenced ?? false; faviconUrl.value = getProxiedImageUrlNullable(instance.value?.faviconUrl, 'preview') ?? getProxiedImageUrlNullable(instance.value?.iconUrl, 'preview'); + moderationNote.value = instance.value?.moderationNote; } async function toggleBlock(): Promise<void> { |