summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-04-02 22:17:17 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-04-02 22:17:17 +0900
commit9e9d378bf1301d4c3fcde08543be1014c71a87cd (patch)
treea902b1d1fbec9062046ea1049d74ebf430c65f32 /src
parentUpdate api.ja-JP.md (diff)
downloadsharkey-9e9d378bf1301d4c3fcde08543be1014c71a87cd.tar.gz
sharkey-9e9d378bf1301d4c3fcde08543be1014c71a87cd.tar.bz2
sharkey-9e9d378bf1301d4c3fcde08543be1014c71a87cd.zip
feat(streaming): Add emoji added event
Diffstat (limited to 'src')
-rw-r--r--src/client/init.ts5
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts5
-rw-r--r--src/server/api/stream/index.ts9
-rw-r--r--src/services/stream.ts5
4 files changed, 24 insertions, 0 deletions
diff --git a/src/client/init.ts b/src/client/init.ts
index 73e02145d5..c226f29b30 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -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');
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index f56303b32f..77e29cfb2a 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -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
});
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 2781d14bd9..b7cefcf5ab 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -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リクエスト要求時
*/
diff --git a/src/services/stream.ts b/src/services/stream.ts
index 269aed56b9..ec43c6ff2c 100644
--- a/src/services/stream.ts
+++ b/src/services/stream.ts
@@ -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;