Skip to content

スレッドをミュートでRNやリアクションの通知も抑制して欲しい #13965

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

Open
1 task
Sayamame-beans opened this issue Jun 10, 2024 · 19 comments · May be fixed by #15271
Open
1 task

スレッドをミュートでRNやリアクションの通知も抑制して欲しい #13965

Sayamame-beans opened this issue Jun 10, 2024 · 19 comments · May be fixed by #15271
Assignees
Labels
[Feat] Mute/Block Mute or Block related issue. It does not cover server blocking or server muting. ✨Feature This adds/improves/enhances a feature packages/backend Server side specific issue/PR

Comments

@Sayamame-beans
Copy link
Member

Sayamame-beans commented Jun 10, 2024

Summary

現状、スレッドをミュートはリプライ通知とメンション通知のみを抑制しているようですが、RN通知や引用通知、リアクション通知を切りたい可能性は十分にあると思います。

related: #2144, #2227, #10255
area of [FEATURE] Mute/Block (2144 is not registered)

Purpose

通知が溢れないように
もう触れるつもりのない投稿でも通知が流れ、スレッドをミュートする意味があまり無い
など

Do you want to implement this feature yourself?

  • Yes, I will implement this by myself and send a pull request
@Sayamame-beans Sayamame-beans added the ✨Feature This adds/improves/enhances a feature label Jun 10, 2024
@Sayamame-beans
Copy link
Member Author

(Partially?) Duplicate of: #8102

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jun 20, 2024

This is intended because thread mute is a feature that mutes conversations.
If you want to mute things like voting in polls, I think it needs to be implemented as a separate feature.

この方針は今も変わらないでしょうか…?
投稿/会話をミュートしたら、関連する引用やリアクションの通知も来ない方が自然だと思っていました
(未確認: Twitterはそうなっていた?)

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jul 19, 2024

リプライ作成時に通知をwebhookを抑制しているっぽい?

if (!isThreadMuted) {
nm.push(data.reply.userId, 'reply');
this.globalEventService.publishMainStream(data.reply.userId, 'reply', noteObj);
const webhooks = (await this.webhookService.getActiveWebhooks()).filter(x => x.userId === data.reply!.userId && x.on.includes('reply'));
for (const webhook of webhooks) {
this.queueService.userWebhookDeliver(webhook, 'reply', {
note: noteObj,
});
}
}

それと、メンション一覧(通知ページの"あなた宛て")では表示が除外されているっぽい

this.queryService.generateMutedNoteThreadQuery(query, me);

おまけにinsertNoteUnread(あんまり分かっていない)

if (isThreadMuted) return;

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jul 20, 2024

TLに流れるのは抑制すべきか不明…
追記: これは(恐らく)ノートのミュートとして実装されるべき
スレッドミュートはあくまで通知系列用として扱う

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jul 20, 2024

新規ノート通知も抑制されていなさそう 新規ノート通知はリプライを含んでいないようなので、引用リノートのみ対象となる。

if (data.reply == null) {
// TODO: キャッシュ
this.followingsRepository.findBy({
followeeId: user.id,
notify: 'normal',
}).then(followings => {
if (note.visibility !== 'specified') {
for (const following of followings) {
// TODO: ワードミュート考慮
this.notificationService.createNotification(following.followerId, 'note', {
noteId: note.id,
}, user.id);
}
}
});
}

ただ、純粋にRN/引用をthread mute対象にするコードを組んだだけだと、返信かつ引用のケースで、その片方がthread mute対象の場合のケースを厳密に処理出来ない(ミュートされない)ので、新規ノート通知通知も抑えない方が挙動が揃うことになる。

返信かつ引用のケースで、返信元xor引用元がthread mute対象の場合に抑制しようと思うと、返信や引用を処理する前に両方あるケース用の処理を用意する必要がありそう?
新規ノート通知のことを考えるとそれより前に置きたい(新規ノート通知を後ろに置きたい)気もするが、安直に後ろに置くと例外throwを踏んだ場合にこれまでギリギリ処理されていた部分が処理されなくなってしまいそうで悩む

@Sayamame-beans
Copy link
Member Author

途中でthrowされるケースはあまり想定しなくても良いかも?
(表に見える範囲でthrowされるのはspecifiedでvisibleUsersがnullのケースで、新規ノート通知は他人に対して有効なものかつspecifiedは除外されてるっぽいので、被らない。元々そこまで想定されてなさそうというのもある…?)

@Sayamame-beans

This comment was marked as resolved.

@Sayamame-beans
Copy link
Member Author

Twitterでは

  • 他の関係のないツイートにおいて、当人への返信の中でミュート対象のツイートを引用すると、そのツイートは通知されない
  • ミュート対象のツイートへのリプライにおいて、他の関係ない当人のツイートを引用すると、その引用は通知されない

