Fix bug
This commit is contained in:
parent
21a2e5f415
commit
db60188847
|
@ -27,51 +27,30 @@ type Type = 'reply' | 'renote' | 'quote' | 'mention';
|
||||||
class NotificationManager {
|
class NotificationManager {
|
||||||
private notifier: IUser;
|
private notifier: IUser;
|
||||||
private note: any;
|
private note: any;
|
||||||
private queue: Array<{
|
|
||||||
notifiee: ILocalUser['_id'],
|
|
||||||
type: Type;
|
|
||||||
}> = [];
|
|
||||||
|
|
||||||
constructor(notifier: IUser, note: any) {
|
constructor(notifier: IUser, note: any) {
|
||||||
this.notifier = notifier;
|
this.notifier = notifier;
|
||||||
this.note = note;
|
this.note = note;
|
||||||
}
|
}
|
||||||
|
|
||||||
public push(notifiee: ILocalUser['_id'], type: Type) {
|
public async push(notifiee: ILocalUser['_id'], type: Type) {
|
||||||
// 自分自身へは通知しない
|
// 自分自身へは通知しない
|
||||||
if (this.notifier._id.equals(notifiee)) return;
|
if (this.notifier._id.equals(notifiee)) return;
|
||||||
|
|
||||||
const exist = this.queue.find(x => x.notifiee.equals(notifiee));
|
// ミュート情報を取得
|
||||||
|
const mentioneeMutes = await Mute.find({
|
||||||
|
muterId: notifiee
|
||||||
|
});
|
||||||
|
|
||||||
if (exist) {
|
const mentioneesMutedUserIds = mentioneeMutes.map(m => m.muteeId.toString());
|
||||||
// 「メンションされているかつ返信されている」場合は、メンションとしての通知ではなく返信としての通知にする
|
|
||||||
if (type != 'mention') {
|
// 通知される側のユーザーが通知する側のユーザーをミュートしていない限りは通知する
|
||||||
exist.type = type;
|
if (!mentioneesMutedUserIds.includes(this.notifier._id.toString())) {
|
||||||
}
|
notify(notifiee, this.notifier._id, type, {
|
||||||
} else {
|
noteId: this.note._id
|
||||||
this.queue.push({
|
|
||||||
notifiee, type
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public deliver() {
|
|
||||||
this.queue.forEach(async x => {
|
|
||||||
// ミュート情報を取得
|
|
||||||
const mentioneeMutes = await Mute.find({
|
|
||||||
muterId: x.notifiee
|
|
||||||
});
|
|
||||||
|
|
||||||
const mentioneesMutedUserIds = mentioneeMutes.map(m => m.muteeId.toString());
|
|
||||||
|
|
||||||
// 通知される側のユーザーが通知する側のユーザーをミュートしていない限りは通知する
|
|
||||||
if (!mentioneesMutedUserIds.includes(this.notifier._id.toString())) {
|
|
||||||
notify(x.notifiee, this.notifier._id, x.type, {
|
|
||||||
noteId: this.note._id
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async (user: IUser, data: {
|
export default async (user: IUser, data: {
|
||||||
|
|
Loading…
Reference in a new issue