Files
saphid--frame-control/examples/extensions/headset-glance/main.js
T
Alex SouthwellandSAPHID f2d293bd1a Add local Frame Control extensions (#194)
* Add sandboxed local Frame Control extensions

* docs: clarify local extension network boundary

---------

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
2026-10-25 02:48:37 +00:00

30 lines
931 B
JavaScript

let nextId = 0;
const pending = new Map();
window.addEventListener('message', event => {
if (event.source !== parent || event.data?.type !== 'frame-control:response') return;
const resolve = pending.get(event.data.id);
if (resolve) {
pending.delete(event.data.id);
resolve(event.data.value);
}
});
function request(action) {
return new Promise(resolve => {
const id = ++nextId;
pending.set(id, resolve);
parent.postMessage({type: 'frame-control:request', id, action}, '*');
});
}
async function refresh() {
const status = await request('status');
document.getElementById('summary').textContent = status.connected
? `Frame OS ${status.os.version || 'unknown'} · Battery ${status.battery.percent ?? '?'}% · SteamVR ${status.steamvr ? 'running' : 'stopped'}`
: 'No headset status is available yet.';
}
document.getElementById('refresh').addEventListener('click', refresh);
refresh();