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

change scan event listener param from object to two params

上级 8ff5f2d5
......@@ -54,9 +54,9 @@ const Wechaty = require('wechaty')
const bot = new Wechaty()
bot
.on('scan', ({url, code}) => console.log(`Scan QrCode to login: ${code}\n${url}`))
.on('login', user => console.log(`User ${user} logined`))
.on('message', message => console.log(`Message: ${message}`))
.on('scan', (url, code) => console.log(`Scan QrCode to login: ${code}\n${url}`))
.on('login', user => console.log(`User ${user} logined`))
.on('message', message => console.log(`Message: ${message}`))
.init()
```
......@@ -327,8 +327,8 @@ Wechaty support the following 6 events:
A `scan` event will be emitted when the bot need to show you a QrCode for scaning.
```javascript
wechaty.on('scan', ({code, url}) => {
```typescript
wechaty.on('scan', (url: string, code: number}) => {
console.log(`[${code}] Scan ${url} to login.` )
})
```
......@@ -675,7 +675,8 @@ npm test
## v0.5.0 master (2016/10) The First Typescript Version
1. #40 Converted to Typescript (2016/10/11)
1. added `say()` method to Contact/Room instance, and `this` inside event listeners
1. added `say()` method to Contact/Room instance, and to `this` inside wechaty event listeners
1. BREAKING CHANGE: global event `scan` arguments changed from 1 to 2: now is (url: string, code: number) instead of {url, code} before.
## [v0.4.0](https://github.com/wechaty/wechaty/releases/tag/v0.4.0) (2016/10/9) The Latest Javascript Version
1. #32 Extend Room Class with:
......
......@@ -40,7 +40,7 @@ Loading... please wait for QrCode Image Url and then scan to login.
`)
bot
.on('scan', ({url, code}) => {
.on('scan', (url, code) => {
console.log(`[${code}]Scan QR Code in url to login:\n${url}`)
})
.on('login' , user => log.info('Bot', `bot login: ${user}`))
......
......@@ -42,7 +42,7 @@ bot
.on('login' , user => log.info('Bot', `${user.name()} logined`))
.on('logout' , user => log.info('Bot', `${user.name()} logouted`))
.on('error' , e => log.info('Bot', 'error: %s', e))
.on('scan', ({url, code}) => {
.on('scan', (url, code) => {
if (!/201|200/.test(code)) {
let loginUrl = url.replace(/\/qrcode\//, '/l/')
require('qrcode-terminal').generate(loginUrl)
......
......@@ -44,7 +44,7 @@ bot
.on('login' , user => log.info('Bot', `${user.name()} logined`))
.on('logout' , user => log.info('Bot', `${user.name()} logouted`))
.on('error' , e => log.info('Bot', 'error: %s', e))
.on('scan', ({url, code}) => {
.on('scan', (url, code) => {
if (!/201|200/.test(code)) {
let loginUrl = url.replace(/\/qrcode\//, '/l/')
require('qrcode-terminal').generate(loginUrl)
......
......@@ -13,7 +13,7 @@ import {
const bot = Wechaty.instance({ profile: 'example-bot.wechaty.json' })
bot
.on('scan', ({url, code}) => {
.on('scan', (url, code) => {
console.log(`Use Wechat to Scan QR Code in url to login: ${code}\n${url}`)
})
.on('message', m => {
......
......@@ -10,7 +10,7 @@ import { Wechaty } from '../'
const bot = Wechaty.instance(/* no profile here because roger bot is too noisy */)
bot
.on('scan', ({url, code}) => {
.on('scan', (url, code) => {
console.log(`Use Wechat to Scan QR Code in url to login: ${code}\n${url}`)
})
.on('message', m => {
......
......@@ -125,10 +125,21 @@ type WatchdogFood = {
, timeout?: number // millisecond
}
type WechatyEventType = 'login' | 'logout' | 'friend'
| 'message' | 'error' | 'heartbeat' | 'scan'
| 'room-join' | 'room-leave' | 'room-topic'
type ScanInfo = {
url: string
code: number
}
export default Config
export {
Config
, HeadType
, PuppetType
, ScanInfo
, WatchdogFood
, WechatyEventType
}
......@@ -29,7 +29,7 @@ type WechatyEventType = 'error' | 'heartbeat'
const EVENT_CONFIG = {
error: wrapFilehelper
, friend: wrapContact
, friend: wrapFilehelper
, heartbeat: wrapFilehelper
, login: wrapFilehelper
, logout: null // NULL
......@@ -113,6 +113,7 @@ function wrapContact(listener) {
return listener.apply(eventScope, argList)
}
}
typeof wrapContact
function wrapRoom(listener) {
log.verbose('WechatyEvent', 'wrapRoom()')
......
......@@ -14,6 +14,11 @@ import Config from './config'
import Contact from './contact'
abstract class FriendRequest {
public contact: Contact
public hello: string
public type: 'send' | 'receive' | 'confirm'
constructor() {
if (!Config.puppetInstance()) {
throw new Error('no Config.puppetInstance() instanciated')
......
......@@ -13,7 +13,9 @@
import * as WebSocket from 'ws'
// const co = require('co')
import Config from './config'
import Config, {
WechatyEventType
} from './config'
import Contact from './contact'
import Wechaty from './wechaty'
import log from './brolog-env'
......@@ -295,7 +297,7 @@ class Io {
wechaty.on('message', this.ioMessage)
const hookEvents = [
const hookEvents: WechatyEventType[] = [
'scan'
, 'login'
, 'logout'
......
......@@ -6,16 +6,14 @@
* https://github.com/zixia/wechaty
*
*/
// const co = require('co')
import Config from './config'
import Message from './message'
import UtilLib from './util-lib'
import log from './brolog-env'
import PuppetWeb from './puppet-web/index'
import PuppetWebBridge from './puppet-web/bridge'
import PuppetWeb from './puppet-web/puppet-web'
import PuppetWebBridge from './puppet-web/bridge'
class MediaMessage extends Message {
private bridge: PuppetWebBridge
......
......@@ -9,7 +9,7 @@
import Contact from './contact'
import Room from './room'
import UtilLib from './util-lib'
import Wechaty from './wechaty'
import log from './brolog-env'
type MessageRawObj = {
......@@ -69,7 +69,7 @@ class Message {
protected obj = <MessageObj>{}
readyStream(): Promise<NodeJS.ReadableStream> {
public readyStream(): Promise<NodeJS.ReadableStream> {
throw Error('abstract method')
}
......@@ -282,11 +282,6 @@ class Message {
Message.initType()
// Message.attach = function(puppet) {
// log.verbose('Message', 'attach() to %s', puppet && puppet.constructor.name)
// Message.puppet = puppet
// }
// module.exports = Message.default = Message.Message = Message
export default Message
......
......@@ -19,13 +19,19 @@
// import * as fs from 'fs'
// const co = require('co')
import Contact from '../contact'
import MediaMessage from '../message-media'
import Message from '../message'
import log from '../brolog-env'
import {
WatchdogFood
, ScanInfo
} from '../config'
import Contact from '../contact'
import Message from '../message'
import MediaMessage from '../message-media'
import log from '../brolog-env'
// import FriendRequest from './friend-request'
import Firer from './firer'
import Firer from './firer'
import PuppetWeb from './puppet-web'
/* tslint:disable:variable-name */
const PuppetWebEvent = {
......@@ -139,10 +145,10 @@ function onServerDing(data) {
this.emit('watchdog', { data })
}
function onServerScan(data) {
function onServerScan(this: PuppetWeb, data: ScanInfo) {
log.verbose('PuppetWebEvent', 'onServerScan(%d)', data && data.code)
this.scan = data // ScanInfo
this.scan = data
/**
* When wx.qq.com push a new QRCode to Scan, there will be cookie updates(?)
......@@ -158,9 +164,12 @@ function onServerScan(data) {
// feed watchDog a `scan` type of food
// this.watchDog(data, {type: 'scan'})
this.emit('watchdog', { data, type: 'SCAN' })
this.emit('scan', data)
const food: WatchdogFood = {
data
, type: 'SCAN'
}
this.emit('watchdog', food)
this.emit('scan' , data.url, data.code)
}
function onServerConnection(data) {
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -32,9 +32,6 @@ type RecommendInfo = {
class PuppetWebFriendRequest extends FriendRequest {
public info: RecommendInfo
public contact: Contact
public hello: string
public type: 'send' | 'receive' | 'confirm'
private ticket: string
......
......@@ -15,17 +15,6 @@ import PuppetWeb from './puppet-web'
import Server from './server'
import Watchdog from './watchdog'
// Object.assign(PuppetWeb, {
// default: PuppetWeb
// , PuppetWeb
// , Server
// , Browser
// , Bridge
// , Event
// , Watchdog
// })
// module.exports = PuppetWeb
export default PuppetWeb
export {
Bridge
......
......@@ -18,7 +18,8 @@
// const co = require('co')
import {
Config
Config
, ScanInfo
, WatchdogFood
} from '../config'
import Contact from '../contact'
......@@ -41,9 +42,10 @@ class PuppetWeb extends Puppet {
public browser: Browser
public bridge: Bridge
private server: Server
public scan: ScanInfo
private port: number
constructor(
......@@ -359,7 +361,7 @@ class PuppetWeb extends Puppet {
})
}
public logined() { return !!(this.user) }
public ding(data) {
public ding(data: any): Promise<any> {
if (!this.bridge) {
return Promise.reject(new Error('ding fail: no bridge(yet)!'))
}
......
......@@ -16,8 +16,11 @@
// const co = require('co')
import log from '../brolog-env'
import {
WatchdogFood
} from '../config'
import Event from './event'
import { WatchdogFood } from '../config'
/* tslint:disable:variable-name */
const Watchdog = {
......
......@@ -22,11 +22,10 @@ import log from './brolog-env'
// }
abstract class Puppet extends EventEmitter {
public user: Contact
public userId: string
public user: Contact
public abstract getContact(id: string): Promise<any>
protected userId: string
private _targetState: string
private _currentState: string
......
......@@ -2,7 +2,7 @@
"compilerOptions": {
"target": "es6"
, "module": "commonjs"
, "moduleResolution": "node"
, "moduleResolution": "node" // typescript 2.0.3 bug compatible
, "outDir": "dist"
// , "outFile": "dist/wechaty.lib.js"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册