fix(dashboard): dont use crypto randomUUID
Some checks failed
Build and Publish Docker Image / build-and-push (push) Failing after 2m38s

use nanoid for jrpc request id generation instead

Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
2025-10-30 00:13:08 +00:00
parent 4478cdbcb3
commit fb1fa642af
6 changed files with 40 additions and 43 deletions

View File

@@ -1,4 +1,4 @@
import type { JrpcRequest, JrpcResponse } from "@eva/jrpc"
import { type JrpcRequest, type JrpcResponse, newJrpcRequestId } from "@eva/jrpc"
import { ALL_ZIGBEE_DEVICE_NAMES, type ZigbeeDeviceName, type ZigbeeDeviceState } from "@eva/zigbee"
import type { WSContext } from "hono/ws"
import type { DeviceMessageListener, ZigbeeController } from "./controller"
@@ -8,15 +8,17 @@ export class WebSocketHandler {
constructor(private readonly controller: ZigbeeController) {}
handleWebsocketOpen(event: Event, ws: WSContext) {
handleWebsocketOpen(_event: Event, ws: WSContext) {
for (const device of ALL_ZIGBEE_DEVICE_NAMES) {
const l: DeviceMessageListener = (msg) => {
const state = msg as ZigbeeDeviceState
const state = msg as ZigbeeDeviceState<typeof device>
const request: JrpcRequest<"showDeviceState"> = {
id: crypto.randomUUID(),
id: newJrpcRequestId(),
jsonrpc: "2.0",
method: "showDeviceState",
params: { deviceName: device, state },
params: { deviceName: device, state } as {
[K in ZigbeeDeviceName]: { deviceName: K; state: ZigbeeDeviceState<K> }
}[ZigbeeDeviceName],
}
ws.send(JSON.stringify(request))
}

View File

@@ -1,4 +1,4 @@
import type { JrpcRequest, JrpcResponse } from "@eva/jrpc"
import { type JrpcRequest, type JrpcResponse, newJrpcRequestId } from "@eva/jrpc"
import { ZIGBEE_DEVICE, type ZigbeeDeviceName } from "@eva/zigbee"
import { useQuery } from "@tanstack/react-query"
import { useDrag } from "@use-gesture/react"
@@ -77,8 +77,8 @@ function App() {
return
}
const request: JrpcRequest<"setDeviceState"> = {
id: crypto.randomUUID(),
const req: JrpcRequest<"setDeviceState"> = {
id: newJrpcRequestId(),
jsonrpc: "2.0",
method: "setDeviceState",
params: {
@@ -90,8 +90,7 @@ function App() {
},
}
ws.send(JSON.stringify(request))
console.log("Sent brightness change:", { deviceName, brightness })
ws.send(JSON.stringify(req))
}
return (
@@ -535,7 +534,7 @@ function SystemTile({
labels: Array.from({ length: 20 }, (_, index) => index),
datasets: [
{
data: Array.from({ length: 20 }, (_, i) => null),
data: Array.from({ length: 20 }, (_, __) => null),
fill: true,
backgroundColor: fillGradient,
borderColor: "#2dd4bf",