- TypeScript 67.9%
- JavaScript 30.9%
- Ruby 1.2%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| src | ||
| tests | ||
| .gitignore | ||
| Dockerfile.builder | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| webpack.config.js | ||
Kayer attendance plugin
The moderator's attendance panel combines the Kayer classroom roster, BBB's current users, and the BBB 3.0 learning dashboard. Students are matched by their Kayer PersonId / BBB external user ID.
- حاضر: currently connected, with accumulated attendance duration.
- قطع اتصال: has recorded sessions but is currently absent; shows duration and the latest BBB-detected disconnect or final leave time.
- هنوز وارد نشده: absent with no recorded sessions in the successful dashboard response.
The dashboard is fetched from the current worker every five seconds using the SDK's moderator session token, including while the panel is closed. Current-session durations advance locally every second. Reconnects add their session durations; the plugin assumes one concurrent device per person and stores nothing durably. Departure times use Asia/Tehran. Failed requests retain the last successful history and display an error; an initial failure does not classify students as never joined.
The internal endpoint /bigbluebutton/api/learningDashboard requires an active
moderator, a running meeting, and the learningDashboard feature enabled. Its
double-encoded JSON response is validated against the BBB 3.0 session schema.
Check compatibility when upgrading BBB.
Build and verify
npm ci
npm test
npm run build
For SDK lifecycle changes, run npm run test:browser with an installed Playwright
package and Chromium browser. If Playwright is installed outside this checkout,
set PLAYWRIGHT_MODULE_PATH to its package directory. This optional check uses the
real production SDK, simulates BBB's initial data and subsequent updates, and fails
if React crashes or the attendance sidekick does not register. The offline builder's
npm dependency set is unchanged.
The build produces dist/KayerAttendancePlugin.js and dist/manifest.json.
Deployment is separate from building. In a live BBB meeting, verify a student who
never joined, another who leaves and rejoins, abrupt network loss, the latest
disconnect time, polling with the panel closed, and dashboard-disabled errors.