diff --git a/src/ble/actions.ts b/src/ble/actions.ts index ec52d7e5..0847fd7a 100644 --- a/src/ble/actions.ts +++ b/src/ble/actions.ts @@ -29,6 +29,10 @@ export enum BleDeviceActionType { * The device was disconnected. */ DidDisconnect = 'ble.device.action.didDisconnect', + /** + * The device fail to disconnect. + */ + DidFailToDisconnect = 'ble.device.action.didFailToDisconnect', } export type BleDeviceConnectAction = Action; @@ -114,6 +118,15 @@ export function didDisconnect(): BleDeviceDidDisconnectAction { return { type: BleDeviceActionType.DidDisconnect }; } +export type BleDeviceDidFailToDisconnectAction = Action; + +/** + * Creates an action that indicates a device failed to disconnect. + */ +export function didFailToDisconnect(): BleDeviceDidFailToDisconnectAction { + return { type: BleDeviceActionType.DidFailToDisconnect }; +} + /** * Common type for all BLE connection actions. */ @@ -122,7 +135,8 @@ export type BLEConnectAction = | BleDeviceDidConnectAction | BleDeviceDidFailToConnectAction | BleDeviceDisconnectAction - | BleDeviceDidDisconnectAction; + | BleDeviceDidDisconnectAction + | BleDeviceDidFailToDisconnectAction; /** * High-level BLE actions. diff --git a/src/ble/reducers.test.ts b/src/ble/reducers.test.ts index cb5edd73..51389e75 100644 --- a/src/ble/reducers.test.ts +++ b/src/ble/reducers.test.ts @@ -8,6 +8,7 @@ import { didConnect, didDisconnect, didFailToConnect, + didFailToDisconnect, disconnect, } from './actions'; import reducers, { BleConnectionState } from './reducers'; @@ -47,4 +48,10 @@ test('connection', () => { didDisconnect(), ).connection, ).toBe(BleConnectionState.Disconnected); + expect( + reducers( + { connection: BleConnectionState.Disconnecting } as State, + didFailToDisconnect(), + ).connection, + ).toBe(BleConnectionState.Connected); }); diff --git a/src/ble/reducers.ts b/src/ble/reducers.ts index f22d0dcb..6dbc3758 100644 --- a/src/ble/reducers.ts +++ b/src/ble/reducers.ts @@ -38,6 +38,7 @@ const connection: Reducer = ( case BleDeviceActionType.Connect: return BleConnectionState.Connecting; case BleDeviceActionType.DidConnect: + case BleDeviceActionType.DidFailToDisconnect: return BleConnectionState.Connected; case BleDeviceActionType.Disconnect: return BleConnectionState.Disconnecting;