odyssey-spatial-comms
Version:
Drop-in replacement for Dolby/Voxeet SDK using Odyssey Spatial Audio Service
61 lines • 2.92 kB
JavaScript
;
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