feat(streaming): Add emoji added event

This commit is contained in:
syuilo 2020-04-02 22:17:17 +09:00
parent d2a5f3af07
commit 1e3d2f21f9
4 changed files with 24 additions and 0 deletions

View file

@ -237,6 +237,11 @@ os.init(async () => {
// マウント // マウント
app.$mount('#app'); app.$mount('#app');
os.stream.on('emojiAdded', data => {
// TODO
//store.commit('instance/set', );
});
if (store.getters.isSignedIn) { if (store.getters.isSignedIn) {
const main = os.stream.useSharedConnection('main'); const main = os.stream.useSharedConnection('main');

View file

@ -7,6 +7,7 @@ import { insertModerationLog } from '../../../../../services/insert-moderation-l
import { ApiError } from '../../../error'; import { ApiError } from '../../../error';
import { ID } from '../../../../../misc/cafy-id'; import { ID } from '../../../../../misc/cafy-id';
import rndstr from 'rndstr'; import rndstr from 'rndstr';
import { publishBroadcastStream } from '../../../../../services/stream';
export const meta = { export const meta = {
desc: { desc: {
@ -53,6 +54,10 @@ export default define(meta, async (ps, me) => {
await getConnection().queryResultCache!.remove(['meta_emojis']); await getConnection().queryResultCache!.remove(['meta_emojis']);
publishBroadcastStream('emojiAdded', {
emoji: await Emojis.pack(emoji.id)
});
insertModerationLog(me, 'addEmoji', { insertModerationLog(me, 'addEmoji', {
emojiId: emoji.id emojiId: emoji.id
}); });

View file

@ -39,6 +39,10 @@ export default class Connection {
this.wsConnection.on('message', this.onWsConnectionMessage); this.wsConnection.on('message', this.onWsConnectionMessage);
this.subscriber.on('broadcast', async ({ type, body }) => {
this.onBroadcastMessage(type, body);
});
if (this.user) { if (this.user) {
this.updateFollowing(); this.updateFollowing();
this.followingClock = setInterval(this.updateFollowing, 5000); this.followingClock = setInterval(this.updateFollowing, 5000);
@ -72,6 +76,11 @@ export default class Connection {
} }
} }
@autobind
private onBroadcastMessage(type: string, body: any) {
this.sendMessageToWs(type, body);
}
/** /**
* APIリクエスト要求時 * APIリクエスト要求時
*/ */

View file

@ -19,6 +19,10 @@ class Publisher {
})); }));
} }
public publishBroadcastStream = (type: string, value?: any): void => {
this.publish('broadcast', type, typeof value === 'undefined' ? null : value);
}
public publishMainStream = (userId: User['id'], type: string, value?: any): void => { public publishMainStream = (userId: User['id'], type: string, value?: any): void => {
this.publish(`mainStream:${userId}`, type, typeof value === 'undefined' ? null : value); this.publish(`mainStream:${userId}`, type, typeof value === 'undefined' ? null : value);
} }
@ -75,6 +79,7 @@ const publisher = new Publisher();
export default publisher; export default publisher;
export const publishBroadcastStream = publisher.publishBroadcastStream;
export const publishMainStream = publisher.publishMainStream; export const publishMainStream = publisher.publishMainStream;
export const publishDriveStream = publisher.publishDriveStream; export const publishDriveStream = publisher.publishDriveStream;
export const publishNoteStream = publisher.publishNoteStream; export const publishNoteStream = publisher.publishNoteStream;