summaryrefslogtreecommitdiff
path: root/src/server/api/stream/index.ts
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2021-10-21 01:04:10 +0900
committerGitHub <noreply@github.com>2021-10-21 01:04:10 +0900
commit69b56f6658dcbef0a54fa030ebf30913ca3d30bd (patch)
tree376ee75076a4c7de6be2c6b3a54168319b8ded84 /src/server/api/stream/index.ts
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
downloadsharkey-69b56f6658dcbef0a54fa030ebf30913ca3d30bd.tar.gz
sharkey-69b56f6658dcbef0a54fa030ebf30913ca3d30bd.tar.bz2
sharkey-69b56f6658dcbef0a54fa030ebf30913ca3d30bd.zip
refactor: publishHogeStreamとStreamのEventEmitterに型定義する (#7769)
* wip * wip * wip * :v: * add main stream * packedNotificationSchemaを更新 * read:gallery, write:gallery, read:gallery-likes, write:gallery-likesに翻訳を追加 * fix * ok * add header, choice, invitation * add header, choice, invitation * test * fix * fix * yatta * remove no longer needed "as PackedUser/PackedNote" * clean up * add simple-schema * fix lint * fix lint * wip * wip! * wip * fix * wip * wip * :v: * 送信側に型エラーがないことを3回確認した * :v: * wip * update typescript * define items in full Schema * edit comment * edit comment * edit comment * Update src/prelude/types.ts Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * https://github.com/misskey-dev/misskey/pull/7769#discussion_r703058458 * user packとnote packの型不整合を修正 * revert https://github.com/misskey-dev/misskey/pull/7772#discussion_r706627736 * revert https://github.com/misskey-dev/misskey/pull/7772#discussion_r706627736 * user packとnote packの型不整合を修正 * add prelude/types.ts * emoji * signin * game * matching * clean up * ev => data * refactor * clean up * add type * antenna * channel * fix * add Packed type * add PackedRef * fix lint * add emoji schema * add reversiGame * add reversiMatching * remove signin schema (use Signin entity) * add schemas refs, fix Packed type * wip PackedHoge => Packed<'Hoge'> * add Packed type * note-reaction * user * user-group * user-list * note * app, messaging-message * notification * drive-file * drive-folder * following * muting * blocking * hashtag * page * app (with modifying schema) * import user? * channel * antenna * clip * gallery-post * emoji * Packed * reversi-matching * update stream.ts * https://github.com/misskey-dev/misskey/pull/7769#issuecomment-917542339 * fix lint * clean up? * add changelog * add changelog * add changelog * fix: アンテナが既読にならないのを修正 * revert fix * https://github.com/misskey-dev/misskey/pull/7769#discussion_r711474875 * spec => payload * edit commetn Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Diffstat (limited to 'src/server/api/stream/index.ts')
-rw-r--r--src/server/api/stream/index.ts35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index ccd555e149..da4ea5ec99 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -14,6 +14,7 @@ import { AccessToken } from '@/models/entities/access-token';
import { UserProfile } from '@/models/entities/user-profile';
import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '@/services/stream';
import { UserGroup } from '@/models/entities/user-group';
+import { StreamEventEmitter, StreamMessages } from './types';
import { Packed } from '@/misc/schema';
/**
@@ -28,7 +29,7 @@ export default class Connection {
public followingChannels: Set<ChannelModel['id']> = new Set();
public token?: AccessToken;
private wsConnection: websocket.connection;
- public subscriber: EventEmitter;
+ public subscriber: StreamEventEmitter;
private channels: Channel[] = [];
private subscribingNotes: any = {};
private cachedNotes: Packed<'Note'>[] = [];
@@ -46,8 +47,8 @@ export default class Connection {
this.wsConnection.on('message', this.onWsConnectionMessage);
- this.subscriber.on('broadcast', async ({ type, body }) => {
- this.onBroadcastMessage(type, body);
+ this.subscriber.on('broadcast', data => {
+ this.onBroadcastMessage(data);
});
if (this.user) {
@@ -57,43 +58,41 @@ export default class Connection {
this.updateFollowingChannels();
this.updateUserProfile();
- this.subscriber.on(`user:${this.user.id}`, ({ type, body }) => {
- this.onUserEvent(type, body);
- });
+ this.subscriber.on(`user:${this.user.id}`, this.onUserEvent);
}
}
@autobind
- private onUserEvent(type: string, body: any) {
- switch (type) {
+ private onUserEvent(data: StreamMessages['user']['payload']) { // { type, body }と展開するとそれぞれ型が分離してしまう
+ switch (data.type) {
case 'follow':
- this.following.add(body.id);
+ this.following.add(data.body.id);
break;
case 'unfollow':
- this.following.delete(body.id);
+ this.following.delete(data.body.id);
break;
case 'mute':
- this.muting.add(body.id);
+ this.muting.add(data.body.id);
break;
case 'unmute':
- this.muting.delete(body.id);
+ this.muting.delete(data.body.id);
break;
// TODO: block events
case 'followChannel':
- this.followingChannels.add(body.id);
+ this.followingChannels.add(data.body.id);
break;
case 'unfollowChannel':
- this.followingChannels.delete(body.id);
+ this.followingChannels.delete(data.body.id);
break;
case 'updateUserProfile':
- this.userProfile = body;
+ this.userProfile = data.body;
break;
case 'terminate':
@@ -145,8 +144,8 @@ export default class Connection {
}
@autobind
- private onBroadcastMessage(type: string, body: any) {
- this.sendMessageToWs(type, body);
+ private onBroadcastMessage(data: StreamMessages['broadcast']['payload']) {
+ this.sendMessageToWs(data.type, data.body);
}
@autobind
@@ -249,7 +248,7 @@ export default class Connection {
}
@autobind
- private async onNoteStreamMessage(data: any) {
+ private async onNoteStreamMessage(data: StreamMessages['note']['payload']) {
this.sendMessageToWs('noteUpdated', {
id: data.body.id,
type: data.type,