Skip to content
Snippets Groups Projects
Commit 6575a6de authored by syuilo's avatar syuilo
Browse files

wip

parent 34923888
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@
*/
import $ from 'cafy';
import Notification from '../../models/notification';
import Mute from '../../models/mute';
import serialize from '../../serializers/notification';
import getFriends from '../../common/get-friends';
import read from '../../common/read-notification';
......@@ -45,8 +46,18 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
return rej('cannot set since_id and until_id');
}
const mute = await Mute.find({
muter_id: user._id,
deleted_at: { $exists: false }
});
const query = {
notifiee_id: user._id
notifiee_id: user._id,
$and: [{
notifier_id: {
$nin: mute.map(m => m.mutee_id)
}
}]
} as any;
const sort = {
......@@ -54,12 +65,14 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
};
if (following) {
// ID list of the user $self and other users who the user follows
// ID list of the user itself and other users who the user follows
const followingIds = await getFriends(user._id);
query.notifier_id = {
$in: followingIds
};
query.$and.push({
notifier_id: {
$in: followingIds
}
});
}
if (type) {
......
......@@ -3,19 +3,48 @@ import * as redis from 'redis';
import * as debug from 'debug';
import User from '../models/user';
import Mute from '../models/mute';
import serializePost from '../serializers/post';
import readNotification from '../common/read-notification';
const log = debug('misskey');
export default function homeStream(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any): void {
export default async function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any) {
// Subscribe Home stream channel
subscriber.subscribe(`misskey:user-stream:${user._id}`);
const mute = await Mute.find({
muter_id: user._id,
deleted_at: { $exists: false }
});
const mutedUserIds = mute.map(m => m.mutee_id.toString());
subscriber.on('message', async (channel, data) => {
switch (channel.split(':')[1]) {
case 'user-stream':
connection.send(data);
try {
const x = JSON.parse(data);
if (x.type == 'post') {
if (mutedUserIds.indexOf(x.body.user_id) != -1) {
return;
}
if (x.body.reply != null && mutedUserIds.indexOf(x.body.reply.user_id) != -1) {
return;
}
if (x.body.repost != null && mutedUserIds.indexOf(x.body.repost.user_id) != -1) {
return;
}
} else if (x.type == 'notification') {
if (mutedUserIds.indexOf(x.body.user_id) != -1) {
return;
}
}
connection.send(data);
} catch (e) {
connection.send(data);
}
break;
case 'post-stream':
const postId = channel.split(':')[2];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment