perf: 各ストリーミング接続ごとにポーリングしないように
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { publishMainStream } from '../stream';
|
||||
import { publishMainStream, publishUserEvent } from '../stream';
|
||||
import { renderActivity } from '../../remote/activitypub/renderer';
|
||||
import renderFollow from '../../remote/activitypub/renderer/follow';
|
||||
import renderUndo from '../../remote/activitypub/renderer/undo';
|
||||
@@ -55,7 +55,10 @@ async function cancelRequest(follower: User, followee: User) {
|
||||
if (Users.isLocalUser(follower)) {
|
||||
Users.pack(followee, follower, {
|
||||
detail: true
|
||||
}).then(packed => publishMainStream(follower.id, 'unfollow', packed));
|
||||
}).then(packed => {
|
||||
publishUserEvent(follower.id, 'unfollow', packed);
|
||||
publishMainStream(follower.id, 'unfollow', packed);
|
||||
});
|
||||
}
|
||||
|
||||
// リモートにフォローリクエストをしていたらUndoFollow送信
|
||||
@@ -97,7 +100,10 @@ async function unFollow(follower: User, followee: User) {
|
||||
if (Users.isLocalUser(follower)) {
|
||||
Users.pack(followee, follower, {
|
||||
detail: true
|
||||
}).then(packed => publishMainStream(follower.id, 'unfollow', packed));
|
||||
}).then(packed => {
|
||||
publishUserEvent(follower.id, 'unfollow', packed);
|
||||
publishMainStream(follower.id, 'unfollow', packed);
|
||||
});
|
||||
}
|
||||
|
||||
// リモートにフォローをしていたらUndoFollow送信
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { publishMainStream } from '../stream';
|
||||
import { publishMainStream, publishUserEvent } from '../stream';
|
||||
import { renderActivity } from '../../remote/activitypub/renderer';
|
||||
import renderFollow from '../../remote/activitypub/renderer/follow';
|
||||
import renderAccept from '../../remote/activitypub/renderer/accept';
|
||||
@@ -88,7 +88,10 @@ export async function insertFollowingDoc(followee: User, follower: User) {
|
||||
if (Users.isLocalUser(follower)) {
|
||||
Users.pack(followee, follower, {
|
||||
detail: true
|
||||
}).then(packed => publishMainStream(follower.id, 'follow', packed));
|
||||
}).then(packed => {
|
||||
publishUserEvent(follower.id, 'follow', packed);
|
||||
publishMainStream(follower.id, 'follow', packed);
|
||||
});
|
||||
}
|
||||
|
||||
// Publish followed event
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { publishMainStream } from '../stream';
|
||||
import { publishMainStream, publishUserEvent } from '../stream';
|
||||
import { renderActivity } from '../../remote/activitypub/renderer';
|
||||
import renderFollow from '../../remote/activitypub/renderer/follow';
|
||||
import renderUndo from '../../remote/activitypub/renderer/undo';
|
||||
@@ -30,7 +30,10 @@ export default async function(follower: User, followee: User, silent = false) {
|
||||
if (!silent && Users.isLocalUser(follower)) {
|
||||
Users.pack(followee, follower, {
|
||||
detail: true
|
||||
}).then(packed => publishMainStream(follower.id, 'unfollow', packed));
|
||||
}).then(packed => {
|
||||
publishUserEvent(follower.id, 'unfollow', packed);
|
||||
publishMainStream(follower.id, 'unfollow', packed);
|
||||
});
|
||||
}
|
||||
|
||||
if (Users.isLocalUser(follower) && Users.isRemoteUser(followee)) {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { renderActivity } from '../../../remote/activitypub/renderer';
|
||||
import renderFollow from '../../../remote/activitypub/renderer/follow';
|
||||
import renderReject from '../../../remote/activitypub/renderer/reject';
|
||||
import { deliver } from '../../../queue';
|
||||
import { publishMainStream } from '../../stream';
|
||||
import { publishMainStream, publishUserEvent } from '../../stream';
|
||||
import { User, ILocalUser } from '../../../models/entities/user';
|
||||
import { Users, FollowRequests, Followings } from '../../../models';
|
||||
import { decrementFollowing } from '../delete';
|
||||
@@ -39,5 +39,8 @@ export default async function(followee: User, follower: User) {
|
||||
|
||||
Users.pack(followee, follower, {
|
||||
detail: true
|
||||
}).then(packed => publishMainStream(follower.id, 'unfollow', packed));
|
||||
}).then(packed => {
|
||||
publishUserEvent(follower.id, 'unfollow', packed);
|
||||
publishMainStream(follower.id, 'unfollow', packed);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@ class Publisher {
|
||||
}));
|
||||
}
|
||||
|
||||
public publishUserEvent = (userId: User['id'], type: string, value?: any): void => {
|
||||
this.publish(`user:${userId}`, type, typeof value === 'undefined' ? null : value);
|
||||
}
|
||||
|
||||
public publishBroadcastStream = (type: string, value?: any): void => {
|
||||
this.publish('broadcast', type, typeof value === 'undefined' ? null : value);
|
||||
}
|
||||
@@ -84,6 +88,7 @@ const publisher = new Publisher();
|
||||
|
||||
export default publisher;
|
||||
|
||||
export const publishUserEvent = publisher.publishUserEvent;
|
||||
export const publishBroadcastStream = publisher.publishBroadcastStream;
|
||||
export const publishMainStream = publisher.publishMainStream;
|
||||
export const publishDriveStream = publisher.publishDriveStream;
|
||||
|
||||
Reference in New Issue
Block a user