summaryrefslogtreecommitdiff
path: root/packages/backend
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend')
-rw-r--r--packages/backend/src/core/NoteCreateService.ts12
-rw-r--r--packages/backend/src/core/NoteReadService.ts58
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts14
-rw-r--r--packages/backend/src/models/json-schema/user.ts4
-rw-r--r--packages/backend/src/server/api/stream/index.ts5
-rw-r--r--packages/backend/src/server/api/stream/types.ts2
6 files changed, 6 insertions, 89 deletions
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 83290b310e..fcc17ace1e 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -502,18 +502,6 @@ export class NoteCreateService implements OnApplicationShutdown {
});
}
- // Channel
- if (note.channelId) {
- this.channelFollowingsRepository.findBy({ followeeId: note.channelId }).then(followings => {
- for (const following of followings) {
- this.noteReadService.insertNoteUnread(following.followerId, note, {
- isSpecified: false,
- isMentioned: false,
- });
- }
- });
- }
-
if (data.reply) {
this.saveReply(data.reply, note);
}
diff --git a/packages/backend/src/core/NoteReadService.ts b/packages/backend/src/core/NoteReadService.ts
index 7c6808fbd0..1129bd159c 100644
--- a/packages/backend/src/core/NoteReadService.ts
+++ b/packages/backend/src/core/NoteReadService.ts
@@ -1,28 +1,20 @@
import { setTimeout } from 'node:timers/promises';
import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';
-import { In, IsNull, Not } from 'typeorm';
+import { In } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { User } from '@/models/entities/User.js';
-import type { Channel } from '@/models/entities/Channel.js';
import type { Packed } from '@/misc/json-schema.js';
import type { Note } from '@/models/entities/Note.js';
import { IdService } from '@/core/IdService.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
-import type { UsersRepository, NoteUnreadsRepository, MutingsRepository, NoteThreadMutingsRepository, FollowingsRepository, ChannelFollowingsRepository } from '@/models/index.js';
-import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import type { NoteUnreadsRepository, MutingsRepository, NoteThreadMutingsRepository } from '@/models/index.js';
import { bindThis } from '@/decorators.js';
-import { NotificationService } from './NotificationService.js';
-import { AntennaService } from './AntennaService.js';
-import { PushNotificationService } from './PushNotificationService.js';
@Injectable()
export class NoteReadService implements OnApplicationShutdown {
#shutdownController = new AbortController();
constructor(
- @Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
-
@Inject(DI.noteUnreadsRepository)
private noteUnreadsRepository: NoteUnreadsRepository,
@@ -32,18 +24,8 @@ export class NoteReadService implements OnApplicationShutdown {
@Inject(DI.noteThreadMutingsRepository)
private noteThreadMutingsRepository: NoteThreadMutingsRepository,
- @Inject(DI.followingsRepository)
- private followingsRepository: FollowingsRepository,
-
- @Inject(DI.channelFollowingsRepository)
- private channelFollowingsRepository: ChannelFollowingsRepository,
-
- private userEntityService: UserEntityService,
private idService: IdService,
private globalEventService: GlobalEventService,
- private notificationService: NotificationService,
- private antennaService: AntennaService,
- private pushNotificationService: PushNotificationService,
) {
}
@@ -54,7 +36,6 @@ export class NoteReadService implements OnApplicationShutdown {
isMentioned: boolean;
}): Promise<void> {
//#region ミュートしているなら無視
- // TODO: 現在の仕様ではChannelにミュートは適用されないのでよしなにケアする
const mute = await this.mutingsRepository.findBy({
muterId: userId,
});
@@ -74,7 +55,6 @@ export class NoteReadService implements OnApplicationShutdown {
userId: userId,
isSpecified: params.isSpecified,
isMentioned: params.isMentioned,
- noteChannelId: note.channelId,
noteUserId: note.userId,
};
@@ -92,9 +72,6 @@ export class NoteReadService implements OnApplicationShutdown {
if (params.isSpecified) {
this.globalEventService.publishMainStream(userId, 'unreadSpecifiedNote', note.id);
}
- if (note.channelId) {
- this.globalEventService.publishMainStream(userId, 'unreadChannel', note.id);
- }
}, () => { /* aborted, ignore it */ });
}
@@ -102,22 +79,9 @@ export class NoteReadService implements OnApplicationShutdown {
public async read(
userId: User['id'],
notes: (Note | Packed<'Note'>)[],
- info?: {
- following: Set<User['id']>;
- followingChannels: Set<Channel['id']>;
- },
): Promise<void> {
- const followingChannels = info?.followingChannels ? info.followingChannels : new Set<string>((await this.channelFollowingsRepository.find({
- where: {
- followerId: userId,
- },
- select: ['followeeId'],
- })).map(x => x.followeeId));
-
- const myAntennas = (await this.antennaService.getAntennas()).filter(a => a.userId === userId);
const readMentions: (Note | Packed<'Note'>)[] = [];
const readSpecifiedNotes: (Note | Packed<'Note'>)[] = [];
- const readChannelNotes: (Note | Packed<'Note'>)[] = [];
for (const note of notes) {
if (note.mentions && note.mentions.includes(userId)) {
@@ -125,17 +89,13 @@ export class NoteReadService implements OnApplicationShutdown {
} else if (note.visibleUserIds && note.visibleUserIds.includes(userId)) {
readSpecifiedNotes.push(note);
}
-
- if (note.channelId && followingChannels.has(note.channelId)) {
- readChannelNotes.push(note);
- }
}
- if ((readMentions.length > 0) || (readSpecifiedNotes.length > 0) || (readChannelNotes.length > 0)) {
+ if ((readMentions.length > 0) || (readSpecifiedNotes.length > 0)) {
// Remove the record
await this.noteUnreadsRepository.delete({
userId: userId,
- noteId: In([...readMentions.map(n => n.id), ...readSpecifiedNotes.map(n => n.id), ...readChannelNotes.map(n => n.id)]),
+ noteId: In([...readMentions.map(n => n.id), ...readSpecifiedNotes.map(n => n.id)]),
});
// TODO: ↓まとめてクエリしたい
@@ -159,16 +119,6 @@ export class NoteReadService implements OnApplicationShutdown {
this.globalEventService.publishMainStream(userId, 'readAllUnreadSpecifiedNotes');
}
});
-
- this.noteUnreadsRepository.countBy({
- userId: userId,
- noteChannelId: Not(IsNull()),
- }).then(channelNoteCount => {
- if (channelNoteCount === 0) {
- // 全て既読になったイベントを発行
- this.globalEventService.publishMainStream(userId, 'readAllChannels');
- }
- });
}
}
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index e8474c7e0e..f2f5e4b582 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -235,18 +235,6 @@ export class UserEntityService implements OnModuleInit {
}
@bindThis
- public async getHasUnreadChannel(userId: User['id']): Promise<boolean> {
- const channels = await this.channelFollowingsRepository.findBy({ followerId: userId });
-
- const unread = channels.length > 0 ? await this.noteUnreadsRepository.findOneBy({
- userId: userId,
- noteChannelId: In(channels.map(x => x.followeeId)),
- }) : null;
-
- return unread != null;
- }
-
- @bindThis
public async getHasUnreadNotification(userId: User['id']): Promise<boolean> {
const latestReadNotificationId = await this.redisClient.get(`latestReadNotification:${userId}`);
@@ -463,7 +451,7 @@ export class UserEntityService implements OnModuleInit {
}).then(count => count > 0),
hasUnreadAnnouncement: this.getHasUnreadAnnouncement(user.id),
hasUnreadAntenna: this.getHasUnreadAntenna(user.id),
- hasUnreadChannel: this.getHasUnreadChannel(user.id),
+ hasUnreadChannel: false, // 後方互換性のため
hasUnreadNotification: this.getHasUnreadNotification(user.id),
hasPendingReceivedFollowRequest: this.getHasPendingReceivedFollowRequest(user.id),
mutedWords: profile!.mutedWords,
diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts
index e8a7212c52..e388a77a5e 100644
--- a/packages/backend/src/models/json-schema/user.ts
+++ b/packages/backend/src/models/json-schema/user.ts
@@ -311,10 +311,6 @@ export const packedMeDetailedOnlySchema = {
type: 'boolean',
nullable: false, optional: false,
},
- hasUnreadChannel: {
- type: 'boolean',
- nullable: false, optional: false,
- },
hasUnreadNotification: {
type: 'boolean',
nullable: false, optional: false,
diff --git a/packages/backend/src/server/api/stream/index.ts b/packages/backend/src/server/api/stream/index.ts
index f1f8bfd3a2..2f473cd012 100644
--- a/packages/backend/src/server/api/stream/index.ts
+++ b/packages/backend/src/server/api/stream/index.ts
@@ -186,10 +186,7 @@ export default class Connection {
if (note == null) return;
if (this.user && (note.userId !== this.user.id)) {
- this.noteReadService.read(this.user.id, [note], {
- following: this.following,
- followingChannels: this.followingChannels,
- });
+ this.noteReadService.read(this.user.id, [note]);
}
}
diff --git a/packages/backend/src/server/api/stream/types.ts b/packages/backend/src/server/api/stream/types.ts
index 1e6e51e76d..f4eedc3964 100644
--- a/packages/backend/src/server/api/stream/types.ts
+++ b/packages/backend/src/server/api/stream/types.ts
@@ -97,8 +97,6 @@ export interface MainStreamTypes {
readAllAntennas: undefined;
unreadAntenna: Antenna;
readAllAnnouncements: undefined;
- readAllChannels: undefined;
- unreadChannel: Note['id'];
myTokenRegenerated: undefined;
signin: Signin;
registryUpdated: {