diff --git a/locales/en-US.yml b/locales/en-US.yml
index 221ade4028..ad517b888f 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -1330,6 +1330,8 @@ confirmWhenRevealingSensitiveMedia: "Confirm when revealing sensitive media"
sensitiveMediaRevealConfirm: "This media might be sensitive. Are you sure you want to reveal it?"
createdLists: "Created lists"
createdAntennas: "Created antennas"
+severAllFollowRelations: "Break follow relationships"
+severAllFollowRelationsConfirm: "Really break all follow relationships? This is irreversible!"
_delivery:
status: "Delivery status"
stop: "Suspend delivery"
diff --git a/locales/index.d.ts b/locales/index.d.ts
index f93ef14325..517a7bf87d 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -3128,6 +3128,10 @@ export interface Locale extends ILocale {
* 返信にサーバー情報を表示する
*/
"showTickerOnReplies": string;
+ /**
+ * 猫の話し方を無効にする
+ */
+ "disableCatSpeak": string;
/**
* 検索MFMの検索エンジン
*/
@@ -4429,10 +4433,6 @@ export interface Locale extends ILocale {
* 連合なしにする
*/
"disableFederationOk": string;
- /**
- * 猫の話し方を無効にする
- */
- "disableCatSpeak": string;
/**
* 現在このサーバーは招待制です。招待コードをお持ちの方のみ登録できます。
*/
@@ -5337,6 +5337,14 @@ export interface Locale extends ILocale {
* 作成したアンテナ
*/
"createdAntennas": string;
+ /**
+ * 以下の関係をすべて断ち切る
+ */
+ "severAllFollowRelations": string;
+ /**
+ * 本当にすべての関係を断ち切りたいのですか?これは不可逆的だ。
+ */
+ "severAllFollowRelationsConfirm": string;
"_delivery": {
/**
* 配信状態
@@ -5777,7 +5785,7 @@ export interface Locale extends ILocale {
*/
"social": string;
/**
- * バッッブルタイムラインでは、管理者が選択した接続サーバーからのメモを表示できます。
+ * バブルタイムラインでは、管理者が選択した接続サーバーからの投稿を表示できます。
*/
"bubble": string;
/**
@@ -9139,7 +9147,7 @@ export interface Locale extends ILocale {
*/
"global": string;
/**
- * バッッブル
+ * バブル
*/
"bubble": string;
};
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 70acc3adf4..5aec622638 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1330,6 +1330,8 @@ confirmWhenRevealingSensitiveMedia: "センシティブなメディアを表示
sensitiveMediaRevealConfirm: "センシティブなメディアです。表示しますか?"
createdLists: "作成したリスト"
createdAntennas: "作成したアンテナ"
+severAllFollowRelations: "以下の関係をすべて断ち切る"
+severAllFollowRelationsConfirm: "本当にすべての関係を断ち切りたいのですか?これは不可逆的だ。"
_delivery:
status: "配信状態"
diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue
index 4ff26197d8..18dfa80d6b 100644
--- a/packages/frontend/src/pages/instance-info.vue
+++ b/packages/frontend/src/pages/instance-info.vue
@@ -43,6 +43,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._delivery._type[suspensionState] }}
+ {{ i18n.ts.deleteAllFilesConfirm }}
+ {{ i18n.ts.severAllFollowRelations }}
{{ i18n.ts._delivery.stop }}
{{ i18n.ts._delivery.resume }}
{{ i18n.ts.blockThisInstance }}
@@ -270,6 +272,37 @@ function refreshMetadata(): void {
});
}
+async function deleteAllFiles(): void {
+ const confirm = await os.confirm({
+ type: 'danger',
+ text: i18n.ts.deleteAllFilesConfirm,
+ });
+ if (!confirm) return;
+ if (!instance.value) throw new Error('No instance?');
+ await misskeyApi('admin/federation/delete-all-files', {
+ host: instance.value.host,
+ });
+ await os.alert({
+ text: 'Deletion of all files queued',
+ });
+}
+
+async function severAllFollowRelations(): void {
+ if (!instance.value) throw new Error('No instance?');
+
+ const confirm = await os.confirm({
+ type: 'danger',
+ text: i18n.ts.severAllFollowRelationsConfirm,
+ });
+ if (!confirm) return;
+ await misskeyApi('admin/federation/remove-all-following', {
+ host: instance.value.host,
+ });
+ await os.alert({
+ text: 'Severing all follow relations queued',
+ });
+}
+
fetch();
const headerActions = computed(() => [{