summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-08-06 09:26:40 +0000
committerdakkar <dakkar@thenautilus.net>2024-08-06 09:26:40 +0000
commit712af44de47a00b7c5a4d2c5ecfc7dfbb8663f9e (patch)
tree0d3aecd49c2ba9fd02f298a93f57df23ba5f0ad6
parentmerge: use correct user for preview/link of collapsed parent - fixes #575 (!581) (diff)
parentdon't send real-time updates of replies to blocked users (diff)
downloadsharkey-712af44de47a00b7c5a4d2c5ecfc7dfbb8663f9e.tar.gz
sharkey-712af44de47a00b7c5a4d2c5ecfc7dfbb8663f9e.tar.bz2
sharkey-712af44de47a00b7c5a4d2c5ecfc7dfbb8663f9e.zip
merge: don't send real-time updates of replies to blocked users #457 #573 (!566)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/566 Approved-by: Tess K <me@thvxl.se> Approved-by: fEmber <acomputerdog@gmail.com>
-rw-r--r--packages/backend/src/core/GlobalEventService.ts1
-rw-r--r--packages/backend/src/core/NoteCreateService.ts1
-rw-r--r--packages/backend/src/server/api/stream/Connection.ts12
3 files changed, 14 insertions, 0 deletions
diff --git a/packages/backend/src/core/GlobalEventService.ts b/packages/backend/src/core/GlobalEventService.ts
index 22871adb16..4c8a3dc050 100644
--- a/packages/backend/src/core/GlobalEventService.ts
+++ b/packages/backend/src/core/GlobalEventService.ts
@@ -135,6 +135,7 @@ export interface NoteEventTypes {
};
replied: {
id: MiNote['id'];
+ userId: MiUser['id'];
};
}
type NoteStreamEventTypes = {
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 41efa76f3f..44b066444d 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -831,6 +831,7 @@ export class NoteCreateService implements OnApplicationShutdown {
if (data.reply) {
this.globalEventService.publishNoteStream(data.reply.id, 'replied', {
id: note.id,
+ userId: user.id,
});
// 通知
if (data.reply.userHost === null) {
diff --git a/packages/backend/src/server/api/stream/Connection.ts b/packages/backend/src/server/api/stream/Connection.ts
index 41c0feccc7..7dd7db24e5 100644
--- a/packages/backend/src/server/api/stream/Connection.ts
+++ b/packages/backend/src/server/api/stream/Connection.ts
@@ -201,6 +201,18 @@ export default class Connection {
@bindThis
private async onNoteStreamMessage(data: GlobalEvents['note']['payload']) {
+ // we must not send to the frontend information about notes from
+ // users who blocked the logged-in user, even when they're replies
+ // to notes the logged-in user can see
+ if (data.type === 'replied') {
+ const noteUserId = data.body.body.userId;
+ if (noteUserId !== null) {
+ if (this.userIdsWhoBlockingMe.has(noteUserId)) {
+ return;
+ }
+ }
+ }
+
this.sendMessageToWs('noteUpdated', {
id: data.body.id,
type: data.type,