71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
import { VoxeetSDK } from '@voxeet/voxeet-web-sdk';
|
|
import { GetVoxeetTokenApi, GetRefreshedVoxeetTokenApi } from './Api';
|
|
|
|
class CallManager {
|
|
constructor(listener) {
|
|
this.listener = listener;
|
|
this.__refreshToken = null;
|
|
this.__accessToken = null;
|
|
}
|
|
toggleCall(onCall, conferenceRoomId) {
|
|
if (onCall === true) this.leaveCall();
|
|
else this.boot(conferenceRoomId);
|
|
}
|
|
async boot(conferenceRoomId) {
|
|
if (
|
|
this.__accessToken !== undefined &&
|
|
this.__refreshToken !== undefined &&
|
|
this.__accessToken !== null &&
|
|
this.__refreshToken !== null
|
|
) {
|
|
try {
|
|
await VoxeetSDK.session.open({
|
|
externalId: window.localStorage.getItem('watchPartyUserUid'),
|
|
name: window.localStorage.getItem('watchPartyUserName'),
|
|
});
|
|
} catch (error) {
|
|
console.error('Error Opening Voxeet Session', error);
|
|
}
|
|
} else {
|
|
this.initialize();
|
|
}
|
|
}
|
|
async leaveCall() {}
|
|
async openSession() {}
|
|
async initialize() {
|
|
GetVoxeetTokenApi()
|
|
.then((res) => res.json())
|
|
.then((tokenResult) => {
|
|
if (tokenResult.status <= 299) {
|
|
const { access_token, refresh_token } = tokenResult;
|
|
this.updateTokens(access_token, refresh_token);
|
|
VoxeetSDK.initializeToken(access_token, this.refreshToken);
|
|
} else {
|
|
console.error('Get Voxeet Token API Result Error', tokenResult);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.error('Get Voxeet Token API error', err);
|
|
});
|
|
}
|
|
async refreshToken() {
|
|
return new Promise((resolve, reject) => {
|
|
GetRefreshedVoxeetTokenApi({ token: this.__refreshToken })
|
|
.then((res) => res.json())
|
|
.then((tokenResult) => {
|
|
const { access_token, refresh_token } = tokenResult;
|
|
this.updateTokens(access_token, refresh_token);
|
|
resolve(access_token);
|
|
})
|
|
.catch((err) => {
|
|
console.error('Get Voxeet Token API error', err);
|
|
reject(err);
|
|
});
|
|
});
|
|
}
|
|
updateTokens(aT, rT) {
|
|
this.__accessToken = aT;
|
|
this.__refreshToken = rT;
|
|
}
|
|
}
|