提交 ab15cc6d 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

better event listener overloading

上级 d470fdd1
......@@ -10,7 +10,10 @@
*/
import { EventEmitter } from 'events'
import Config from './config'
import {
Config
, Sayable
} from './config'
import Contact from './contact'
import Message from './message'
import UtilLib from './util-lib'
......@@ -39,6 +42,9 @@ export type RoomRawObj = {
MemberList: RoomRawMemberList[]
}
export type RoomEventName = 'join' | 'leave' | 'topic'
| 'EVENT_PARAM_ERROR'
export type RoomQueryFilter = {
topic: string | RegExp
}
......@@ -101,12 +107,13 @@ export class Room extends EventEmitter {
})
}
public on(event: 'leave', listener: (leaver: Contact) => void): this
public on(event: 'leave', listener: (this: Sayable, leaver: Contact) => void): this
public on(event: 'join' , listener: (invitee: Contact , inviter: Contact) => void): this
public on(event: 'join' , listener: (inviteeList: Contact[] , inviter: Contact) => void): this
public on(event: 'topic', listener: (topic: string, oldTopic: string, changer: Contact) => void): this
public on(event: 'EVENT_PARAM_ERROR', listener: () => void): this
public on(event: string, listener: Function): this {
public on(event: RoomEventName, listener: Function): this {
log.verbose('Room', 'on(%s, %s)', event, typeof listener)
const thisWithSay = {
......
......@@ -17,7 +17,6 @@ import {
, HeadType
, PuppetType
, Sayable
, WechatyEventName
} from './config'
import Contact from './contact'
......@@ -27,7 +26,6 @@ import Puppet from './puppet'
import PuppetWeb from './puppet-web/'
import Room from './room'
import UtilLib from './util-lib'
// import EventScope from './event-scope'
import log from './brolog-env'
......@@ -38,6 +36,18 @@ export type WechatySetting = {
// port?: number
}
type WechatyEventName = 'error'
| 'friend'
| 'heartbeat'
| 'login'
| 'logout'
| 'message'
| 'room-join'
| 'room-leave'
| 'room-topic'
| 'scan'
| 'EVENT_PARAM_ERROR'
export class Wechaty extends EventEmitter {
private static _instance: Wechaty
......@@ -157,12 +167,13 @@ export class Wechaty extends EventEmitter {
public on(event: 'heartbeat' , listener: (this: Sayable, data: any) => void): this
public on(event: 'logout' , listener: (this: Sayable, user: Contact) => void): this
public on(event: 'login' , listener: (this: Sayable, user: Contact) => void): this
public on(event: 'message' , listener: (this: Sayable, message: Message, n: number) => void): this
public on(event: 'room-join' , listener: (this: Sayable, room: Room, invitee: Contact, inviter: Contact) => void): this
public on(event: 'room-join' , listener: (this: Sayable, room: Room, inviteeList: Contact, inviter: Contact) => void): this
public on(event: 'message' , listener: (this: Sayable, message: Message) => void): this
public on(event: 'room-join' , listener: (this: Sayable, room: Room, invitee: Contact, inviter: Contact) => void): this
public on(event: 'room-join' , listener: (this: Sayable, room: Room, inviteeList: Contact[], inviter: Contact) => void): this
public on(event: 'room-leave' , listener: (this: Sayable, room: Room, leaver: Contact) => void): this
public on(event: 'room-topic' , listener: (this: Sayable, room: Room, topic: string, oldTopic: string, changer: Contact) => void): this
public on(event: 'scan' , listener: (this: Sayable, url: string, code: number) => void): this
public on(event: 'EVENT_PARAM_ERROR', listener: () => void): this
public on(event: WechatyEventName, listener: Function): this {
log.verbose('Wechaty', 'on(%s, %s)', event, typeof listener)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册