diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2021-02-21 12:26:49 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2021-02-21 12:26:49 +0900 |
| commit | 78a963fe334caae564424c6458a8565da957c8be (patch) | |
| tree | 2751939ed79ccb39213b94a102dc90253b1b4ac6 /src/server/api/stream/index.ts | |
| parent | タイムラインを特定の日付にジャンプする機能 (diff) | |
| download | sharkey-78a963fe334caae564424c6458a8565da957c8be.tar.gz sharkey-78a963fe334caae564424c6458a8565da957c8be.tar.bz2 sharkey-78a963fe334caae564424c6458a8565da957c8be.zip | |
Messagingの入力中インジケータを実装
Diffstat (limited to 'src/server/api/stream/index.ts')
| -rw-r--r-- | src/server/api/stream/index.ts | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts index b04bed0c06..c56a0a157b 100644 --- a/src/server/api/stream/index.ts +++ b/src/server/api/stream/index.ts @@ -12,7 +12,8 @@ import { Users, Followings, Mutings, UserProfiles, ChannelFollowings } from '../ import { ApiError } from '../error'; import { AccessToken } from '../../../models/entities/access-token'; import { UserProfile } from '../../../models/entities/user-profile'; -import { publishChannelStream } from '../../../services/stream'; +import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '../../../services/stream'; +import { UserGroup } from '../../../models/entities/user-group'; /** * Main stream connection @@ -94,7 +95,12 @@ export default class Connection { case 'disconnect': this.onChannelDisconnectRequested(body); break; case 'channel': this.onChannelMessageRequested(body); break; case 'ch': this.onChannelMessageRequested(body); break; // alias + + // 個々のチャンネルではなくルートレベルでこれらのメッセージを受け取る理由は、 + // クライアントの事情を考慮したとき、入力フォームはノートチャンネルやメッセージのメインコンポーネントとは別 + // なこともあるため、それらのコンポーネントがそれぞれ各チャンネルに接続するようにするのは面倒なため。 case 'typingOnChannel': this.typingOnChannel(body.channel); break; + case 'typingOnMessaging': this.typingOnMessaging(body); break; } } @@ -268,6 +274,17 @@ export default class Connection { } @autobind + private typingOnMessaging(param: { partner?: User['id']; group?: UserGroup['id']; }) { + if (this.user) { + if (param.partner) { + publishMessagingStream(param.partner, this.user.id, 'typing', this.user.id); + } else if (param.group) { + publishGroupMessagingStream(param.group, 'typing', this.user.id); + } + } + } + + @autobind private async updateFollowing() { const followings = await Followings.find({ where: { |