Skip to content

Commit

Permalink
Remove duplication of valid notifier check
Browse files Browse the repository at this point in the history
  • Loading branch information
tai-cha committed Feb 20, 2024
1 parent ef65252 commit 239a695
Showing 1 changed file with 0 additions and 35 deletions.
35 changes: 0 additions & 35 deletions packages/backend/src/core/entities/NotificationEntityService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,6 @@ export class NotificationEntityService implements OnModuleInit {

let validNotifications = notifications;

validNotifications = await this.#filterValidNotifier(validNotifications, meId);

const noteIds = validNotifications.map(x => 'noteId' in x ? x.noteId : null).filter(isNotNull);
const notes = noteIds.length > 0 ? await this.notesRepository.find({
where: { id: In(noteIds) },
Expand Down Expand Up @@ -255,8 +253,6 @@ export class NotificationEntityService implements OnModuleInit {

let validNotifications = notifications;

validNotifications = await this.#filterValidNotifier(validNotifications, meId);

const noteIds = validNotifications.map(x => 'noteId' in x ? x.noteId : null).filter(isNotNull);
const notes = noteIds.length > 0 ? await this.notesRepository.find({
where: { id: In(noteIds) },
Expand Down Expand Up @@ -322,35 +318,4 @@ export class NotificationEntityService implements OnModuleInit {

return true;
}

/**
* notifierが存在するか、ミュートされていないか、サスペンドされていないかを複数確認する
*/
async #filterValidNotifier <T extends MiNotification | MiGroupedNotification> (
notifications: T[],
meId: MiUser['id'],
) : Promise<T[]> {
const [
userIdsWhoMeMuting,
userMutedInstances,
] = await Promise.all([
this.cacheService.userMutingsCache.fetch(meId),
this.cacheService.userProfileCache.fetch(meId).then(p => new Set(p.mutedInstances)),
]);

const filteredNotifications = ((await Promise.all(notifications.map(async (notification) => {
if (!('notifierId' in notification)) return notification;
if (userIdsWhoMeMuting.has(notification.notifierId)) return null;

const notifier = await this.usersRepository.findOneBy({ id: notification.notifierId });
if (notifier === null) return null;
if (notifier.host && userMutedInstances.has(notifier.host)) return null;

if (notifier.isSuspended) return null;

return notification;
}))) as [T|null] ).filter((notification): notification is T => notification !== null);

return filteredNotifications;
}
}

0 comments on commit 239a695

Please sign in to comment.