diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2021-10-21 01:04:10 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-21 01:04:10 +0900 |
| commit | 69b56f6658dcbef0a54fa030ebf30913ca3d30bd (patch) | |
| tree | 376ee75076a4c7de6be2c6b3a54168319b8ded84 /src/server/api/stream/index.ts | |
| parent | Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff) | |
| download | sharkey-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.ts | 35 |
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, |