diff options
Diffstat (limited to 'src/services/note/unread.ts')
| -rw-r--r-- | src/services/note/unread.ts | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/src/services/note/unread.ts b/src/services/note/unread.ts index e70c63c765..203cff8d39 100644 --- a/src/services/note/unread.ts +++ b/src/services/note/unread.ts @@ -1,47 +1,34 @@ -import NoteUnread from '../../models/note-unread'; -import User, { IUser } from '../../models/user'; -import { INote } from '../../models/note'; -import Mute from '../../models/mute'; +import { Note } from '../../models/entities/note'; import { publishMainStream } from '../stream'; +import { User } from '../../models/entities/user'; +import { Mutings, NoteUnreads } from '../../models'; +import { genId } from '../../misc/gen-id'; -export default async function(user: IUser, note: INote, isSpecified = false) { +export default async function(user: User, note: Note, isSpecified = false) { //#region ミュートしているなら無視 - const mute = await Mute.find({ - muterId: user._id + const mute = await Mutings.find({ + muterId: user.id }); - const mutedUserIds = mute.map(m => m.muteeId.toString()); - if (mutedUserIds.includes(note.userId.toString())) return; + if (mute.map(m => m.muteeId).includes(note.userId)) return; //#endregion - const unread = await NoteUnread.insert({ - noteId: note._id, - userId: user._id, + const unread = await NoteUnreads.save({ + id: genId(), + noteId: note.id, + userId: user.id, isSpecified, - _note: { - userId: note.userId - } + noteUserId: note.userId }); // 2秒経っても既読にならなかったら「未読の投稿がありますよ」イベントを発行する setTimeout(async () => { - const exist = await NoteUnread.findOne({ _id: unread._id }); + const exist = await NoteUnreads.findOne(unread.id); if (exist == null) return; - User.update({ - _id: user._id - }, { - $set: isSpecified ? { - hasUnreadSpecifiedNotes: true, - hasUnreadMentions: true - } : { - hasUnreadMentions: true - } - }); - - publishMainStream(user._id, 'unreadMention', note._id); + publishMainStream(user.id, 'unreadMention', note.id); if (isSpecified) { - publishMainStream(user._id, 'unreadSpecifiedNote', note._id); + publishMainStream(user.id, 'unreadSpecifiedNote', note.id); } }, 2000); } |