summaryrefslogtreecommitdiff
path: root/src/server/api/stream
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/stream')
-rw-r--r--src/server/api/stream/games/reversi-game.ts (renamed from src/server/api/stream/reversi-game.ts)8
-rw-r--r--src/server/api/stream/games/reversi.ts (renamed from src/server/api/stream/reversi.ts)4
-rw-r--r--src/server/api/stream/hybrid-timeline.ts47
-rw-r--r--src/server/api/stream/local-timeline.ts2
4 files changed, 54 insertions, 7 deletions
diff --git a/src/server/api/stream/reversi-game.ts b/src/server/api/stream/games/reversi-game.ts
index ea8a9741d2..bcbfad0a7b 100644
--- a/src/server/api/stream/reversi-game.ts
+++ b/src/server/api/stream/games/reversi-game.ts
@@ -1,10 +1,10 @@
import * as websocket from 'websocket';
import * as redis from 'redis';
import * as CRC32 from 'crc-32';
-import ReversiGame, { pack } from '../../../models/reversi-game';
-import { publishReversiGameStream } from '../../../publishers/stream';
-import Reversi from '../../../reversi/core';
-import * as maps from '../../../reversi/maps';
+import ReversiGame, { pack } from '../../../../models/games/reversi/game';
+import { publishReversiGameStream } from '../../../../stream';
+import Reversi from '../../../../games/reversi/core';
+import * as maps from '../../../../games/reversi/maps';
import { ParsedUrlQuery } from 'querystring';
export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user?: any): void {
diff --git a/src/server/api/stream/reversi.ts b/src/server/api/stream/games/reversi.ts
index 35c6167364..3f23466520 100644
--- a/src/server/api/stream/reversi.ts
+++ b/src/server/api/stream/games/reversi.ts
@@ -1,8 +1,8 @@
import * as mongo from 'mongodb';
import * as websocket from 'websocket';
import * as redis from 'redis';
-import Matching, { pack } from '../../../models/reversi-matching';
-import publishUserStream from '../../../publishers/stream';
+import Matching, { pack } from '../../../../models/games/reversi/matching';
+import publishUserStream from '../../../../stream';
export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any): void {
// Subscribe reversi stream
diff --git a/src/server/api/stream/hybrid-timeline.ts b/src/server/api/stream/hybrid-timeline.ts
new file mode 100644
index 0000000000..513af9c1d4
--- /dev/null
+++ b/src/server/api/stream/hybrid-timeline.ts
@@ -0,0 +1,47 @@
+import * as websocket from 'websocket';
+import * as redis from 'redis';
+
+import { IUser } from '../../../models/user';
+import Mute from '../../../models/mute';
+import { pack } from '../../../models/note';
+
+export default async function(
+ request: websocket.request,
+ connection: websocket.connection,
+ subscriber: redis.RedisClient,
+ user: IUser
+) {
+ // Subscribe stream
+ subscriber.subscribe('misskey:hybrid-timeline', `misskey:hybrid-timeline:${user._id}`);
+
+ const mute = await Mute.find({ muterId: user._id });
+ const mutedUserIds = mute.map(m => m.muteeId.toString());
+
+ subscriber.on('message', async (_, data) => {
+ const note = JSON.parse(data);
+
+ //#region 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
+ if (mutedUserIds.indexOf(note.userId) != -1) {
+ return;
+ }
+ if (note.reply != null && mutedUserIds.indexOf(note.reply.userId) != -1) {
+ return;
+ }
+ if (note.renote != null && mutedUserIds.indexOf(note.renote.userId) != -1) {
+ return;
+ }
+ //#endregion
+
+ // Renoteなら再pack
+ if (note.renoteId != null) {
+ note.renote = await pack(note.renoteId, user, {
+ detail: true
+ });
+ }
+
+ connection.send(JSON.stringify({
+ type: 'note',
+ body: note
+ }));
+ });
+}
diff --git a/src/server/api/stream/local-timeline.ts b/src/server/api/stream/local-timeline.ts
index 8f6a445be0..32718810dc 100644
--- a/src/server/api/stream/local-timeline.ts
+++ b/src/server/api/stream/local-timeline.ts
@@ -12,7 +12,7 @@ export default async function(
user: IUser
) {
// Subscribe stream
- subscriber.subscribe(`misskey:local-timeline`);
+ subscriber.subscribe('misskey:local-timeline');
const mute = await Mute.find({ muterId: user._id });
const mutedUserIds = mute.map(m => m.muteeId.toString());