added toggle aside method

This commit is contained in:
J Taylor 2021-06-22 14:27:53 +01:00
parent dadd8c6d2b
commit f18c2d2d62
7 changed files with 44 additions and 16 deletions

View File

@ -98,7 +98,7 @@ export const PeopleAside = () => {
const { showAside, setShowAside } = useUIState(); const { showAside, setShowAside } = useUIState();
const { allParticipants, isOwner } = useParticipants(); const { allParticipants, isOwner } = useParticipants();
if (!showAside && showAside !== PEOPLE_ASIDE) { if (!showAside || showAside !== PEOPLE_ASIDE) {
return null; return null;
} }

View File

@ -14,8 +14,7 @@ import { Tray, TrayButton } from './Tray';
export const BasicTray = () => { export const BasicTray = () => {
const { callObject, leave } = useCallState(); const { callObject, leave } = useCallState();
const { customTrayComponent, setShowDeviceModal, setShowAside } = const { customTrayComponent, setShowDeviceModal, toggleAside } = useUIState();
useUIState();
const { isCamMuted, isMicMuted } = useMediaDevices(); const { isCamMuted, isMicMuted } = useMediaDevices();
const toggleCamera = (newState) => { const toggleCamera = (newState) => {
@ -48,10 +47,7 @@ export const BasicTray = () => {
<IconSettings /> <IconSettings />
</TrayButton> </TrayButton>
<TrayButton <TrayButton label="People" onClick={() => toggleAside(PEOPLE_ASIDE)}>
label="People"
onClick={() => setShowAside((p) => (p ? null : PEOPLE_ASIDE))}
>
<IconPeople /> <IconPeople />
</TrayButton> </TrayButton>

View File

@ -1,4 +1,4 @@
import React, { createContext, useContext, useState } from 'react'; import React, { useCallback, createContext, useContext, useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
export const UIStateContext = createContext(); export const UIStateContext = createContext();
@ -7,6 +7,10 @@ export const UIStateProvider = ({ asides, customTrayComponent, children }) => {
const [showDeviceModal, setShowDeviceModal] = useState(false); const [showDeviceModal, setShowDeviceModal] = useState(false);
const [showAside, setShowAside] = useState(); const [showAside, setShowAside] = useState();
const toggleAside = useCallback((newAside) => {
setShowAside((p) => (p === newAside ? null : newAside));
}, []);
return ( return (
<UIStateContext.Provider <UIStateContext.Provider
value={{ value={{
@ -14,6 +18,7 @@ export const UIStateProvider = ({ asides, customTrayComponent, children }) => {
customTrayComponent, customTrayComponent,
showDeviceModal, showDeviceModal,
setShowDeviceModal, setShowDeviceModal,
toggleAside,
showAside, showAside,
setShowAside, setShowAside,
}} }}

View File

@ -0,0 +1,19 @@
import React from 'react';
import Aside from '@dailyjs/shared/components/Aside';
import { useUIState } from '@dailyjs/shared/contexts/UIStateProvider';
export const CHAT_ASIDE = 'chat';
export const ChatAside = () => {
const { showAside, setShowAside } = useUIState();
if (!showAside || showAside !== CHAT_ASIDE) {
return null;
}
return (
<Aside onClose={() => setShowAside(false)}>Hello I am teh chat aside</Aside>
);
};
export default ChatAside;

View File

@ -0,0 +1 @@
export { ChatAside as default } from './ChatAside';

View File

@ -1,14 +1,20 @@
import React from 'react'; import React from 'react';
import { TrayButton } from '@dailyjs/shared/components/Tray'; import { TrayButton } from '@dailyjs/shared/components/Tray';
import { useUIState } from '@dailyjs/shared/contexts/UIStateProvider';
import { ReactComponent as IconChat } from '@dailyjs/shared/icons/chat-md.svg'; import { ReactComponent as IconChat } from '@dailyjs/shared/icons/chat-md.svg';
import { CHAT_ASIDE } from '../ChatAside/ChatAside';
export const Tray = () => ( export const Tray = () => {
<> const { toggleAside } = useUIState();
<TrayButton label="Chat">
<IconChat /> return (
</TrayButton> <>
</> <TrayButton label="Chat" onClick={() => toggleAside(CHAT_ASIDE)}>
); <IconChat />
</TrayButton>
</>
);
};
export default Tray; export default Tray;

View File

@ -1,9 +1,10 @@
import React from 'react'; import React from 'react';
import App from '@dailyjs/basic-call/pages/_app'; import App from '@dailyjs/basic-call/pages/_app';
import ChatAside from '../components/ChatAside/ChatAside';
import Tray from '../components/Tray'; import Tray from '../components/Tray';
App.asides = []; App.asides = [ChatAside];
App.customTrayComponent = <Tray />; App.customTrayComponent = <Tray />;
export default App; export default App;