ble/sagas: use alerts for unexpected error instead of notifications

This commit is contained in:
David Lechner
2022-07-15 13:47:37 -05:00
parent ef0cd6507d
commit 15ecdf998d
4 changed files with 121 additions and 7 deletions
+42
View File
@@ -296,6 +296,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.Connect);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -322,6 +325,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.Connect);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -355,6 +361,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.Connect);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -371,6 +380,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.Connect);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -389,6 +401,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceiveFirmwareRevision);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -405,6 +420,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceiveFirmwareRevision);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -434,6 +452,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceiveSoftwareRevision);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -469,6 +490,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -485,6 +509,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -501,6 +528,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -537,6 +567,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -555,6 +588,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -571,6 +607,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
@@ -587,6 +626,9 @@ describe('connect action is dispatched', () => {
await runConnectUntil(saga, ConnectRunPoint.DidReceivePnpId);
await expect(saga.take()).resolves.toEqual(
alertsShowAlert('alerts', 'unexpectedError', { error: testError }),
);
await expect(saga.take()).resolves.toEqual(
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
+75
View File
@@ -131,6 +131,11 @@ function* handleBleConnectPybricks(): Generator {
// this can happen if the use cancels the dialog
yield* put(bleDidFailToConnectPybricks({ reason: Reason.Canceled }));
} else {
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -158,6 +163,11 @@ function* handleBleConnectPybricks(): Generator {
server = yield* call([device.gatt, 'connect']);
} catch (err) {
disconnectChannel.close();
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -183,6 +193,11 @@ function* handleBleConnectPybricks(): Generator {
bleDidFailToConnectPybricks({ reason: Reason.NoDeviceInfoService }),
);
} else {
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -202,6 +217,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -217,6 +237,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -235,6 +260,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -250,6 +280,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -277,6 +312,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -301,6 +341,11 @@ function* handleBleConnectPybricks(): Generator {
bleDidFailToConnectPybricks({ reason: Reason.NoPybricksService }),
);
} else {
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -320,6 +365,11 @@ function* handleBleConnectPybricks(): Generator {
} catch (err) {
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -364,6 +414,11 @@ function* handleBleConnectPybricks(): Generator {
pybricksControlChannel.close();
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -388,6 +443,11 @@ function* handleBleConnectPybricks(): Generator {
bleDidFailToConnectPybricks({ reason: Reason.NoPybricksService }),
);
} else {
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -406,6 +466,11 @@ function* handleBleConnectPybricks(): Generator {
pybricksControlChannel.close();
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -423,6 +488,11 @@ function* handleBleConnectPybricks(): Generator {
pybricksControlChannel.close();
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
@@ -460,6 +530,11 @@ function* handleBleConnectPybricks(): Generator {
pybricksControlChannel.close();
server.disconnect();
yield* takeMaybe(disconnectChannel);
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
yield* put(
bleDidFailToConnectPybricks({
reason: Reason.Unknown,
+4 -4
View File
@@ -68,10 +68,6 @@ test.each([
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.NoPybricksService,
}),
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
err: { name: 'test', message: 'unknown' },
}),
bootloaderDidFailToConnect(BootloaderConnectionFailureReason.Unknown, <Error>{
message: 'test',
}),
@@ -134,6 +130,10 @@ test.each([
reason: BleDeviceFailToConnectReasonType.NoBluetooth,
}),
bleDidFailToConnectPybricks({ reason: BleDeviceFailToConnectReasonType.Canceled }),
bleDidFailToConnectPybricks({
reason: BleDeviceFailToConnectReasonType.Unknown,
err: { name: 'test', message: 'unknown' },
}),
bootloaderDidFailToConnect(BootloaderConnectionFailureReason.NoWebBluetooth),
bootloaderDidFailToConnect(BootloaderConnectionFailureReason.NoBluetooth),
bootloaderDidFailToConnect(BootloaderConnectionFailureReason.Canceled),
-3
View File
@@ -190,9 +190,6 @@ function* showBleDeviceDidFailToConnectError(
hubName: 'Pybricks Hub',
});
break;
case BleDeviceFailToConnectReasonType.Unknown:
yield* showUnexpectedError(I18nId.BleUnexpectedError, action.err);
break;
}
}