feat: Add hardened error handling and retries (#2451)

- Closes #1830
 - Closes #2099
This commit is contained in:
Dermot Duffy
2026-06-30 17:45:12 -07:00
committed by dermotduffy
parent 4bc787e2b7
commit 47bcce93d3
182 changed files with 7877 additions and 4043 deletions
+2 -8
View File
@@ -7,7 +7,6 @@ import {
import { DeviceRegistryManager } from '../../ha/registry/device/index';
import { Entity, EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import { localize } from '../../localize/localize';
import {
CapabilitiesRaw,
Endpoint,
@@ -17,7 +16,7 @@ import {
import { createSelectOptionAction } from '../../utils/action.js';
import { Camera, CameraInitializationOptions } from '../camera';
import { EntityCamera } from '../entity-camera';
import { CameraInitializationError } from '../error';
import { ReolinkInitializationError } from '../error';
import { CameraEndpointsContext, CameraProxyConfig } from '../types';
import { getPTZCapabilitiesFromCameraConfig } from '../utils/ptz';
@@ -44,8 +43,6 @@ interface ReolinkCameraInitializationOptions extends CameraInitializationOptions
deviceRegistryManager: DeviceRegistryManager;
}
class ReolinkInitializationError extends CameraInitializationError {}
// Button entities for continuous PTZ movement (press to start, press stop to
// end). Discovered from button.{name}_ptz_{action} entities. Zoom button
// entities are disabled by default in the Reolink integration.
@@ -153,10 +150,7 @@ export class ReolinkCamera extends EntityCamera {
const channelOrUID = match?.groups?.channel_or_uid ?? null;
if (hostid === null || channelOrUID === null) {
throw new ReolinkInitializationError(
localize('error.camera_initialization_reolink'),
this.getConfig(),
);
throw new ReolinkInitializationError(this.getConfig());
}
const channelCandidate = Number(channelOrUID);