Skip to content

Commit 465a999

Browse files
authored
feat(realtime): add return values in adapters (#12)
* feat(realtime): add return values in adapters * fix(realtime): fix bindings filter, remove return type in realtime
1 parent 012f83e commit 465a999

5 files changed

Lines changed: 60 additions & 54 deletions

File tree

packages/core/realtime-js/src/RealtimeChannel.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ export default class RealtimeChannel {
200200
return this.channelAdapter.joinPush
201201
}
202202

203-
get rejoinTimer(): Timer {
203+
get rejoinTimer() {
204204
return this.channelAdapter.rejoinTimer
205205
}
206206

@@ -756,9 +756,9 @@ export default class RealtimeChannel {
756756

757757
/** @internal */
758758
private _updateFilterMessage() {
759-
this.channelAdapter.updateFilterMessage((event, payload: any, messageRef, phoenixBind) => {
760-
const typeLower = event.toLocaleLowerCase()
761-
const bind = this.bindings[typeLower]?.find((bind) => bind.ref === phoenixBind.ref)
759+
this.channelAdapter.updateFilterBindings((binding, payload: any, ref) => {
760+
const typeLower = binding.event.toLocaleLowerCase()
761+
const bind = this.bindings[typeLower]?.find((bind) => bind.ref === binding.ref)
762762

763763
if (!bind) {
764764
return true

packages/core/realtime-js/src/RealtimeClient.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,57 +107,57 @@ export default class RealtimeClient {
107107

108108
serializer: Serializer = new Serializer()
109109

110-
get endPoint(): string {
110+
get endPoint() {
111111
return this.socketAdapter.endPoint
112112
}
113113

114-
get timeout(): number {
114+
get timeout() {
115115
return this.socketAdapter.timeout
116116
}
117117

118-
get transport(): WebSocketLikeConstructor {
118+
get transport() {
119119
return this.socketAdapter.transport
120120
}
121121

122-
get heartbeatCallback(): HeartbeatCallback {
122+
get heartbeatCallback() {
123123
return this.socketAdapter.heartbeatCallback
124124
}
125125

126-
get heartbeatIntervalMs(): number {
126+
get heartbeatIntervalMs() {
127127
return this.socketAdapter.heartbeatIntervalMs
128128
}
129129

130-
get heartbeatTimer(): HeartbeatTimer {
130+
get heartbeatTimer() {
131131
if (this.worker) {
132132
return this._workerHeartbeatTimer
133133
}
134134
return this.socketAdapter.heartbeatTimer
135135
}
136136

137-
get pendingHeartbeatRef(): string | null {
137+
get pendingHeartbeatRef() {
138138
if (this.worker) {
139139
return this._pendingWorkerHeartbeatRef
140140
}
141141
return this.socketAdapter.pendingHeartbeatRef
142142
}
143143

144-
get vsn(): string {
144+
get vsn() {
145145
return this.socketAdapter.vsn
146146
}
147147

148-
get encode(): Function {
148+
get encode() {
149149
return this.socketAdapter.encode
150150
}
151151

152-
get decode(): Function {
152+
get decode() {
153153
return this.socketAdapter.decode
154154
}
155155

156-
get reconnectAfterMs(): (tries: number) => number {
156+
get reconnectAfterMs() {
157157
return this.socketAdapter.reconnectAfterMs
158158
}
159159

160-
get sendBuffer(): Function[] {
160+
get sendBuffer() {
161161
return this.socketAdapter.sendBuffer
162162
}
163163

packages/core/realtime-js/src/phoenix/channelAdapter.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ import type {
66
ChannelBindingCallback,
77
ChannelOnMessage,
88
ChannelOnErrorCallback,
9+
ChannelFilterBindings,
910
Params,
11+
ChannelState,
12+
Push,
13+
Timer,
1014
} from './types'
1115

1216
export default class ChannelAdapter {
@@ -19,39 +23,39 @@ export default class ChannelAdapter {
1923
this.socket = socket
2024
}
2125

22-
get state() {
26+
get state(): ChannelState {
2327
return this.channel.state
2428
}
2529

26-
set state(state) {
30+
set state(state: ChannelState) {
2731
this.channel.state = state
2832
}
2933

30-
get joinedOnce() {
34+
get joinedOnce(): boolean {
3135
return this.channel.joinedOnce
3236
}
3337

34-
get joinPush() {
38+
get joinPush(): Push {
3539
return this.channel.joinPush
3640
}
3741

38-
get rejoinTimer() {
42+
get rejoinTimer(): Timer {
3943
return this.channel.rejoinTimer
4044
}
4145

42-
on(event: string, callback: ChannelBindingCallback) {
46+
on(event: string, callback: ChannelBindingCallback): number {
4347
return this.channel.on(event, callback)
4448
}
4549

4650
off(event: string, refNumber?: number) {
4751
this.channel.off(event, refNumber)
4852
}
4953

50-
subscribe(timeout?: number) {
54+
subscribe(timeout?: number): Push {
5155
return this.channel.join(timeout)
5256
}
5357

54-
unsubscribe(timeout?: number) {
58+
unsubscribe(timeout?: number): Push {
5559
return this.channel.leave(timeout)
5660
}
5761

@@ -63,11 +67,11 @@ export default class ChannelAdapter {
6367
this.channel.onClose(callback)
6468
}
6569

66-
onError(callback: ChannelOnErrorCallback) {
70+
onError(callback: ChannelOnErrorCallback): number {
6771
return this.channel.onError(callback)
6872
}
6973

70-
push(event: string, payload: { [key: string]: any }, timeout?: number) {
74+
push(event: string, payload: { [key: string]: any }, timeout?: number): Push {
7175
try {
7276
return this.channel.push(event, payload, timeout)
7377
} catch (error) {
@@ -79,7 +83,7 @@ export default class ChannelAdapter {
7983
this.channel.joinPush.payload = () => payload
8084
}
8185

82-
joinRef() {
86+
joinRef(): string {
8387
if (!this.channel.joinPush.ref) {
8488
throw new Error('Join push reference not found')
8589
}
@@ -107,16 +111,8 @@ export default class ChannelAdapter {
107111
return this.state === CHANNEL_STATES.leaving
108112
}
109113

110-
updateFilterMessage(
111-
filterMessage: (
112-
event: string,
113-
payload: object,
114-
ref: number | undefined,
115-
bind: { event: string; ref: number }
116-
) => boolean
117-
) {
118-
// @ts-ignore - it does not exist yet in phoenix
119-
this.channel.filterMessage = filterMessage
114+
updateFilterBindings(filterBindings: ChannelFilterBindings) {
115+
this.channel.filterBindings = filterBindings
120116
}
121117

122118
updatePayloadTransform(callback: ChannelOnMessage) {

packages/core/realtime-js/src/phoenix/socketAdapter.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import type {
66
SocketOnOpen,
77
SocketOnError,
88
SocketOptions,
9+
SocketStateChangeCallbacks,
10+
Vsn,
11+
Encode,
12+
Decode,
913
HeartbeatCallback,
1014
} from './types'
1115
import { CONNECTION_STATE, ConnectionState } from '../lib/constants'
@@ -18,59 +22,59 @@ export default class SocketAdapter {
1822
this.socket = new Socket(endPoint, options)
1923
}
2024

21-
get timeout() {
25+
get timeout(): number {
2226
return this.socket.timeout
2327
}
2428

25-
get endPoint() {
29+
get endPoint(): string {
2630
return this.socket.endPoint
2731
}
2832

29-
get transport() {
33+
get transport(): WebSocketLikeConstructor {
3034
return this.socket.transport as WebSocketLikeConstructor
3135
}
3236

33-
get heartbeatIntervalMs() {
37+
get heartbeatIntervalMs(): number {
3438
return this.socket.heartbeatIntervalMs
3539
}
3640

37-
get heartbeatCallback() {
41+
get heartbeatCallback(): HeartbeatCallback {
3842
return this.socket.heartbeatCallback
3943
}
4044

4145
set heartbeatCallback(callback: HeartbeatCallback) {
4246
this.socket.heartbeatCallback = callback
4347
}
4448

45-
get heartbeatTimer() {
46-
return this.socket.heartbeatTimer as HeartbeatTimer
49+
get heartbeatTimer(): HeartbeatTimer {
50+
return this.socket.heartbeatTimer
4751
}
4852

49-
get pendingHeartbeatRef() {
53+
get pendingHeartbeatRef(): string | null {
5054
return this.socket.pendingHeartbeatRef
5155
}
5256

53-
get vsn() {
57+
get vsn(): Vsn {
5458
return this.socket.vsn
5559
}
5660

57-
get encode() {
61+
get encode(): Encode<void> {
5862
return this.socket.encode
5963
}
6064

61-
get decode() {
65+
get decode(): Decode<void> {
6266
return this.socket.decode
6367
}
6468

65-
get reconnectAfterMs() {
69+
get reconnectAfterMs(): (tries: number) => number {
6670
return this.socket.reconnectAfterMs
6771
}
6872

69-
get sendBuffer() {
73+
get sendBuffer(): (() => void)[] {
7074
return this.socket.sendBuffer
7175
}
7276

73-
get stateChangeCallbacks() {
77+
get stateChangeCallbacks(): SocketStateChangeCallbacks {
7478
return this.socket.stateChangeCallbacks
7579
}
7680

@@ -99,7 +103,7 @@ export default class SocketAdapter {
99103
this.socket.log(kind, msg, data)
100104
}
101105

102-
makeRef() {
106+
makeRef(): string {
103107
return this.socket.makeRef()
104108
}
105109

@@ -136,12 +140,12 @@ export default class SocketAdapter {
136140
return this.socket.connectionState()
137141
}
138142

139-
endPointURL() {
143+
endPointURL(): string {
140144
return this.socket.endPointURL()
141145
}
142146

143147
sendHeartbeat() {
144-
return this.socket.sendHeartbeat()
148+
this.socket.sendHeartbeat()
145149
}
146150

147151
/**

packages/core/realtime-js/src/phoenix/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,22 @@ export type {
66
SocketOnError,
77
SocketOnMessage,
88
SocketOnClose,
9+
SocketStateChangeCallbacks,
910
Channel,
1011
ChannelState,
1112
ChannelEvent,
1213
ChannelBindingCallback,
14+
ChannelFilterBindings,
1315
ChannelOnMessage,
1416
ChannelOnErrorCallback,
1517
PresenceState,
1618
Message,
1719
Params,
1820
Transport,
21+
Timer,
22+
Vsn,
23+
Encode,
24+
Decode,
1925
HeartbeatCallback,
2026
HeartbeatStatus,
2127
} from 'phoenix'

0 commit comments

Comments
 (0)