From 5e1d4c38367e9f2941be5f0826b3f86361d35bc1 Mon Sep 17 00:00:00 2001 From: Huan LI Date: Fri, 1 Jun 2018 16:31:14 +0800 Subject: [PATCH] fix typing, and all unit tests are PASSED! :D --- src/puppet-mock/puppet-mock.ts | 2 ++ src/puppet-puppeteer/puppet-puppeteer.ts | 22 ++++++++++++++++--- .../puppeteer-message.spec.ts | 1 + src/puppet/schemas/message.ts | 20 ++++++++++++----- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/puppet-mock/puppet-mock.ts b/src/puppet-mock/puppet-mock.ts index ac5b40d1..1caee6bf 100644 --- a/src/puppet-mock/puppet-mock.ts +++ b/src/puppet-mock/puppet-mock.ts @@ -89,6 +89,8 @@ export class PuppetMock extends Puppet { type : MessageType.Text, text : 'mock text', timestamp : Date.now(), + fromId : 'xxx', + toId : 'xxx', }) setInterval(() => { diff --git a/src/puppet-puppeteer/puppet-puppeteer.ts b/src/puppet-puppeteer/puppet-puppeteer.ts index ac873709..a3362a3b 100644 --- a/src/puppet-puppeteer/puppet-puppeteer.ts +++ b/src/puppet-puppeteer/puppet-puppeteer.ts @@ -365,17 +365,33 @@ export class PuppetPuppeteer extends Puppet { const type: MessageType = this.messageTypeFromWeb(rawPayload.MsgType) - const payload: MessagePayload = { + const payloadBase = { id, type, fromId, filename, - toId, - roomId, text, timestamp, } + let payload: MessagePayload + + if (toId) { + payload = { + ...payloadBase, + toId, + roomId, + } + } else if (roomId) { + payload = { + ...payloadBase, + toId, + roomId, + } + } else { + throw new Error('neither roomId nor toId') + } + return payload } diff --git a/src/puppet-puppeteer/puppeteer-message.spec.ts b/src/puppet-puppeteer/puppeteer-message.spec.ts index 3985ecd5..67996575 100755 --- a/src/puppet-puppeteer/puppeteer-message.spec.ts +++ b/src/puppet-puppeteer/puppeteer-message.spec.ts @@ -89,6 +89,7 @@ test('constructor()', async t => { type : Message.Type.Text, fromId : EXPECTED.from, timestamp : Date.now(), + toId : 'toId', } return payload }) diff --git a/src/puppet/schemas/message.ts b/src/puppet/schemas/message.ts index eda27acd..7af01c35 100644 --- a/src/puppet/schemas/message.ts +++ b/src/puppet/schemas/message.ts @@ -8,15 +8,25 @@ export enum MessageType { Video, } -export interface MessagePayload { +export interface MessagePayloadBase { id : string, type : MessageType, filename? : string, - fromId? : string, - roomId? : null | string, + fromId : string, text? : string, - timestamp : number, // milliseconds - toId? : null | string, // if to is not set, then room must be set + timestamp : number, // milliseconds +} + +export interface MessagePayloadRoom { + roomId : null | string, + toId? : null | string, // if to is not set, then room must be set } + +export interface MessagePayloadTo { + roomId? : null | string, + toId : null | string, // if to is not set, then room must be set +} + +export type MessagePayload = MessagePayloadBase & (MessagePayloadRoom | MessagePayloadTo) -- GitLab