UNPKG

odyssey-spatial-comms

Version:

Drop-in replacement for Dolby/Voxeet SDK using Odyssey Spatial Audio Service

61 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AudioAPI = void 0; const events_1 = require("events"); class AudioAPI extends events_1.EventEmitter { constructor(apiClient) { super(); this.apiClient = apiClient; } get local() { return { start: async () => { var _a; try { // Get participant from session context const participant = (_a = this.apiClient.session) === null || _a === void 0 ? void 0 : _a.participant; if (!(participant === null || participant === void 0 ? void 0 : participant.externalId)) { throw new Error('No active session. Call VoxeetSDK.session.open() first.'); } // Handle ID format internally - use cleaned ID for media operations const cleanId = participant.externalId.includes(":") ? participant.externalId.split(":")[0] : participant.externalId; const endpoint = `/api/conferences/current/media?participantId=${encodeURIComponent(cleanId)}`; const payload = { audio: true }; await this.apiClient.post(endpoint, payload); this.emit('audioStarted'); } catch (error) { throw new Error(`Audio start failed: ${error.message}`); } }, stop: async () => { var _a; try { // Get participant from session context const participant = (_a = this.apiClient.session) === null || _a === void 0 ? void 0 : _a.participant; if (!(participant === null || participant === void 0 ? void 0 : participant.externalId)) { throw new Error('No active session. Call VoxeetSDK.session.open() first.'); } // Handle ID format internally - use cleaned ID for media operations const cleanId = participant.externalId.includes(":") ? participant.externalId.split(":")[0] : participant.externalId; const endpoint = `/api/conferences/current/media?participantId=${encodeURIComponent(cleanId)}`; const payload = { audio: false }; await this.apiClient.post(endpoint, payload); this.emit('audioStopped'); } catch (error) { throw new Error(`Audio stop failed: ${error.message}`); } }, setCaptureMode: (options) => { this.emit('captureModeSet', options); } }; } } exports.AudioAPI = AudioAPI; //# sourceMappingURL=audio.js.map