in packages/storybook8/stories/StatefulClient/Call/snippets/CallAppStatefulComplete.snippet.tsx [19:74]
function App(): JSX.Element {
const userAccessToken = '<Azure Communication Services Resource Access Token>';
const userId = '<User Id associated to the token>';
const tokenCredential = useMemo(() => {
return new AzureCommunicationTokenCredential(userAccessToken);
}, [userAccessToken]);
const groupId = '<Generated GUID groupd id>';
const displayName = '<Display Name>';
const [statefulCallClient, setStatefulCallClient] = useState<StatefulCallClient>();
const [callAgent, setCallAgent] = useState<CallAgent>();
const [call, setCall] = useState<Call>();
useEffect(() => {
setStatefulCallClient(
createStatefulCallClient({
userId: { communicationUserId: userId }
})
);
}, [userId]);
useEffect(() => {
if (callAgent === undefined && statefulCallClient) {
const createCallAgent = async (): Promise<void> => {
setCallAgent(await statefulCallClient.createCallAgent(tokenCredential, { displayName: displayName }));
};
createCallAgent();
}
}, [callAgent, statefulCallClient, tokenCredential, displayName]);
useEffect(() => {
if (callAgent !== undefined) {
setCall(callAgent.join({ groupId }));
}
}, [callAgent]);
return (
<>
<FluentThemeProvider>
{statefulCallClient && (
<CallClientProvider callClient={statefulCallClient}>
{callAgent && (
<CallAgentProvider callAgent={callAgent}>
{call && (
<CallProvider call={call}>
<CallingComponents />
</CallProvider>
)}
</CallAgentProvider>
)}
</CallClientProvider>
)}
</FluentThemeProvider>
</>
);
}