feat(streaming): Add emoji added event

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

View file

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

View file

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

View file

@ -39,6 +39,10 @@ export default class Connection {
this.wsConnection.on('message', this.onWsConnectionMessage);
this.subscriber.on('broadcast', async ({ type, body }) => {
this.onBroadcastMessage(type, body);
});
if (this.user) {
this.updateFollowing();
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リクエスト要求時
*/

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 => {
this.publish(`mainStream:${userId}`, type, typeof value === 'undefined' ? null : value);
}
@ -75,6 +79,7 @@ const publisher = new Publisher();
export default publisher;
export const publishBroadcastStream = publisher.publishBroadcastStream;
export const publishMainStream = publisher.publishMainStream;
export const publishDriveStream = publisher.publishDriveStream;
export const publishNoteStream = publisher.publishNoteStream;