Skip to content

Commit f7b51fb

Browse files
committed
fix based on review feedback
1 parent d3c1b72 commit f7b51fb

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

ui/src/hooks/useHidRpc.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,45 +104,48 @@ export function doRpcHidHandshake(rpcHidChannel: RTCDataChannel, setRpcHidProtoc
104104
setRpcHidProtocolVersion(message.version);
105105

106106
// clean up
107-
handshakeCompleted = true;
108-
if (handshakeInterval) {
109-
clearInterval(handshakeInterval);
110-
handshakeInterval = null;
111-
}
112107
const timeUsed = lastSendTime ? Date.now() - lastSendTime.getTime() : 0;
113108
logger.info(`Handshake completed in ${timeUsed}ms after ${attempts} attempts (Version: ${message.version} / ${HID_RPC_VERSION})`);
109+
resetHandshake({ completed: true });
114110

115111
rpcHidChannel.removeEventListener("message", onMessage);
116112
};
117113

118-
const resetHandshake = (newLastConnectedTime?: Date | undefined) => {
119-
lastConnectedTime = newLastConnectedTime;
114+
const resetHandshake = ({ lastConnectedTime: newLastConnectedTime, completed }: { lastConnectedTime?: Date | undefined, completed?: boolean }) => {
115+
if (newLastConnectedTime) lastConnectedTime = newLastConnectedTime;
120116
lastSendTime = undefined;
121117
attempts = 0;
122-
handshakeCompleted = false;
118+
if (completed !== undefined) handshakeCompleted = completed;
123119
if (handshakeInterval) {
124120
clearInterval(handshakeInterval);
125121
handshakeInterval = null;
126122
}
127123
};
128124

129125
const onConnected = () => {
130-
resetHandshake(new Date());
126+
resetHandshake({ lastConnectedTime: new Date() });
131127
logger.info("Channel connected");
132128

133129
sendHandshake(true);
134130
rpcHidChannel.addEventListener("message", onMessage);
135131
};
136132

137133
const onClose = () => {
138-
resetHandshake();
134+
resetHandshake({ lastConnectedTime: undefined, completed: false });
139135

140136
logger.info("Channel closed");
141137
setRpcHidProtocolVersion(null);
138+
139+
rpcHidChannel.removeEventListener("message", onMessage);
142140
};
143141

144142
rpcHidChannel.addEventListener("open", onConnected);
145143
rpcHidChannel.addEventListener("close", onClose);
144+
145+
// handle case where channel is already open when the hook is mounted
146+
if (rpcHidChannel.readyState === "open") {
147+
onConnected();
148+
}
146149
}
147150

148151
export function useHidRpc(onHidRpcMessage?: (payload: RpcMessage) => void) {
@@ -289,13 +292,15 @@ export function useHidRpc(onHidRpcMessage?: (payload: RpcMessage) => void) {
289292

290293
if (message instanceof HandshakeMessage) return; // handshake message is handled by the doRpcHidHandshake function
291294

295+
// to remove it from the production build, we need to use the /* @__PURE__ */ comment here
296+
// setting `esbuild.pure` doesn't work
292297
/* @__PURE__ */ logger.debug("Received message", message);
293298

294299
onHidRpcMessage?.(message);
295300
};
296301

297302
const errorHandler = (e: Event) => {
298-
console.error(`[HIDRPC] Error on channel '${rpcHidChannel.label}': ${e}`)
303+
logger.error(`Error on channel '${rpcHidChannel.label}'`, e);
299304
};
300305

301306
rpcHidChannel.addEventListener("message", messageHandler);

ui/vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default defineConfig(({ mode, command }) => {
3939
return {
4040
plugins,
4141
esbuild: {
42-
pure: command === "build" ? ["console.debug", "logger.debug"] : ["console.debug"],
42+
pure: command === "build" ? ["console.debug"]: [],
4343
},
4444
assetsInclude: ["**/*.woff2"],
4545
build: {

0 commit comments

Comments
 (0)