From b94c4e608c65979ddf82c2f1792bd9596368d69d Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Thu, 23 Apr 2026 22:33:43 -0400 Subject: [PATCH] =?UTF-8?q?refactor(sdk-react):=20rename=20useDevice=20?= =?UTF-8?q?=E2=86=92=20useMeshDevice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevents collision with packages/web's own useDevice() Zustand hook. All internal exports + tests updated; no behavior change. Callers migrating off @meshtastic/core should use useMeshDevice() from @meshtastic/sdk-react going forward. --- packages/sdk-react/mod.ts | 4 ++-- .../src/hooks/{useDevice.ts => useMeshDevice.ts} | 10 ++++++++-- packages/sdk-react/tests/hooks.test.tsx | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) rename packages/sdk-react/src/hooks/{useDevice.ts => useMeshDevice.ts} (71%) diff --git a/packages/sdk-react/mod.ts b/packages/sdk-react/mod.ts index 38d57f30..50370ec9 100644 --- a/packages/sdk-react/mod.ts +++ b/packages/sdk-react/mod.ts @@ -12,8 +12,8 @@ export { useMeshRegistry, useOptionalMeshRegistry } from "./src/adapters/useMesh export { useSignal } from "./src/adapters/useSignal.ts"; export { useSignalValue } from "./src/adapters/useSignalValue.ts"; -export { useDevice } from "./src/hooks/useDevice.ts"; -export type { UseDeviceResult } from "./src/hooks/useDevice.ts"; +export { useMeshDevice } from "./src/hooks/useMeshDevice.ts"; +export type { UseMeshDeviceResult } from "./src/hooks/useMeshDevice.ts"; export { useConnection } from "./src/hooks/useConnection.ts"; export type { UseConnectionResult } from "./src/hooks/useConnection.ts"; export { useChat } from "./src/hooks/useChat.ts"; diff --git a/packages/sdk-react/src/hooks/useDevice.ts b/packages/sdk-react/src/hooks/useMeshDevice.ts similarity index 71% rename from packages/sdk-react/src/hooks/useDevice.ts rename to packages/sdk-react/src/hooks/useMeshDevice.ts index 9017ebc2..7a004476 100644 --- a/packages/sdk-react/src/hooks/useDevice.ts +++ b/packages/sdk-react/src/hooks/useMeshDevice.ts @@ -3,7 +3,7 @@ import type { DeviceStatusEnum } from "@meshtastic/sdk"; import { useClient } from "../adapters/useClient.ts"; import { useSignal } from "../adapters/useSignal.ts"; -export interface UseDeviceResult { +export interface UseMeshDeviceResult { status: DeviceStatusEnum; isConfigured: boolean; myNodeNum: number | undefined; @@ -12,7 +12,13 @@ export interface UseDeviceResult { shutdown(seconds?: number): Promise; } -export function useDevice(): UseDeviceResult { +/** + * Exposes the device slice of the current MeshClient: status, metadata, and + * reboot/shutdown commands. Named `useMeshDevice` (not `useDevice`) so it does + * not collide with consumer hooks of the same name (e.g. the legacy one in + * `packages/web`). + */ +export function useMeshDevice(): UseMeshDeviceResult { const client = useClient(); const status = useSignal(client.device.status); const isConfigured = useSignal(client.device.isConfigured); diff --git a/packages/sdk-react/tests/hooks.test.tsx b/packages/sdk-react/tests/hooks.test.tsx index 12dac491..7ba63a47 100644 --- a/packages/sdk-react/tests/hooks.test.tsx +++ b/packages/sdk-react/tests/hooks.test.tsx @@ -3,7 +3,7 @@ import { MeshClient } from "@meshtastic/sdk"; import { createFakeTransport } from "@meshtastic/sdk/testing"; import { ChannelNumber } from "@meshtastic/sdk"; import { describe, expect, it } from "vitest"; -import { MeshProvider, useChat, useDevice } from "../mod.ts"; +import { MeshProvider, useChat, useMeshDevice } from "../mod.ts"; function setup() { const handle = createFakeTransport(); @@ -15,9 +15,9 @@ function setup() { } describe("sdk-react hooks", () => { - it("useDevice re-renders on myNodeInfo", async () => { + it("useMeshDevice re-renders on myNodeInfo", async () => { const { handle, wrapper } = setup(); - const { result } = renderHook(() => useDevice(), { wrapper }); + const { result } = renderHook(() => useMeshDevice(), { wrapper }); expect(result.current.myNodeNum).toBeUndefined(); await act(async () => {