Skip to content

Commit

Permalink
refactor MessageQueryFilter to MessageUserQueryFilter (#1534)
Browse files Browse the repository at this point in the history
  • Loading branch information
huan committed Aug 13, 2018
1 parent 924a328 commit 2783948
Showing 1 changed file with 30 additions and 10 deletions.
40 changes: 30 additions & 10 deletions src/user/message.ts
Expand Up @@ -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.
*
Expand All @@ -74,16 +82,16 @@ export class Message extends Accessory implements Sayable {
* Find message in cache
*/
public static async find<T extends typeof Message> (
this: T,
query : string | MessageQueryFilter,
this : T,
userQuery : string | MessageUserQueryFilter,
): Promise<T['prototype'] | null> {
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
}
Expand All @@ -99,13 +107,25 @@ export class Message extends Accessory implements Sayable {
* Find messages in cache
*/
public static async findAll<T extends typeof Message> (
this : T,
query?: MessageQueryFilter,
this : T,
userQuery? : MessageUserQueryFilter,
): Promise<Array<T['prototype']>> {
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(
Expand Down

0 comments on commit 2783948

Please sign in to comment.