mirror of
https://iceshrimp.dev/crimekillz/iceshrimp-161sh.git
synced 2024-11-23 12:39:59 +01:00
Fix bug
This commit is contained in:
parent
d9df812b66
commit
a6106e9bd0
@ -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 New Issue
Block a user