mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-13 13:37:31 -07:00
フォローしているユーザーからのフォローを自動承認するオプション (#3780)
This commit is contained in:
parent
a55f53439b
commit
644e420930
5 changed files with 35 additions and 3 deletions
|
@ -518,6 +518,7 @@ common/views/components/profile-editor.vue:
|
|||
is-bot: "このアカウントはBotです"
|
||||
is-locked: "フォローを承認制にする"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
|
||||
advanced: "その他"
|
||||
privacy: "プライバシー"
|
||||
save: "保存"
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
<div>
|
||||
<ui-switch v-model="isLocked" @change="save(false)">{{ $t('is-locked') }}</ui-switch>
|
||||
<ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch>
|
||||
<ui-switch v-model="autoAcceptFollowed" @change="save(false)">{{ $t('auto-accept-followed') }}</ui-switch>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
@ -118,6 +119,7 @@ export default Vue.extend({
|
|||
isBot: false,
|
||||
isLocked: false,
|
||||
carefulBot: false,
|
||||
autoAcceptFollowed: false,
|
||||
saving: false,
|
||||
avatarUploading: false,
|
||||
bannerUploading: false
|
||||
|
@ -156,6 +158,7 @@ export default Vue.extend({
|
|||
this.isBot = this.$store.state.i.isBot;
|
||||
this.isLocked = this.$store.state.i.isLocked;
|
||||
this.carefulBot = this.$store.state.i.carefulBot;
|
||||
this.autoAcceptFollowed = this.$store.state.i.autoAcceptFollowed;
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
@ -217,7 +220,8 @@ export default Vue.extend({
|
|||
isCat: !!this.isCat,
|
||||
isBot: !!this.isBot,
|
||||
isLocked: !!this.isLocked,
|
||||
carefulBot: !!this.carefulBot
|
||||
carefulBot: !!this.carefulBot,
|
||||
autoAcceptFollowed: !!this.autoAcceptFollowed
|
||||
}).then(i => {
|
||||
this.saving = false;
|
||||
this.$store.state.i.avatarId = i.avatarId;
|
||||
|
|
|
@ -69,6 +69,11 @@ type IUserBase = {
|
|||
*/
|
||||
carefulBot: boolean;
|
||||
|
||||
/**
|
||||
* フォローしているユーザーからのフォローリクエストを自動承認するか
|
||||
*/
|
||||
autoAcceptFollowed: boolean;
|
||||
|
||||
/**
|
||||
* このアカウントに届いているフォローリクエストの数
|
||||
*/
|
||||
|
|
|
@ -94,6 +94,13 @@ export const meta = {
|
|||
}
|
||||
},
|
||||
|
||||
autoAcceptFollowed: {
|
||||
validator: $.bool.optional,
|
||||
desc: {
|
||||
'ja-JP': 'フォローしているユーザーからのフォローリクエストを自動承認するか'
|
||||
}
|
||||
},
|
||||
|
||||
isBot: {
|
||||
validator: $.bool.optional,
|
||||
desc: {
|
||||
|
@ -140,6 +147,7 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
|
|||
if (typeof ps.isLocked == 'boolean') updates.isLocked = ps.isLocked;
|
||||
if (typeof ps.isBot == 'boolean') updates.isBot = ps.isBot;
|
||||
if (typeof ps.carefulBot == 'boolean') updates.carefulBot = ps.carefulBot;
|
||||
if (typeof ps.autoAcceptFollowed == 'boolean') updates.autoAcceptFollowed = ps.autoAcceptFollowed;
|
||||
if (typeof ps.isCat == 'boolean') updates.isCat = ps.isCat;
|
||||
if (typeof ps.autoWatch == 'boolean') updates['settings.autoWatch'] = ps.autoWatch;
|
||||
if (typeof ps.alwaysMarkNsfw == 'boolean') updates['settings.alwaysMarkNsfw'] = ps.alwaysMarkNsfw;
|
||||
|
|
|
@ -45,8 +45,22 @@ export default async function(follower: IUser, followee: IUser, requestId?: stri
|
|||
// フォロワーがローカルユーザーであり、フォロー対象がリモートユーザーである
|
||||
// 上記のいずれかに当てはまる場合はすぐフォローせずにフォローリクエストを発行しておく
|
||||
if (followee.isLocked || (followee.carefulBot && follower.isBot) || (isLocalUser(follower) && isRemoteUser(followee))) {
|
||||
await createFollowRequest(follower, followee, requestId);
|
||||
return;
|
||||
let autoAccept = false;
|
||||
|
||||
// フォローしているユーザーは自動承認オプション
|
||||
if (isLocalUser(followee) && followee.autoAcceptFollowed) {
|
||||
const followed = await Following.findOne({
|
||||
followerId: followee._id,
|
||||
followeeId: follower._id
|
||||
});
|
||||
|
||||
if (followed) autoAccept = true;
|
||||
}
|
||||
|
||||
if (!autoAccept) {
|
||||
await createFollowRequest(follower, followee, requestId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await Following.insert({
|
||||
|
|
Loading…
Reference in a new issue