Files
upstream-mirror 1d2bfcac0c
Some checks failed
Prosody Plugin Tests / test (push) Failing after 10m11s
Close stale issues and PRs / stale (push) Failing after 1s
snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
2026-09-15 15:56:32 +05:00

62 lines
1.6 KiB
TypeScript

import ReducerRegistry from '../base/redux/ReducerRegistry';
import {
ADD_FACE_LANDMARKS,
CLEAR_FACE_LANDMARKS_BUFFER,
UPDATE_FACE_COORDINATES
} from './actionTypes';
import { FaceBox, FaceLandmarks } from './types';
const defaultState = {
faceBoxes: {},
faceLandmarks: [],
faceLandmarksBuffer: [],
recognitionActive: false
};
export interface IFaceLandmarksState {
faceBoxes: { [key: string]: FaceBox; };
faceLandmarks: Array<FaceLandmarks>;
faceLandmarksBuffer: Array<{
emotion: string;
timestamp: number;
}>;
recognitionActive: boolean;
}
ReducerRegistry.register<IFaceLandmarksState>('features/face-landmarks',
(state = defaultState, action): IFaceLandmarksState => {
switch (action.type) {
case ADD_FACE_LANDMARKS: {
const { addToBuffer, faceLandmarks }: { addToBuffer: boolean; faceLandmarks: FaceLandmarks; } = action;
return {
...state,
faceLandmarks: [ ...state.faceLandmarks, faceLandmarks ],
faceLandmarksBuffer: addToBuffer ? [ ...state.faceLandmarksBuffer,
{
emotion: faceLandmarks.faceExpression,
timestamp: faceLandmarks.timestamp
} ] : state.faceLandmarksBuffer
};
}
case CLEAR_FACE_LANDMARKS_BUFFER: {
return {
...state,
faceLandmarksBuffer: []
};
}
case UPDATE_FACE_COORDINATES: {
return {
...state,
faceBoxes: {
...state.faceBoxes,
[action.id]: action.faceBox
}
};
}
}
return state;
});