refresh instance info after applying moderation rules, and make sure that API calls show a dialog while running

This commit is contained in:
Hazelnoot 2025-05-29 22:42:40 -04:00
parent 5b8764d6df
commit 30f0e5002c

View file

@ -356,17 +356,20 @@ const followersPagination = {
if (iAmModerator) { if (iAmModerator) {
watch(moderationNote, async () => { watch(moderationNote, async () => {
if (instance.value == null) return; if (instance.value == null) return;
await misskeyApi('admin/federation/update-instance', { host: instance.value.host, moderationNote: moderationNote.value }); await os.apiWithDialog('admin/federation/update-instance', { host: instance.value.host, moderationNote: moderationNote.value });
}); });
} }
async function fetch(): Promise<void> { async function fetch(): Promise<void> {
if (iAmAdmin) { const [m, i] = await Promise.all([
meta.value = await misskeyApi('admin/meta'); iAmAdmin ? misskeyApi('admin/meta') : null,
} misskeyApi('federation/show-instance', {
instance.value = await misskeyApi('federation/show-instance', {
host: props.host, host: props.host,
}); }),
]);
meta.value = m;
instance.value = i;
suspensionState.value = instance.value?.suspensionState ?? 'none'; suspensionState.value = instance.value?.suspensionState ?? 'none';
isSuspended.value = suspensionState.value !== 'none'; isSuspended.value = suspensionState.value !== 'none';
isBlocked.value = instance.value?.isBlocked ?? false; isBlocked.value = instance.value?.isBlocked ?? false;
@ -381,27 +384,36 @@ async function fetch(): Promise<void> {
async function toggleBlock(): Promise<void> { async function toggleBlock(): Promise<void> {
if (!iAmAdmin) return; if (!iAmAdmin) return;
await os.promiseDialog(async () => {
if (!meta.value) throw new Error('No meta?'); if (!meta.value) throw new Error('No meta?');
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
const { host } = instance.value; const { host } = instance.value;
await misskeyApi('admin/update-meta', { await os.apiWithDialog('admin/update-meta', {
blockedHosts: isBlocked.value ? meta.value.blockedHosts.concat([host]) : meta.value.blockedHosts.filter(x => x !== host), blockedHosts: isBlocked.value ? meta.value.blockedHosts.concat([host]) : meta.value.blockedHosts.filter(x => x !== host),
}); });
await fetch();
});
} }
async function toggleSilenced(): Promise<void> { async function toggleSilenced(): Promise<void> {
if (!iAmAdmin) return; if (!iAmAdmin) return;
await os.promiseDialog(async () => {
if (!meta.value) throw new Error('No meta?'); if (!meta.value) throw new Error('No meta?');
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
const { host } = instance.value; const { host } = instance.value;
const silencedHosts = meta.value.silencedHosts ?? []; const silencedHosts = meta.value.silencedHosts ?? [];
await os.promiseDialog(async () => {
await misskeyApi('admin/update-meta', { await misskeyApi('admin/update-meta', {
silencedHosts: isSilenced.value ? silencedHosts.concat([host]) : silencedHosts.filter(x => x !== host), silencedHosts: isSilenced.value ? silencedHosts.concat([host]) : silencedHosts.filter(x => x !== host),
}); });
await fetch();
});
});
} }
async function toggleMediaSilenced(): Promise<void> { async function toggleMediaSilenced(): Promise<void> {
if (!iAmAdmin) return; if (!iAmAdmin) return;
await os.promiseDialog(async () => {
if (!meta.value) throw new Error('No meta?'); if (!meta.value) throw new Error('No meta?');
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
const { host } = instance.value; const { host } = instance.value;
@ -409,52 +421,69 @@ async function toggleMediaSilenced(): Promise<void> {
await misskeyApi('admin/update-meta', { await misskeyApi('admin/update-meta', {
mediaSilencedHosts: isMediaSilenced.value ? mediaSilencedHosts.concat([host]) : mediaSilencedHosts.filter(x => x !== host), mediaSilencedHosts: isMediaSilenced.value ? mediaSilencedHosts.concat([host]) : mediaSilencedHosts.filter(x => x !== host),
}); });
await fetch();
});
} }
async function toggleSuspended(): Promise<void> { async function toggleSuspended(): Promise<void> {
if (!iAmModerator) return; if (!iAmModerator) return;
await os.promiseDialog(async () => {
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
suspensionState.value = isSuspended.value ? 'manuallySuspended' : 'none'; suspensionState.value = isSuspended.value ? 'manuallySuspended' : 'none';
await misskeyApi('admin/federation/update-instance', { await misskeyApi('admin/federation/update-instance', {
host: instance.value.host, host: instance.value.host,
isSuspended: isSuspended.value, isSuspended: isSuspended.value,
}); });
await fetch();
});
} }
async function toggleNSFW(): Promise<void> { async function toggleNSFW(): Promise<void> {
if (!iAmModerator) return; if (!iAmModerator) return;
await os.promiseDialog(async () => {
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
await misskeyApi('admin/federation/update-instance', { await misskeyApi('admin/federation/update-instance', {
host: instance.value.host, host: instance.value.host,
isNSFW: isNSFW.value, isNSFW: isNSFW.value,
}); });
await fetch();
});
} }
async function toggleRejectReports(): Promise<void> { async function toggleRejectReports(): Promise<void> {
if (!iAmModerator) return; if (!iAmModerator) return;
await os.promiseDialog(async () => {
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
await misskeyApi('admin/federation/update-instance', { await misskeyApi('admin/federation/update-instance', {
host: instance.value.host, host: instance.value.host,
rejectReports: rejectReports.value, rejectReports: rejectReports.value,
}); });
await fetch();
});
} }
async function toggleRejectQuotes(): Promise<void> { async function toggleRejectQuotes(): Promise<void> {
if (!iAmModerator) return; if (!iAmModerator) return;
await os.promiseDialog(async () => {
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
await misskeyApi('admin/federation/update-instance', { await misskeyApi('admin/federation/update-instance', {
host: instance.value.host, host: instance.value.host,
rejectQuotes: rejectQuotes.value, rejectQuotes: rejectQuotes.value,
}); });
await fetch();
});
} }
function refreshMetadata(): void { async function refreshMetadata(): Promise<void> {
if (!iAmModerator) return; if (!iAmModerator) return;
await os.promiseDialog(async () => {
if (!instance.value) throw new Error('No instance?'); if (!instance.value) throw new Error('No instance?');
misskeyApi('admin/federation/refresh-remote-instance-metadata', { await misskeyApi('admin/federation/refresh-remote-instance-metadata', {
host: instance.value.host, host: instance.value.host,
}); });
os.alert({ await fetch();
});
await os.alert({
text: 'Refresh requested', text: 'Refresh requested',
}); });
} }
@ -469,14 +498,12 @@ async function deleteAllFiles(): Promise<void> {
}); });
if (confirm.canceled) return; if (confirm.canceled) return;
await Promise.all([ await os.apiWithDialog('admin/federation/delete-all-files', {
misskeyApi('admin/federation/delete-all-files', {
host: instance.value.host, host: instance.value.host,
}), });
os.alert({ await os.alert({
text: i18n.ts.deleteAllFilesQueued, text: i18n.ts.deleteAllFilesQueued,
}), });
]);
} }
async function severAllFollowRelations(): Promise<void> { async function severAllFollowRelations(): Promise<void> {
@ -493,14 +520,12 @@ async function severAllFollowRelations(): Promise<void> {
}); });
if (confirm.canceled) return; if (confirm.canceled) return;
await Promise.all([ await os.apiWithDialog('admin/federation/remove-all-following', {
misskeyApi('admin/federation/remove-all-following', {
host: instance.value.host, host: instance.value.host,
}), });
os.alert({ await os.alert({
text: i18n.tsx.severAllFollowRelationsQueued({ host: instance.value.host }), text: i18n.tsx.severAllFollowRelationsQueued({ host: instance.value.host }),
}), });
]);
} }
fetch(); fetch();