@azure/communication-react
Version:
React library for building modern communication user experiences utilizing Azure Communication Services
52 lines • 1.79 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
import { _logEvent } from "../../../../acs-ui-common/src";
import React, { useContext, createContext, useState, useEffect } from 'react';
import { compositeLogger, EventNames } from './logger';
/**
*
* @param props
* @returns
*/
export const ACSAudioProvider = (props) => {
const { audioContext, children } = props;
const [stateAudioContext, setStateAudioContext] = useState(undefined);
useEffect(() => {
if (stateAudioContext) {
_logEvent(compositeLogger, {
name: EventNames.COMPOSITE_AUDIO_CONTEXT_RECREATED,
level: 'warning',
message: 'AudioContext recreated for composite.',
data: {
audioContextState: stateAudioContext.state
}
});
}
else {
_logEvent(compositeLogger, {
name: EventNames.COMPOSITE_AUDIO_CONTEXT_CREATED,
level: 'info',
message: 'AudioContext created for composite.',
data: {
audioContextState: audioContext.state
}
});
}
// Create the AudioContext only when the component is rendered
setStateAudioContext(audioContext);
}, [audioContext]);
const alreadyWrapped = useAudio();
if (alreadyWrapped) {
return React.createElement(React.Fragment, null, children);
}
return React.createElement(ACSAudioContext.Provider, { value: stateAudioContext }, props.children);
};
/**
* @private
*/
const ACSAudioContext = createContext(undefined);
/**
* @private
*/
export const useAudio = () => useContext(ACSAudioContext);
//# sourceMappingURL=AudioProvider.js.map