blob: 549aa971a70a29169ff2c102cf7e3f76a230e2f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import { Note } from '../../models/entities/note';
import { publishMainStream } from '../stream';
import { User } from '../../models/entities/user';
import { Mutings, NoteUnreads, Users } from '../../models';
import { genId } from '../../misc/gen-id';
export default async function(user: User, note: Note, isSpecified = false) {
// ローカルユーザーのみ
if (!Users.isLocalUser(user)) return;
//#region ミュートしているなら無視
const mute = await Mutings.find({
muterId: user.id
});
if (mute.map(m => m.muteeId).includes(note.userId)) return;
//#endregion
const unread = await NoteUnreads.save({
id: genId(),
noteId: note.id,
userId: user.id,
isSpecified,
noteUserId: note.userId
});
// 2秒経っても既読にならなかったら「未読の投稿がありますよ」イベントを発行する
setTimeout(async () => {
const exist = await NoteUnreads.findOne(unread.id);
if (exist == null) return;
publishMainStream(user.id, 'unreadMention', note.id);
if (isSpecified) {
publishMainStream(user.id, 'unreadSpecifiedNote', note.id);
}
}, 2000);
}
|