Skip to content

Commit 3b999cf

Browse files
committed
feat: enhance liveness session handling with new checks for completion and pass status
1 parent 10e5a84 commit 3b999cf

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

demo/app.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
createLivenessSession,
66
processFrame,
77
isLivenessComplete,
8+
isLivenessPassed,
89
currentInstruction,
910
currentTaskId,
1011
progress,
@@ -200,7 +201,15 @@ function startLivenessLoop() {
200201
}
201202

202203
if (isLivenessComplete(livenessSession)) {
203-
transition(State.ESTIMATING);
204+
if (isLivenessPassed(livenessSession)) {
205+
transition(State.ESTIMATING);
206+
} else {
207+
livenessSession.failed = true;
208+
livenessSession.failReason =
209+
`Liveness incomplete. Completed ${livenessSession.completedTasks} of ` +
210+
`${livenessSession.requiredTaskPasses} required checks.`;
211+
handleLivenessFail();
212+
}
204213
return;
205214
}
206215

@@ -223,8 +232,9 @@ function updateChallengeUI() {
223232
`<div class="bar" ` + `style="width:${prog * 100}%"></div>`;
224233

225234
setVideoStatus(
226-
`Complete ${livenessSession.completedTasks + 1} of ` +
227-
`${livenessSession.requiredTaskPasses} required checks`
235+
`Round ${Math.min(livenessSession.currentIndex + 1, livenessSession.tasks.length)} of ` +
236+
`${livenessSession.tasks.length} — ` +
237+
`${livenessSession.completedTasks}/${livenessSession.requiredTaskPasses} checks passed`
228238
);
229239
}
230240

demo/liveness.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,24 +107,26 @@ export function processFrame(session, video, timestampMs) {
107107
}
108108

109109
export function isLivenessComplete(session) {
110+
return session.currentIndex >= session.tasks.length;
111+
}
112+
113+
export function isLivenessPassed(session) {
110114
return session.completedTasks >= session.requiredTaskPasses;
111115
}
112116

113117
export function currentInstruction(session) {
114-
if (isLivenessComplete(session)) return null;
115118
if (session.currentIndex >= session.tasks.length) return null;
116119
return session.tasks[session.currentIndex].instruction;
117120
}
118121

119122
export function currentTaskId(session) {
120-
if (isLivenessComplete(session)) return null;
121123
if (session.currentIndex >= session.tasks.length) return null;
122124
return session.tasks[session.currentIndex].id;
123125
}
124126

125127
export function progress(session) {
126-
if (session.requiredTaskPasses === 0) return 1;
127-
return Math.min(session.completedTasks / session.requiredTaskPasses, 1);
128+
if (session.tasks.length === 0) return 1;
129+
return Math.min(session.currentIndex / session.tasks.length, 1);
128130
}
129131

130132
function advanceTask(session) {

0 commit comments

Comments
 (0)