UNPKG

@azure/communication-react

Version:

React library for building modern communication user experiences utilizing Azure Communication Services

52 lines 1.79 kB
// 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