fix: Improve state handling to avoid stuck triggered cameras (#2348)

- Related:
https://github.com/dermotduffy/advanced-camera-card/issues/2342
This commit is contained in:
Dermot Duffy
2026-02-15 19:26:56 -08:00
committed by GitHub
parent be61d7fa24
commit b1467dc4bd
11 changed files with 723 additions and 127 deletions
+1
View File
@@ -201,6 +201,7 @@ describe('Camera', () => {
expect(eventCallback).toBeCalledWith({
cameraID: 'camera_1',
id: 'sensor.force_update',
type: eventType,
});
},
@@ -879,6 +879,7 @@ describe('FrigateCamera', () => {
callEventWatcherCallback(eventWatcher, {
type: 'new',
before: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -887,6 +888,7 @@ describe('FrigateCamera', () => {
current_zones: [],
},
after: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: hasClip,
@@ -900,6 +902,7 @@ describe('FrigateCamera', () => {
expect(eventCallback).toBeCalledWith({
type: 'new',
cameraID: 'CAMERA_1',
id: 'event-1',
clip: hasClip && events.includes('clips'),
snapshot: hasSnapshot && events.includes('snapshots'),
fidelity: 'high',
@@ -944,6 +947,7 @@ describe('FrigateCamera', () => {
callEventWatcherCallback(eventWatcher, {
type: 'new',
before: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -952,6 +956,7 @@ describe('FrigateCamera', () => {
current_zones: [],
},
after: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -997,6 +1002,7 @@ describe('FrigateCamera', () => {
callEventWatcherCallback(eventWatcher, {
type: 'new',
before: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -1007,6 +1013,7 @@ describe('FrigateCamera', () => {
current_zones: [],
},
after: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -1047,6 +1054,7 @@ describe('FrigateCamera', () => {
callEventWatcherCallback(eventWatcher, {
type: 'new',
before: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -1055,6 +1063,7 @@ describe('FrigateCamera', () => {
current_zones: [],
},
after: {
id: 'event-1',
camera: 'camera.front_door',
snapshot: null,
has_clip: false,
@@ -8,6 +8,7 @@ const createEventChange = (): FrigateEventChange => {
return {
type: 'new',
before: {
id: '1234.5678',
camera: 'front_door',
snapshot: null,
has_clip: false,
@@ -16,6 +17,7 @@ const createEventChange = (): FrigateEventChange => {
current_zones: [],
},
after: {
id: '1234.5678',
camera: 'front_door',
snapshot: null,
has_clip: true,
+2 -3
View File
@@ -11,8 +11,6 @@ import {
QueryResultClassifier,
} from '../../src/camera-manager/manager.js';
import {
CameraEndpoints,
CameraEndpointsContext,
CameraEvent,
CameraManagerCameraMetadata,
Engine,
@@ -32,13 +30,13 @@ import { ViewFolder, ViewItem, ViewMedia } from '../../src/view/item.js';
import { ViewItemCapabilities } from '../../src/view/types.js';
import {
TestViewMedia,
createInitializedCamera,
createCameraConfig,
createCapabilities,
createCardAPI,
createConfig,
createFolder,
createHASS,
createInitializedCamera,
generateViewMediaArray,
} from '../test-utils.js';
@@ -386,6 +384,7 @@ describe('CameraManager', async () => {
const cameraEvent: CameraEvent = {
cameraID: 'camera',
id: 'event-1',
type: 'new',
};
eventCallback?.(cameraEvent);