This commit is contained in:
syuilo 2017-12-22 07:38:57 +09:00
parent 6575a6de5b
commit 8b515b4dae
2 changed files with 22 additions and 0 deletions

View File

@ -1,5 +1,6 @@
import * as mongo from 'mongodb'; import * as mongo from 'mongodb';
import Notification from '../models/notification'; import Notification from '../models/notification';
import Mute from '../models/mute';
import event from '../event'; import event from '../event';
import serialize from '../serializers/notification'; import serialize from '../serializers/notification';
@ -32,6 +33,17 @@ export default (
setTimeout(async () => { setTimeout(async () => {
const fresh = await Notification.findOne({ _id: notification._id }, { is_read: true }); const fresh = await Notification.findOne({ _id: notification._id }, { is_read: true });
if (!fresh.is_read) { if (!fresh.is_read) {
//#region ただしミュートしているユーザーからの通知なら無視
const mute = await Mute.find({
muter_id: notifiee,
deleted_at: { $exists: false }
});
const mutedUserIds = mute.map(m => m.mutee_id.toString());
if (mutedUserIds.indexOf(notifier.toHexString()) != -1) {
return;
}
//#endregion
event(notifiee, 'unread_notification', await serialize(notification)); event(notifiee, 'unread_notification', await serialize(notification));
} }
}, 3000); }, 3000);

View File

@ -2,6 +2,7 @@
* Module dependencies * Module dependencies
*/ */
import Notification from '../../models/notification'; import Notification from '../../models/notification';
import Mute from '../../models/mute';
/** /**
* Get count of unread notifications * Get count of unread notifications
@ -11,9 +12,18 @@ import Notification from '../../models/notification';
* @return {Promise<any>} * @return {Promise<any>}
*/ */
module.exports = (params, user) => new Promise(async (res, rej) => { module.exports = (params, user) => new Promise(async (res, rej) => {
const mute = await Mute.find({
muter_id: user._id,
deleted_at: { $exists: false }
});
const mutedUserIds = mute.map(m => m.mutee_id);
const count = await Notification const count = await Notification
.count({ .count({
notifiee_id: user._id, notifiee_id: user._id,
notifier_id: {
$nin: mutedUserIds
},
is_read: false is_read: false
}); });