feat: デフォルトでフォローするユーザーを指定できるように

This commit is contained in:
kakkokari-gtyih 2024-10-15 19:58:40 +09:00
parent 825d218692
commit e06a6a1f19
15 changed files with 291 additions and 2 deletions

View file

@ -95,6 +95,14 @@ async function onClick() {
await misskeyApi('following/delete', {
userId: props.user.id,
}).catch((err) => {
if (err.id === '19f25f61-0141-4683-99dc-217a88d633cb') {
os.alert({
type: 'error',
title: i18n.ts.permissionDeniedError,
text: i18n.ts.unfollowThisUserProhibited,
});
}
});
} else {
if (defaultStore.state.alwaysConfirmFollow) {

View file

@ -33,6 +33,23 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
<MkFolder>
<template #icon><i class="ti ti-user-star"></i></template>
<template #label>{{ i18n.ts.defaultFollowedUsers }}</template>
<div class="_gaps">
<MkTextarea v-model="defaultFollowedUsers">
<template #label>{{ i18n.ts.defaultFollowedUsers }}</template>
<template #caption>{{ i18n.ts.defaultFollowedUsersDescription }}</template>
</MkTextarea>
<MkTextarea v-model="permanentFollowedUsers">
<template #label>{{ i18n.ts.permanentFollowedUsers }}</template>
<template #caption>{{ i18n.ts.permanentFollowedUsersDescription }}</template>
</MkTextarea>
<MkButton primary @click="save_defaultUsers">{{ i18n.ts.save }}</MkButton>
</div>
</MkFolder>
<MkFolder>
<template #icon><i class="ti ti-message-exclamation"></i></template>
<template #label>{{ i18n.ts.sensitiveWords }}</template>
@ -146,6 +163,8 @@ const prohibitedWords = ref<string>('');
const prohibitedWordsForNameOfUser = ref<string>('');
const hiddenTags = ref<string>('');
const preservedUsernames = ref<string>('');
const defaultFollowedUsers = ref<string>('');
const permanentFollowedUsers = ref<string>('');
const blockedHosts = ref<string>('');
const silencedHosts = ref<string>('');
const mediaSilencedHosts = ref<string>('');
@ -159,6 +178,8 @@ async function init() {
prohibitedWordsForNameOfUser.value = meta.prohibitedWordsForNameOfUser.join('\n');
hiddenTags.value = meta.hiddenTags.join('\n');
preservedUsernames.value = meta.preservedUsernames.join('\n');
defaultFollowedUsers.value = meta.defaultFollowedUsers.join('\n');
permanentFollowedUsers.value = meta.permanentFollowedUsers.join('\n');
blockedHosts.value = meta.blockedHosts.join('\n');
silencedHosts.value = meta.silencedHosts?.join('\n') ?? '';
mediaSilencedHosts.value = meta.mediaSilencedHosts.join('\n');
@ -188,6 +209,19 @@ function save_preservedUsernames() {
});
}
function save_defaultUsers() {
os.apiWithDialog('admin/update-meta', {
defaultFollowedUsers: defaultFollowedUsers.value.split('\n'),
permanentFollowedUsers: permanentFollowedUsers.value.split('\n'),
}, undefined, {
'bcf088ec-fec5-42d0-8b9e-16d3b4797a4d': {
text: i18n.ts.defaultFollowedUsersDuplicated,
}
}).then(() => {
fetchInstance(true);
});
}
function save_sensitiveWords() {
os.apiWithDialog('admin/update-meta', {
sensitiveWords: sensitiveWords.value.split('\n'),

View file

@ -60,6 +60,11 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
os.apiWithDialog('mute/create', {
userId: user.id,
expiresAt,
}, undefined, {
'15273a89-374d-49fa-8df6-8bb3feeea455': {
title: i18n.ts.permissionDeniedError,
text: i18n.ts.muteThisUserIsProhibited,
},
}).then(() => {
user.isMuted = true;
});
@ -69,6 +74,11 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
async function toggleRenoteMute() {
os.apiWithDialog(user.isRenoteMuted ? 'renote-mute/delete' : 'renote-mute/create', {
userId: user.id,
}, undefined, {
'15273a89-374d-49fa-8df6-8bb3feeea455': {
title: i18n.ts.permissionDeniedError,
text: i18n.ts.muteThisUserIsProhibited,
},
}).then(() => {
user.isRenoteMuted = !user.isRenoteMuted;
});
@ -79,6 +89,11 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: IRouter
os.apiWithDialog(user.isBlocking ? 'blocking/delete' : 'blocking/create', {
userId: user.id,
}, undefined, {
'e2f04d25-0d94-4ac3-a4d8-ba401062741b': {
title: i18n.ts.permissionDeniedError,
text: i18n.ts.blockThisUserIsProhibited,
},
}).then(() => {
user.isBlocking = !user.isBlocking;
});