@@ -27,9 +27,11 @@ import {
27
27
} from 'wechaty'
28
28
29
29
import {
30
- fromEvent ,
30
+ fromEvent as rxFromEvent ,
31
31
merge ,
32
- } from 'rxjs'
32
+ } from 'rxjs'
33
+ import type { FromEvent } from 'typed-emitter/rxjs'
34
+ import type { StateSwitch } from 'state-switch'
33
35
import {
34
36
map ,
35
37
} from 'rxjs/operators'
@@ -42,7 +44,9 @@ import * as duck from './duck/mod.js'
42
44
43
45
import * as instances from './manager.js'
44
46
45
- export interface WechatyReduxOptions {
47
+ const fromEvent : FromEvent = rxFromEvent
48
+
49
+ interface WechatyReduxOptions {
46
50
store : Store ,
47
51
}
48
52
@@ -94,30 +98,31 @@ function install (
94
98
* but the Puppet for convenience
95
99
*/
96
100
97
- // TODO: find a better way to remove `any` with StateSwitch interface
98
- const switchActive$ = fromEvent < true | 'pending' > ( wechaty . puppet . state as any , 'active' )
99
- const switchInactive$ = fromEvent < true | 'pending' > ( wechaty . puppet . state as any , 'inactive' )
101
+ const state = wechaty . puppet . state as StateSwitch
102
+
103
+ const switchActive$ = fromEvent ( state , 'active' )
104
+ const switchInactive$ = fromEvent ( state , 'inactive' )
100
105
101
106
/**
102
107
* FIXME: Huan(20200312) remove the specified explicit types
103
108
* https://github.com/wechaty/wechaty-redux/issues/4
104
109
*/
105
- const puppet = wechaty . puppet
106
-
107
- const dong$ = fromEvent < PUPPET . payload . EventDong > ( puppet , 'dong' )
108
- const error$ = fromEvent < PUPPET . payload . EventError > ( puppet , 'error' )
109
- const friendship$ = fromEvent < PUPPET . payload . EventFriendship > ( puppet , 'friendship' )
110
- const heartbeat$ = fromEvent < PUPPET . payload . EventHeartbeat > ( puppet , 'heartbeat' )
111
- const login$ = fromEvent < PUPPET . payload . EventLogin > ( puppet , 'login' )
112
- const logout$ = fromEvent < PUPPET . payload . EventLogout > ( puppet , 'logout' )
113
- const message$ = fromEvent < PUPPET . payload . EventMessage > ( puppet , 'message' )
114
- const ready$ = fromEvent < PUPPET . payload . EventReady > ( puppet , 'ready' )
115
- const reset$ = fromEvent < PUPPET . payload . EventReset > ( puppet , 'reset' )
116
- const roomInvite$ = fromEvent < PUPPET . payload . EventRoomInvite > ( puppet , 'room-invite' )
117
- const roomJoin$ = fromEvent < PUPPET . payload . EventRoomJoin > ( puppet , 'room-join' )
118
- const roomLeave$ = fromEvent < PUPPET . payload . EventRoomLeave > ( puppet , 'room-leave' )
119
- const roomTopic$ = fromEvent < PUPPET . payload . EventRoomTopic > ( puppet , 'room-topic' )
120
- const scan$ = fromEvent < PUPPET . payload . EventScan > ( puppet , 'scan' )
110
+ const puppet = wechaty . puppet as PUPPET . impl . PuppetAbstract
111
+
112
+ const dong$ = fromEvent ( puppet , 'dong' )
113
+ const error$ = fromEvent ( puppet , 'error' )
114
+ const friendship$ = fromEvent ( puppet , 'friendship' )
115
+ const heartbeat$ = fromEvent ( puppet , 'heartbeat' )
116
+ const login$ = fromEvent ( puppet , 'login' )
117
+ const logout$ = fromEvent ( puppet , 'logout' )
118
+ const message$ = fromEvent ( puppet , 'message' )
119
+ const ready$ = fromEvent ( puppet , 'ready' )
120
+ const reset$ = fromEvent ( puppet , 'reset' )
121
+ const roomInvite$ = fromEvent ( puppet , 'room-invite' )
122
+ const roomJoin$ = fromEvent ( puppet , 'room-join' )
123
+ const roomLeave$ = fromEvent ( puppet , 'room-leave' )
124
+ const roomTopic$ = fromEvent ( puppet , 'room-topic' )
125
+ const scan$ = fromEvent ( puppet , 'scan' )
121
126
122
127
merge (
123
128
/* eslint-disable no-whitespace-before-property */
@@ -141,6 +146,9 @@ function install (
141
146
) . subscribe ( store . dispatch )
142
147
}
143
148
149
+ export type {
150
+ WechatyReduxOptions ,
151
+ }
144
152
export {
145
153
WechatyRedux ,
146
154
}
0 commit comments