abstracted tray
This commit is contained in:
parent
5b9ccd95d1
commit
82ad9390ba
|
|
@ -7,7 +7,7 @@ import Room from '../Room';
|
||||||
import { Asides } from './Asides';
|
import { Asides } from './Asides';
|
||||||
import { Modals } from './Modals';
|
import { Modals } from './Modals';
|
||||||
|
|
||||||
export const App = ({ asides }) => {
|
export const App = () => {
|
||||||
const { state, leave } = useCallState();
|
const { state, leave } = useCallState();
|
||||||
|
|
||||||
const componentForState = useCallUI({
|
const componentForState = useCallUI({
|
||||||
|
|
@ -21,7 +21,7 @@ export const App = ({ asides }) => {
|
||||||
<div className="app">
|
<div className="app">
|
||||||
{componentForState()}
|
{componentForState()}
|
||||||
<Modals />
|
<Modals />
|
||||||
<Asides asides={asides} />
|
<Asides />
|
||||||
<style jsx>{`
|
<style jsx>{`
|
||||||
color: white;
|
color: white;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
|
@ -35,7 +35,7 @@ export const App = ({ asides }) => {
|
||||||
`}</style>
|
`}</style>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
[componentForState, asides]
|
[componentForState]
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,18 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import { PeopleAside } from '@dailyjs/shared/components/Aside/PeopleAside';
|
||||||
|
import { useUIState } from '@dailyjs/shared/contexts/UIStateProvider';
|
||||||
|
|
||||||
export const Asides = ({ asides }) => (
|
export const Asides = () => {
|
||||||
<>
|
const { asides } = useUIState();
|
||||||
{asides.map((A) => (
|
|
||||||
<A key={A.name} />
|
|
||||||
))}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
|
|
||||||
Asides.propTypes = {
|
return (
|
||||||
asides: PropTypes.arrayOf(PropTypes.func),
|
<>
|
||||||
|
<PeopleAside />
|
||||||
|
{asides.map((AsideComponent) => (
|
||||||
|
<AsideComponent key={AsideComponent.name} />
|
||||||
|
))}
|
||||||
|
</>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Asides;
|
export default Asides;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Audio } from '@dailyjs/shared/components/Audio';
|
import { Audio } from '@dailyjs/shared/components/Audio';
|
||||||
|
import { Tray, TrayButton } from '@dailyjs/shared/components/Tray';
|
||||||
import {
|
import {
|
||||||
WaitingRoomModal,
|
WaitingRoomModal,
|
||||||
WaitingRoomNotification,
|
WaitingRoomNotification,
|
||||||
|
|
@ -22,7 +23,6 @@ import PropTypes from 'prop-types';
|
||||||
import { PEOPLE_ASIDE } from '../../../shared/components/Aside/PeopleAside';
|
import { PEOPLE_ASIDE } from '../../../shared/components/Aside/PeopleAside';
|
||||||
import { VideoGrid } from '../VideoGrid';
|
import { VideoGrid } from '../VideoGrid';
|
||||||
import { Header } from './Header';
|
import { Header } from './Header';
|
||||||
import { Tray, TrayButton } from './Tray';
|
|
||||||
|
|
||||||
export const Room = ({ onLeave }) => {
|
export const Room = ({ onLeave }) => {
|
||||||
const { callObject } = useCallState();
|
const { callObject } = useCallState();
|
||||||
|
|
|
||||||
|
|
@ -19,5 +19,8 @@
|
||||||
"babel-plugin-module-resolver": "^4.1.0",
|
"babel-plugin-module-resolver": "^4.1.0",
|
||||||
"next-compose-plugins": "^2.2.1",
|
"next-compose-plugins": "^2.2.1",
|
||||||
"next-transpile-modules": "^8.0.0"
|
"next-transpile-modules": "^8.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ function App({ Component, pageProps }) {
|
||||||
</Head>
|
</Head>
|
||||||
<GlobalHead />
|
<GlobalHead />
|
||||||
<GlobalStyle />
|
<GlobalStyle />
|
||||||
<Component {...pageProps} />
|
<Component asides={App.asides} {...pageProps} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -27,4 +27,6 @@ App.propTypes = {
|
||||||
pageProps: PropTypes.object,
|
pageProps: PropTypes.object,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
App.asides = [];
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import React, { useState, useCallback } from 'react';
|
import React, { useState, useCallback } from 'react';
|
||||||
import { PeopleAside } from '@dailyjs/shared/components/Aside';
|
|
||||||
import { CallProvider } from '@dailyjs/shared/contexts/CallProvider';
|
import { CallProvider } from '@dailyjs/shared/contexts/CallProvider';
|
||||||
import { MediaDeviceProvider } from '@dailyjs/shared/contexts/MediaDeviceProvider';
|
import { MediaDeviceProvider } from '@dailyjs/shared/contexts/MediaDeviceProvider';
|
||||||
import { ParticipantsProvider } from '@dailyjs/shared/contexts/ParticipantsProvider';
|
import { ParticipantsProvider } from '@dailyjs/shared/contexts/ParticipantsProvider';
|
||||||
|
|
@ -18,7 +17,7 @@ import { Intro, NotConfigured } from '../components/Intro';
|
||||||
* - Set call owner status
|
* - Set call owner status
|
||||||
* - Finally, renders the main application loop
|
* - Finally, renders the main application loop
|
||||||
*/
|
*/
|
||||||
export default function Index({ domain, isConfigured = false }) {
|
export default function Index({ domain, isConfigured = false, asides }) {
|
||||||
const [roomName, setRoomName] = useState('');
|
const [roomName, setRoomName] = useState('');
|
||||||
const [fetchingToken, setFetchingToken] = useState(false);
|
const [fetchingToken, setFetchingToken] = useState(false);
|
||||||
const [token, setToken] = useState();
|
const [token, setToken] = useState();
|
||||||
|
|
@ -93,13 +92,13 @@ export default function Index({ domain, isConfigured = false }) {
|
||||||
* Main call UI
|
* Main call UI
|
||||||
*/
|
*/
|
||||||
return (
|
return (
|
||||||
<UIStateProvider>
|
<UIStateProvider asides={asides}>
|
||||||
<CallProvider domain={domain} room={roomName} token={token}>
|
<CallProvider domain={domain} room={roomName} token={token}>
|
||||||
<ParticipantsProvider>
|
<ParticipantsProvider>
|
||||||
<TracksProvider>
|
<TracksProvider>
|
||||||
<MediaDeviceProvider>
|
<MediaDeviceProvider>
|
||||||
<WaitingRoomProvider>
|
<WaitingRoomProvider>
|
||||||
<App asides={Index.asides} />
|
<App />
|
||||||
</WaitingRoomProvider>
|
</WaitingRoomProvider>
|
||||||
</MediaDeviceProvider>
|
</MediaDeviceProvider>
|
||||||
</TracksProvider>
|
</TracksProvider>
|
||||||
|
|
@ -112,10 +111,9 @@ export default function Index({ domain, isConfigured = false }) {
|
||||||
Index.propTypes = {
|
Index.propTypes = {
|
||||||
isConfigured: PropTypes.bool.isRequired,
|
isConfigured: PropTypes.bool.isRequired,
|
||||||
domain: PropTypes.string,
|
domain: PropTypes.string,
|
||||||
|
asides: PropTypes.arrayOf(PropTypes.func),
|
||||||
};
|
};
|
||||||
|
|
||||||
Index.asides = [PeopleAside];
|
|
||||||
|
|
||||||
export async function getStaticProps() {
|
export async function getStaticProps() {
|
||||||
// Check that both domain and key env vars are set
|
// Check that both domain and key env vars are set
|
||||||
const isConfigured =
|
const isConfigured =
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
export { Tray as default } from './Tray';
|
||||||
|
export { Tray, TrayButton } from './Tray';
|
||||||
|
|
@ -3,13 +3,14 @@ import PropTypes from 'prop-types';
|
||||||
|
|
||||||
export const UIStateContext = createContext();
|
export const UIStateContext = createContext();
|
||||||
|
|
||||||
export const UIStateProvider = ({ children }) => {
|
export const UIStateProvider = ({ asides, children }) => {
|
||||||
const [showDeviceModal, setShowDeviceModal] = useState(false);
|
const [showDeviceModal, setShowDeviceModal] = useState(false);
|
||||||
const [showAside, setShowAside] = useState();
|
const [showAside, setShowAside] = useState();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UIStateContext.Provider
|
<UIStateContext.Provider
|
||||||
value={{
|
value={{
|
||||||
|
asides,
|
||||||
showDeviceModal,
|
showDeviceModal,
|
||||||
setShowDeviceModal,
|
setShowDeviceModal,
|
||||||
showAside,
|
showAside,
|
||||||
|
|
@ -23,6 +24,7 @@ export const UIStateProvider = ({ children }) => {
|
||||||
|
|
||||||
UIStateProvider.propTypes = {
|
UIStateProvider.propTypes = {
|
||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
|
asides: PropTypes.arrayOf(PropTypes.func),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useUIState = () => useContext(UIStateContext);
|
export const useUIState = () => useContext(UIStateContext);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
import App from '@dailyjs/basic-call/pages/_app';
|
import App from '@dailyjs/basic-call/pages/_app';
|
||||||
|
|
||||||
|
App.asides = [];
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
"dailyjs/*",
|
"dailyjs/*",
|
||||||
"prebuilt-ui/*"
|
"prebuilt-ui/*"
|
||||||
],
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-eslint": "^10.1.0",
|
"babel-eslint": "^10.1.0",
|
||||||
"babel-plugin-inline-react-svg": "^2.0.1",
|
"babel-plugin-inline-react-svg": "^2.0.1",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue