diff --git a/src/browser/api/channel.ts b/src/browser/api/channel.ts index ea411ef3e..0ca2a43f4 100644 --- a/src/browser/api/channel.ts +++ b/src/browser/api/channel.ts @@ -125,8 +125,14 @@ export module Channel { subscriptionManager.removeSubscription(identity, channelId); } - export function disconnectFromChannel(identity: Identity, channelName: string): void { + export function disconnectFromChannel(identity: Identity, payload: any): void { + const { channelName, payload: disconnectionPayload } = payload; const disconnectedEvent = 'client-disconnected'; + + if (disconnectionPayload && disconnectionPayload.nameAlias) { + identity.name = disconnectionPayload.nameAlias; + } + subscriptionManager.removeSubscription(identity, `${disconnectedEvent}-${channelName}`); } diff --git a/src/browser/api_protocol/api_handlers/channel.ts b/src/browser/api_protocol/api_handlers/channel.ts index 3cc5885b5..4e28963b6 100644 --- a/src/browser/api_protocol/api_handlers/channel.ts +++ b/src/browser/api_protocol/api_handlers/channel.ts @@ -73,9 +73,9 @@ export class ChannelApiHandler { } private disconnectFromChannel(identity: Identity, message: APIMessage, ack: AckFunc): void { - const { payload: { channelName } } = message; + const { payload } = message; - Channel.disconnectFromChannel(identity, channelName); + Channel.disconnectFromChannel(identity, payload); ack(successAck); }