Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

フォローリクエストを承認もしくは拒否できなくなる場合がある #12268

Open
atsu1125 opened this issue Nov 6, 2023 · 0 comments
Labels
🐛Bug Unexpected behavior packages/frontend Client side specific issue/PR

Comments

@atsu1125
Copy link
Contributor

atsu1125 commented Nov 6, 2023

💡 Summary

ケース1:フォロー承認制ではないローカルユーザーがサイレンスされたインスタンスのユーザーにフォローされる場合
#12031 にてサイレンスされたインスタンスのユーザーのフォローは全て承認制となっている
ケース2:フォロー承認制ではなくcarefulBotなローカルユーザーがBotアカウントにフォローされる場合

// フォロー対象が鍵アカウントである or
// フォロワーがBotであり、フォロー対象がBotからのフォローに慎重である or
// フォロワーがローカルユーザーであり、フォロー対象がリモートユーザーである or
// フォロワーがローカルユーザーであり、フォロー対象がサイレンスされているサーバーである
// 上記のいずれかに当てはまる場合はすぐフォローせずにフォローリクエストを発行しておく
if (
followee.isLocked ||
(followeeProfile.carefulBot && follower.isBot) ||
(this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee) && process.env.FORCE_FOLLOW_REMOTE_USER_FOR_TESTING !== 'true') ||
(this.userEntityService.isLocalUser(followee) && this.userEntityService.isRemoteUser(follower) && this.utilityService.isSilencedHost((await this.metaService.fetch()).silencedHosts, follower.host))
) {
let autoAccept = false;

2つのケースにおいても通知欄にフォローリクエストの許可拒否ボタンが現れるが
通知が流れ切ってしまった場合もしくはRedisがリセットされてしまった場合には
通知欄からは当該フォローリクエストを操作できなくなる
この場合にはフォローされるアカウントをフォロー承認制に変更すれば
PostgreSQLにあるフォローリクエスト一覧が表示されるため
followRequests: {
title: i18n.ts.followRequests,
icon: 'ti ti-user-plus',
show: computed(() => $i != null && $i.isLocked),
indicated: computed(() => $i != null && $i.hasPendingReceivedFollowRequest),
to: '/my/follow-requests',
},

そこからフォローリクエストを承認することが可能となる
ただしフォロー承認制を解除した場合にはフォロー承認制の設定期間内のフォローかどうかに関わらず
サイレンスされたインスタンスのユーザーからのフォローもBotアカウントからのフォローも全部承認してしまう
// 鍵垢を解除したとき、溜まっていたフォローリクエストがあるならすべて承認
if (user.isLocked && ps.isLocked === false) {
this.userFollowingService.acceptAllFollowRequests(user);
}

こういった形でフォローリクエストの扱いが競合する実装となってしまっています。
以下はこの問題に対する私の提案ですが、他に案があれば教えて欲しいです。

案1:フォローリクエストが発行される機会をフォロー承認制の場合に限定する
この場合は
・フォローリクエストが発行されるのは承認制の場合のみに変更(既存のcarefulBotとインスタンスサイレンスのフォローリクエスト発行の仕様は廃止)
メリット:
概ねユーザーの想定通りにフォローリクエストの操作が可能となる
デメリット:
carefulBotやインスタンスサイレンスによるフォローリクエスト発行機能はなくなる

案2:インスタンスサイレンスとcarefulBotの際にも正しくフォローリクエストを操作できるようにする
この場合は
・フォロー承認制解除の際のフォロー承認は手動にする
・フォローリクエスト一覧の表示式を[フォロー承認制ではない and フォローリクエストがある] or [フォロー承認制アカウント]に変更
メリット:
既存の機能を維持したまま適切にフォローリクエストの操作が可能となる
デメリット:
ユーザーにとっては承認制ではないつもりである場合にもなぜかフォローリクエストが表示されるので
何らかの注意メッセージ(「あなたはBotからのフォローに慎重なためフォローリクエストが発行されています」、「インスタンスの管理者がこのユーザーからのフォローにあなたの確認が必要であると判断しました」のようなもの)を表示するようにしないと混乱を招きそう
→現状はcarefulBotでもインスタンスサイレンスでもユーザーからはぱっと見でフォローリクエストの対象だとは分からないため

🥰 Expected Behavior

フォローリクエストが意図通りにクライアントから操作できる

🤬 Actual Behavior

フォローリクエストが意図通りにクライアントから操作できない

📝 Steps to Reproduce

No response

💻 Frontend Environment

* Misskey: 2023.11.0

🛰 Backend Environment (for server admin)

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior packages/frontend Client side specific issue/PR
Projects
Status: No status
Development

No branches or pull requests

2 participants