diff --git a/lib/tunnelbroker/tunnelbroker-context.js b/lib/tunnelbroker/tunnelbroker-context.js --- a/lib/tunnelbroker/tunnelbroker-context.js +++ b/lib/tunnelbroker/tunnelbroker-context.js @@ -51,6 +51,10 @@ type TunnelbrokerContextType = { +sendMessage: (message: TunnelbrokerClientMessageToDevice) => Promise, + +sendMessageWithID: ( + message: TunnelbrokerClientMessageToDevice, + messageID: string, + ) => Promise, +addListener: (listener: TunnelbrokerSocketListener) => void, +removeListener: (listener: TunnelbrokerSocketListener) => void, +connected: boolean, @@ -398,6 +402,23 @@ [sendMessageToDeviceRequest], ); + const sendMessageWithID: ( + message: TunnelbrokerClientMessageToDevice, + messageID: string, + ) => Promise = React.useCallback( + (message: TunnelbrokerClientMessageToDevice, messageID: string) => { + const messageToDevice: MessageToDeviceRequest = { + type: tunnelbrokerMessageTypes.MESSAGE_TO_DEVICE_REQUEST, + clientMessageID: messageID, + deviceID: message.deviceID, + payload: message.payload, + }; + + return sendMessageToDeviceRequest(messageToDevice); + }, + [sendMessageToDeviceRequest], + ); + React.useEffect( () => secondaryTunnelbrokerConnection?.onSendMessage(message => { @@ -457,13 +478,21 @@ const value: TunnelbrokerContextType = React.useMemo( () => ({ sendMessage, + sendMessageWithID, connected, isAuthorized, addListener, removeListener, setUnauthorizedDeviceID, }), - [addListener, connected, removeListener, sendMessage, isAuthorized], + [ + addListener, + connected, + removeListener, + sendMessage, + sendMessageWithID, + isAuthorized, + ], ); return (