diff --git a/src/ble-uart/sagas.ts b/src/ble-uart/sagas.ts index b071be1c..e8ff3741 100644 --- a/src/ble-uart/sagas.ts +++ b/src/ble-uart/sagas.ts @@ -409,7 +409,7 @@ function* connect(_action: BleDeviceConnectAction): Generator { tasks.push(yield* takeEvery(BleUartActionType.Write, writeUart, uartRxChar)); - yield* put(didConnect()); + yield* put(didConnect(device.id, device.name || '')); // wait for disconnection yield* takeMaybe(disconnectChannel); diff --git a/src/ble/actions.ts b/src/ble/actions.ts index 78ca1d70..19f39181 100644 --- a/src/ble/actions.ts +++ b/src/ble/actions.ts @@ -44,13 +44,18 @@ export function connect(): BleDeviceConnectAction { return { type: BleDeviceActionType.Connect }; } -export type BleDeviceDidConnectAction = Action; +export type BleDeviceDidConnectAction = Action & { + /** A unique identifier for the connected hub. */ + id: string; + /** A user-displayable name for the connected hub. */ + name: string; +}; /** * Creates an action that indicates a device was connected. */ -export function didConnect(): BleDeviceDidConnectAction { - return { type: BleDeviceActionType.DidConnect }; +export function didConnect(id: string, name: string): BleDeviceDidConnectAction { + return { type: BleDeviceActionType.DidConnect, id, name }; } export enum BleDeviceFailToConnectReasonType { diff --git a/src/ble/reducers.test.ts b/src/ble/reducers.test.ts index 51389e75..0a3c4215 100644 --- a/src/ble/reducers.test.ts +++ b/src/ble/reducers.test.ts @@ -29,8 +29,10 @@ test('connection', () => { .connection, ).toBe(BleConnectionState.Connecting); expect( - reducers({ connection: BleConnectionState.Connecting } as State, didConnect()) - .connection, + reducers( + { connection: BleConnectionState.Connecting } as State, + didConnect('test-id', 'Test Name'), + ).connection, ).toBe(BleConnectionState.Connected); expect( reducers( diff --git a/src/hub/reducers.test.ts b/src/hub/reducers.test.ts index c0bfd702..8820ee49 100644 --- a/src/hub/reducers.test.ts +++ b/src/hub/reducers.test.ts @@ -1,7 +1,6 @@ // SPDX-License-Identifier: MIT // Copyright (c) 2021 The Pybricks Authors -import { firmwareVersion } from '@pybricks/firmware'; import { Action } from '../actions'; import { didReceiveStatusReport } from '../ble-pybricks-service/actions'; import { Status, statusToFlag } from '../ble-pybricks-service/protocol'; @@ -28,8 +27,10 @@ test('initial state', () => { describe('runtime', () => { test('', () => { expect( - reducers({ runtime: HubRuntimeState.Disconnected } as State, didConnect()) - .runtime, + reducers( + { runtime: HubRuntimeState.Disconnected } as State, + didConnect('test-id', 'Test Name'), + ).runtime, ).toBe(HubRuntimeState.Unknown); });