From 27839486e9dd6e7a1340de0482aac497bf9adff5 Mon Sep 17 00:00:00 2001 From: Huan LI Date: Mon, 13 Aug 2018 17:17:30 +0800 Subject: [PATCH] refactor MessageQueryFilter to MessageUserQueryFilter (#1534) --- src/user/message.ts | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/user/message.ts b/src/user/message.ts index 4856c4e82..ca6c83cd5 100644 --- a/src/user/message.ts +++ b/src/user/message.ts @@ -51,6 +51,14 @@ import { UrlLink, } from './url-link' +export interface MessageUserQueryFilter { + from? : Contact, + text? : string | RegExp + room? : Room + type? : MessageType + to? : Contact +} + /** * All wechat messages will be encapsulated as a Message. * @@ -74,16 +82,16 @@ export class Message extends Accessory implements Sayable { * Find message in cache */ public static async find ( - this: T, - query : string | MessageQueryFilter, + this : T, + userQuery : string | MessageUserQueryFilter, ): Promise { - log.verbose('Message', 'find(%s)', JSON.stringify(query)) + log.verbose('Message', 'find(%s)', JSON.stringify(userQuery)) - if (typeof query === 'string') { - query = { text: query } + if (typeof userQuery === 'string') { + userQuery = { text: userQuery } } - const messageList = await this.findAll(query) + const messageList = await this.findAll(userQuery) if (messageList.length < 1) { return null } @@ -99,13 +107,25 @@ export class Message extends Accessory implements Sayable { * Find messages in cache */ public static async findAll ( - this : T, - query?: MessageQueryFilter, + this : T, + userQuery? : MessageUserQueryFilter, ): Promise> { - log.verbose('Message', 'findAll(%s)', JSON.stringify(query)) + log.verbose('Message', 'findAll(%s)', JSON.stringify(userQuery)) + + let puppetQuery: undefined | MessageQueryFilter + + if (userQuery) { + puppetQuery = { + fromId : userQuery.from && userQuery.from.id, + roomId : userQuery.room && userQuery.room.id, + text : userQuery.text, + toId : userQuery.to && userQuery.to.id, + type : userQuery.type, + } + } try { - const MessageIdList = await this.puppet.messageSearch(query) + const MessageIdList = await this.puppet.messageSearch(puppetQuery) const messageList = MessageIdList.map(id => this.load(id)) await Promise.all( messageList.map(