diff --git a/dailyjs/basic-call/components/Room/Header.js b/dailyjs/basic-call/components/Room/Header.js index a18e5d5..d3eff5a 100644 --- a/dailyjs/basic-call/components/Room/Header.js +++ b/dailyjs/basic-call/components/Room/Header.js @@ -9,7 +9,7 @@ export const Header = () => { return useMemo( () => (
- Daily + Daily
Basic call demo
{`${participantCount} ${ diff --git a/dailyjs/basic-call/public/assets b/dailyjs/basic-call/public/assets new file mode 120000 index 0000000..951b6e8 --- /dev/null +++ b/dailyjs/basic-call/public/assets @@ -0,0 +1 @@ +../../shared/assets \ No newline at end of file diff --git a/dailyjs/live-fitness/.babelrc b/dailyjs/live-fitness/.babelrc new file mode 100644 index 0000000..a6f4434 --- /dev/null +++ b/dailyjs/live-fitness/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["next/babel"], + "plugins": ["inline-react-svg"] +} diff --git a/dailyjs/live-fitness/README.md b/dailyjs/live-fitness/README.md new file mode 100644 index 0000000..6fa7e3c --- /dev/null +++ b/dailyjs/live-fitness/README.md @@ -0,0 +1 @@ +# Live Fitness diff --git a/dailyjs/live-fitness/components/Splash/Splash.js b/dailyjs/live-fitness/components/Splash/Splash.js new file mode 100644 index 0000000..798a7bb --- /dev/null +++ b/dailyjs/live-fitness/components/Splash/Splash.js @@ -0,0 +1,103 @@ +import React, { useState } from 'react'; + +import Button from '@dailyjs/shared/components/Button'; +import PropTypes from 'prop-types'; + +export const Splash = ({ domain, onJoin, isConfigured }) => { + // const [joinAsInstructor, setJoinAsInstructor] = useState(false); + const [fetching, setFetching] = useState(false); + const [error, setError] = useState(false); + const [room, setRoom] = useState(''); + + async function createRoom() { + // Create a room + + setError(false); + setFetching(true); + + console.log(`🚪 Creating new demo room...`); + + // Create a room server side (using Next JS serverless) + const res = await fetch('/api/createRoom', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + }); + + const resJson = await res.json(); + + if (resJson.name) { + setFetching(false); + setRoom(resJson.name); + return; + } + + setError(resJson.error || 'An unknown error occured'); + setFetching(false); + } + + return ( +
+
+ ); +}; + +Splash.propTypes = { + domain: PropTypes.string, + onJoin: PropTypes.func, + isConfigured: PropTypes.bool, +}; + +export default Splash; diff --git a/dailyjs/live-fitness/components/Splash/index.js b/dailyjs/live-fitness/components/Splash/index.js new file mode 100644 index 0000000..13f6bd9 --- /dev/null +++ b/dailyjs/live-fitness/components/Splash/index.js @@ -0,0 +1 @@ +export { Splash as default } from './Splash'; diff --git a/dailyjs/live-fitness/env.example b/dailyjs/live-fitness/env.example new file mode 100644 index 0000000..5ab7e03 --- /dev/null +++ b/dailyjs/live-fitness/env.example @@ -0,0 +1,8 @@ +# Domain excluding 'https://' and 'daily.co' e.g. 'somedomain' +DAILY_DOMAIN= + +# Obtained from https://dashboard.daily.co/developers +DAILY_API_KEY= + +# Daily REST API endpoint +DAILY_REST_DOMAIN=https://api.daily.co/v1 diff --git a/dailyjs/live-fitness/image.png b/dailyjs/live-fitness/image.png new file mode 100644 index 0000000..b4af7c6 Binary files /dev/null and b/dailyjs/live-fitness/image.png differ diff --git a/dailyjs/live-fitness/next.config.js b/dailyjs/live-fitness/next.config.js new file mode 100644 index 0000000..9a0a6ee --- /dev/null +++ b/dailyjs/live-fitness/next.config.js @@ -0,0 +1,13 @@ +const withPlugins = require('next-compose-plugins'); +const withTM = require('next-transpile-modules')([ + '@dailyjs/shared', + '@dailyjs/basic-call', +]); + +const packageJson = require('./package.json'); + +module.exports = withPlugins([withTM], { + env: { + PROJECT_TITLE: packageJson.description, + }, +}); diff --git a/dailyjs/live-fitness/package.json b/dailyjs/live-fitness/package.json new file mode 100644 index 0000000..7ac2fc7 --- /dev/null +++ b/dailyjs/live-fitness/package.json @@ -0,0 +1,25 @@ +{ + "name": "@dailyjs/live-fitness", + "description": "Live Fitness Example", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@dailyjs/shared": "*", + "@dailyjs/basic-call": "*", + "next": "^11.0.0", + "pluralize": "^8.0.0", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "babel-plugin-module-resolver": "^4.1.0", + "next-compose-plugins": "^2.2.1", + "next-transpile-modules": "^8.0.0" + } +} diff --git a/dailyjs/live-fitness/pages/[room].js b/dailyjs/live-fitness/pages/[room].js new file mode 100644 index 0000000..e69de29 diff --git a/dailyjs/live-fitness/pages/_app.js b/dailyjs/live-fitness/pages/_app.js new file mode 100644 index 0000000..0ee1a00 --- /dev/null +++ b/dailyjs/live-fitness/pages/_app.js @@ -0,0 +1,30 @@ +import React from 'react'; +import GlobalHead from '@dailyjs/shared/components/GlobalHead'; +import GlobalStyle from '@dailyjs/shared/components/GlobalStyle'; +import Head from 'next/head'; +import PropTypes from 'prop-types'; + +function App({ Component, pageProps }) { + return ( + <> + + Daily - {process.env.PROJECT_TITLE} + + + + + + ); +} + +App.defaultProps = { + Component: null, + pageProps: {}, +}; + +App.propTypes = { + Component: PropTypes.elementType, + pageProps: PropTypes.object, +}; + +export default App; diff --git a/dailyjs/live-fitness/pages/api b/dailyjs/live-fitness/pages/api new file mode 120000 index 0000000..999f604 --- /dev/null +++ b/dailyjs/live-fitness/pages/api @@ -0,0 +1 @@ +../../basic-call/pages/api \ No newline at end of file diff --git a/dailyjs/live-fitness/pages/index.js b/dailyjs/live-fitness/pages/index.js new file mode 100644 index 0000000..e96fa60 --- /dev/null +++ b/dailyjs/live-fitness/pages/index.js @@ -0,0 +1,38 @@ +import React from 'react'; +import getDemoProps from '@dailyjs/shared/lib/demoProps'; +import { useRouter } from 'next/router'; +import PropTypes from 'prop-types'; +import Splash from '../components/Splash'; + +/** + * Index page + * --- + */ +export default function Index({ domain, isConfigured = false }) { + const router = useRouter(); + + function joinRoom(room, joinAsInstructor) { + // redirect to room.... + console.log(room); + console.log(joinAsInstructor); + + router.replace(`/${room}/`); + } + + return ( + + ); +} + +Index.propTypes = { + isConfigured: PropTypes.bool.isRequired, + domain: PropTypes.string, +}; + +export async function getStaticProps() { + const defaultProps = getDemoProps(); + + return { + props: defaultProps, + }; +} diff --git a/dailyjs/live-fitness/public/assets b/dailyjs/live-fitness/public/assets new file mode 120000 index 0000000..951b6e8 --- /dev/null +++ b/dailyjs/live-fitness/public/assets @@ -0,0 +1 @@ +../../shared/assets \ No newline at end of file diff --git a/dailyjs/live-fitness/public/images/fitness-bg.jpg b/dailyjs/live-fitness/public/images/fitness-bg.jpg new file mode 100644 index 0000000..19143d8 Binary files /dev/null and b/dailyjs/live-fitness/public/images/fitness-bg.jpg differ diff --git a/dailyjs/shared/assets/assets b/dailyjs/shared/assets/assets new file mode 120000 index 0000000..951b6e8 --- /dev/null +++ b/dailyjs/shared/assets/assets @@ -0,0 +1 @@ +../../shared/assets \ No newline at end of file diff --git a/dailyjs/shared/assets/daily-logo-dark.svg b/dailyjs/shared/assets/daily-logo-dark.svg new file mode 100644 index 0000000..ef3a565 --- /dev/null +++ b/dailyjs/shared/assets/daily-logo-dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/dailyjs/basic-call/public/images/daily-logo.svg b/dailyjs/shared/assets/daily-logo.svg similarity index 100% rename from dailyjs/basic-call/public/images/daily-logo.svg rename to dailyjs/shared/assets/daily-logo.svg diff --git a/dailyjs/basic-call/public/join.mp3 b/dailyjs/shared/assets/join.mp3 similarity index 100% rename from dailyjs/basic-call/public/join.mp3 rename to dailyjs/shared/assets/join.mp3 diff --git a/dailyjs/basic-call/public/message.mp3 b/dailyjs/shared/assets/message.mp3 similarity index 100% rename from dailyjs/basic-call/public/message.mp3 rename to dailyjs/shared/assets/message.mp3 diff --git a/dailyjs/basic-call/public/images/pattern-bg.png b/dailyjs/shared/assets/pattern-bg.png similarity index 100% rename from dailyjs/basic-call/public/images/pattern-bg.png rename to dailyjs/shared/assets/pattern-bg.png diff --git a/dailyjs/shared/components/HairCheck/HairCheck.js b/dailyjs/shared/components/HairCheck/HairCheck.js index a668045..eaebafc 100644 --- a/dailyjs/shared/components/HairCheck/HairCheck.js +++ b/dailyjs/shared/components/HairCheck/HairCheck.js @@ -128,7 +128,7 @@ export const HairCheck = () => { <>
Daily.co; - case CALL_STATE_JOINED: return room ? ( room() diff --git a/dailyjs/shared/hooks/useJoinSound.js b/dailyjs/shared/hooks/useJoinSound.js index 474cc48..bbf8566 100644 --- a/dailyjs/shared/hooks/useJoinSound.js +++ b/dailyjs/shared/hooks/useJoinSound.js @@ -9,7 +9,7 @@ import { useSound } from './useSound'; */ export const useJoinSound = () => { const { callObject } = useCallState(); - const { load, play } = useSound('join.mp3'); + const { load, play } = useSound('assets/join.mp3'); useEffect(() => { load(); diff --git a/dailyjs/text-chat/hooks/useMessageSound.js b/dailyjs/text-chat/hooks/useMessageSound.js index e894a1c..3324693 100644 --- a/dailyjs/text-chat/hooks/useMessageSound.js +++ b/dailyjs/text-chat/hooks/useMessageSound.js @@ -7,7 +7,7 @@ import { debounce } from 'debounce'; * Convenience hook to play `join.mp3` when participants join the call */ export const useMessageSound = () => { - const { load, play } = useSound('message.mp3'); + const { load, play } = useSound('assets/message.mp3'); useEffect(() => { load();