このような、返信/メンションによる通知と引用による通知が同時に発生条件を満たした場合に、どちらかがミュート条件を満たしているとき通知を抑制すべきか否かは若干諸説ある

@Sayamame-beans
Copy link
Member Author

これMisskeyではどちらにしましょう…

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jul 27, 2024

Twitterでは

  • 他の関係のないツイートにおいて、当人への返信の中でミュート対象のツイートを引用すると、そのツイートは通知されない
  • ミュート対象のツイートへのリプライにおいて、他の関係ない当人のツイートを引用すると、その引用は通知されない

この2つのケースでは、「関係ない投稿に関する通知でもあるので見えて欲しい」という考え方と、「そのようにすれば迂回出来てしまうからやはり通知されるべきではない」という2つの考え方が発生します。

どちらか片方に寄せるのが難しければ、アカウント単位の設定で挙動を切り替えられるようにするとかになりますが…そちらの方が良いでしょうか? (それはそれで設定項目の文言が難しいですが)

追記: 設定で挙動を切り替えられるようにする予定

@Sayamame-beans
Copy link
Member Author

それと、メンション一覧(通知ページの"あなた宛て")では表示が除外されているっぽい

this.queryService.generateMutedNoteThreadQuery(query, me);

後からスレッドミュートを行っても一般の通知欄では既にある通知は消えないが、メンション一覧では後からでも消えるという挙動の差はそのままで良いのか不明

@tamaina
Copy link
Contributor

tamaina commented Aug 13, 2024

upvote

RN/リアクション通知だけ消す「スレッドミュート弱」とすべての通知を発生させないとかの「スレッドミュート強」があると嬉しいかも?

@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Aug 13, 2024

RN/リアクション通知だけ消す「スレッドミュート弱」

なるほど…
とすると、引用は弱では阻止せず、強では軒並み(私が挙げたケースでも)弾くという2択ですかね?

@Sayamame-beans Sayamame-beans self-assigned this Aug 13, 2024
@tamaina
Copy link
Contributor

tamaina commented Aug 13, 2024

RN/リアクション通知だけ消す「スレッドミュート弱」

スレッドミュートとは関係なく「RN/リアクション通知だけ消す」機能をつければいいのでは

(今のスレッドミュートの効能を勘違いしてた(嫌な話題を見ないようにするものだったわね

@Sayamame-beans
Copy link
Member Author

ふむ…?

@tamaina

This comment has been minimized.

@Sayamame-beans
Copy link
Member Author

This is intended because thread mute is a feature that mutes conversations.
If you want to mute things like voting in polls, I think it needs to be implemented as a separate feature.

この方針は今も変わらないでしょうか…? 投稿/会話をミュートしたら、関連する引用やリアクションの通知も来ない方が自然だと思っていました (未確認: Twitterはそうなっていた?) (Twitterはそうなっている)

これメンションするの忘れてたみたいです…
@syuilo どうでしょうか。"スレッドをミュート"とは別の機能として分離した方が良い感じでしょうか?

@samunohito samunohito added the [Feat] Mute/Block Mute or Block related issue. It does not cover server blocking or server muting. label Nov 28, 2024
@Sayamame-beans
Copy link
Member Author

Sayamame-beans commented Jan 12, 2025

Twitterでは

  • 他の関係のないツイートにおいて、当人への返信の中でミュート対象のツイートを引用すると、そのツイートは通知されない
  • ミュート対象のツイートへのリプライにおいて、他の関係ない当人のツイートを引用すると、その引用は通知されない

この2つのケースでは、「関係ない投稿に関する通知でもあるので見えて欲しい」という考え方と、「そのようにすれば迂回出来てしまうからやはり通知されるべきではない」という2つの考え方が発生します。

どちらか片方に寄せるのが難しければ、アカウント単位の設定で挙動を切り替えられるようにするとかになりますが…そちらの方が良いでしょうか? (それはそれで設定項目の文言が難しいですが)

追記: 設定で挙動を切り替えられるようにする予定

#14995 (メンションミュートPR)では、箇条書きのうち前者に似たようなパターンにおいて通知が来るようにしたので、こちらも前者は通知される実装1択で良い気がしてきました (この仕様を逆手に取って迂回して通知を発生させてくる場合は、そのユーザーをそもそもミュートすべきor自身の通知の受け取り範囲を設定変更すべきな気もするので)
そして後者は通知しない方が自然そう

(将来的には、恐らくリプライ系のミュートとリアクション系のミュートを分離する方が理想的なのだろうとは思いますが…)

@Sayamame-beans
Copy link
Member Author

操作ミスです…

@github-project-automation github-project-automation bot moved this from Done to Todo in [実験中] 管理用 Jan 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feat] Mute/Block Mute or Block related issue. It does not cover server blocking or server muting. ✨Feature This adds/improves/enhances a feature packages/backend Server side specific issue/PR
Projects
Status: No status
3 participants