From c66374146a41d269b4e969872d426cc340ba24e2 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 9 Jul 2021 16:25:06 +0100 Subject: [PATCH 01/13] dailyjs bump --- dailyjs/shared/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dailyjs/shared/package.json b/dailyjs/shared/package.json index d9fe3c3..10cf3b9 100644 --- a/dailyjs/shared/package.json +++ b/dailyjs/shared/package.json @@ -4,7 +4,7 @@ "private": true, "main": "index.js", "dependencies": { - "@daily-co/daily-js": "^0.12.0", + "@daily-co/daily-js": "^0.15.0", "classnames": "^2.3.1", "debounce": "^1.2.1", "nanoid": "^3.1.23", diff --git a/yarn.lock b/yarn.lock index 7d557c0..deb3d12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,10 +160,10 @@ "@babel/helper-validator-identifier" "^7.12.11" to-fast-properties "^2.0.0" -"@daily-co/daily-js@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@daily-co/daily-js/-/daily-js-0.12.0.tgz#9d31e54d001c4255302efa709db51030840c85fa" - integrity sha512-9C4gZUl7mEc7JNmJ8dQCrENxdTmjuZIKlVEa6fI3Zb7gD82hgTt/5UgFXzj88aB6YI9VndwZVeJkilECUel3Ww== +"@daily-co/daily-js@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@daily-co/daily-js/-/daily-js-0.15.0.tgz#9dfd5c3ed8855df31c370d5b21a3b5098cce3c4f" + integrity sha512-rnivho7yx/yEOtqL81L4daPy9C/FDXf06k06df8vmyUXsE8y+cxSTD7ZvYIJDGJHN6IZRhVxxfbCyPI8CHfwCg== dependencies: "@babel/runtime" "^7.12.5" bowser "^2.8.1" From 5d68418d818bd0ca0627ed4052eddbd4208ff0fb Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 12 Jul 2021 19:34:56 +0100 Subject: [PATCH 02/13] fixed typo --- dailyjs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dailyjs/README.md b/dailyjs/README.md index 7d20ecb..9b78cc3 100644 --- a/dailyjs/README.md +++ b/dailyjs/README.md @@ -10,7 +10,7 @@ Send messages to other participants using sendAppMessage ### [πŸ“Ί Live streaming](./live-streaming) -Broadcast call to a custom RTMP endpoint using a variety of difference layout modes +Broadcast call to a custom RTMP endpoint using a variety of different layout modes --- From 30e77c985c94fc8f91a7e73eaf9e75811a482c6a Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 13 Jul 2021 17:42:29 +0100 Subject: [PATCH 03/13] initial commit --- dailyjs/flying-emojis/.babelrc | 4 + dailyjs/flying-emojis/README.md | 41 +++++ dailyjs/flying-emojis/components/App/App.js | 12 ++ dailyjs/flying-emojis/components/App/index.js | 1 + .../FlyingEmojis/FlyingEmojisOverlay.js | 153 ++++++++++++++++++ .../components/FlyingEmojis/index.js | 2 + dailyjs/flying-emojis/components/Tray/Tray.js | 44 +++++ .../flying-emojis/components/Tray/index.js | 1 + dailyjs/flying-emojis/image.png | Bin 0 -> 138392 bytes dailyjs/flying-emojis/next.config.js | 13 ++ dailyjs/flying-emojis/package.json | 25 +++ dailyjs/flying-emojis/pages/_app.js | 9 ++ dailyjs/flying-emojis/pages/api | 1 + dailyjs/flying-emojis/pages/index.js | 13 ++ dailyjs/flying-emojis/public | 1 + dailyjs/shared/icons/star-md.svg | 1 + yarn.lock | 27 +++- 17 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 dailyjs/flying-emojis/.babelrc create mode 100644 dailyjs/flying-emojis/README.md create mode 100644 dailyjs/flying-emojis/components/App/App.js create mode 100644 dailyjs/flying-emojis/components/App/index.js create mode 100644 dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js create mode 100644 dailyjs/flying-emojis/components/FlyingEmojis/index.js create mode 100644 dailyjs/flying-emojis/components/Tray/Tray.js create mode 100644 dailyjs/flying-emojis/components/Tray/index.js create mode 100644 dailyjs/flying-emojis/image.png create mode 100644 dailyjs/flying-emojis/next.config.js create mode 100644 dailyjs/flying-emojis/package.json create mode 100644 dailyjs/flying-emojis/pages/_app.js create mode 120000 dailyjs/flying-emojis/pages/api create mode 100644 dailyjs/flying-emojis/pages/index.js create mode 120000 dailyjs/flying-emojis/public create mode 100644 dailyjs/shared/icons/star-md.svg diff --git a/dailyjs/flying-emojis/.babelrc b/dailyjs/flying-emojis/.babelrc new file mode 100644 index 0000000..a6f4434 --- /dev/null +++ b/dailyjs/flying-emojis/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["next/babel"], + "plugins": ["inline-react-svg"] +} diff --git a/dailyjs/flying-emojis/README.md b/dailyjs/flying-emojis/README.md new file mode 100644 index 0000000..6703492 --- /dev/null +++ b/dailyjs/flying-emojis/README.md @@ -0,0 +1,41 @@ +# Text Chat + +![Text Chat](./image.png) + +### Live example + +**[See it in action here ➑️](https://dailyjs-text-chat.vercel.app)** + +--- + +## What does this demo do? + +- Use [sendAppMessage](https://docs.daily.co/reference#%EF%B8%8F-sendappmessage) to send messages +- Listen for incoming messages using the call object `app-message` event +- Extend the basic call demo with a chat provider and aside +- Show a notification bubble on chat tray button when a new message is received +- Demonstrate how to play a sound whenever a message is received + +Please note: this demo is not currently mobile optimised + +### Getting started + +``` +# set both DAILY_API_KEY and DAILY_DOMAIN +mv env.example .env.local + +yarn +yarn workspace @dailyjs/text-chat dev +``` + +## How does this example work? + +In this example we extend the [basic call demo](../basic-call) with the ability to send chat messages. + +We pass a custom tray object, a custom app object (wrapping the original in a new `ChatProvider`) as well as add our `ChatAside` panel. We also symlink both the `public` and `pages/api` folders from the basic call. + +In a real world use case you would likely want to implement serverside logic so that participants joining a call can retrieve previously sent messages. This round trip could be done inside of the Chat context. + +## Deploy your own on Vercel + +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/daily-co/clone-flow?repository-url=https%3A%2F%2Fgithub.com%2Fdaily-demos%2Fexamples.git&env=DAILY_DOMAIN%2CDAILY_API_KEY&envDescription=Your%20Daily%20domain%20and%20API%20key%20can%20be%20found%20on%20your%20account%20dashboard&envLink=https%3A%2F%2Fdashboard.daily.co&project-name=daily-examples&repo-name=daily-examples) diff --git a/dailyjs/flying-emojis/components/App/App.js b/dailyjs/flying-emojis/components/App/App.js new file mode 100644 index 0000000..e006832 --- /dev/null +++ b/dailyjs/flying-emojis/components/App/App.js @@ -0,0 +1,12 @@ +import React from 'react'; +import App from '@dailyjs/basic-call/components/App'; +import FlyingEmojiOverlay from '../FlyingEmojis/FlyingEmojisOverlay'; + +export const AppWithEmojis = () => ( + <> + + + +); + +export default AppWithEmojis; diff --git a/dailyjs/flying-emojis/components/App/index.js b/dailyjs/flying-emojis/components/App/index.js new file mode 100644 index 0000000..8887a4b --- /dev/null +++ b/dailyjs/flying-emojis/components/App/index.js @@ -0,0 +1 @@ +export { AppWithEmojis as default } from './App'; diff --git a/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js b/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js new file mode 100644 index 0000000..8060e59 --- /dev/null +++ b/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js @@ -0,0 +1,153 @@ +import React, { useEffect, useRef, useCallback } from 'react'; +import { useCallState } from '@dailyjs/shared/contexts/CallProvider'; + +const EMOJI_MAP = { + fire: 'πŸ”₯', + squid: 'πŸ¦‘', +}; + +export const FlyingEmojisOverlay = () => { + const { callObject } = useCallState(); + const overlayRef = useRef(); + + // -- Handlers + + const handleRemoveFlyingEmoji = useCallback((node) => { + if (!overlayRef.current) return; + overlayRef.current.removeChild(node); + }, []); + + const handleNewFlyingEmoji = useCallback( + (emoji) => { + if (!overlayRef.current) { + return; + } + + console.log(`⭐ New flying emoji: ${emoji}`); + + const node = document.createElement('div'); + node.appendChild(document.createTextNode(EMOJI_MAP[emoji])); + node.className = + Math.random() * 1 > 0.5 ? 'emoji wiggle-1' : 'emoji wiggle-2'; + node.style.transform = `rotate(${-30 + Math.random() * 60}deg)`; + node.style.left = `${Math.random() * 100}%`; + node.src = ''; + overlayRef.current.appendChild(node); + + node.addEventListener('animationend', (e) => + handleRemoveFlyingEmoji(e.target) + ); + }, + [handleRemoveFlyingEmoji] + ); + + // -- Effects + + // Listen for new app messages and show new flying emojis + useEffect(() => { + if (!callObject) { + return false; + } + + console.log(`⭐ Listening for flying emojis...`); + + callObject.on('app-message', handleNewFlyingEmoji); + + return () => callObject.off('app-message', handleNewFlyingEmoji); + }, [callObject, handleNewFlyingEmoji]); + + // Listen to window events to show local user emojis + useEffect(() => { + if (!callObject) { + return false; + } + + function handleIncomingEmoji(e) { + const { emoji } = e.detail; + console.log(`⭐ Sending flying emoji: ${emoji}`); + + if (emoji) { + callObject.sendAppMessage({ emoji }, '*'); + handleNewFlyingEmoji(emoji); + } + } + + window.addEventListener('reaction_added', handleIncomingEmoji); + return () => + window.removeEventListener('reaction_added', handleIncomingEmoji); + }, [callObject, handleNewFlyingEmoji]); + + // Remove all event listeners on unmount to prevent console warnings + useEffect( + () => () => + overlayRef.current.childNodes.forEach((n) => + n.removeEventListener('animationend', handleRemoveFlyingEmoji) + ), + [handleRemoveFlyingEmoji] + ); + + return ( +
+ +
+ ); +}; + +export default FlyingEmojisOverlay; diff --git a/dailyjs/flying-emojis/components/FlyingEmojis/index.js b/dailyjs/flying-emojis/components/FlyingEmojis/index.js new file mode 100644 index 0000000..6e98cc3 --- /dev/null +++ b/dailyjs/flying-emojis/components/FlyingEmojis/index.js @@ -0,0 +1,2 @@ +export { FlyingEmojisOverlay } from './FlyingEmojisOverlay'; +export { FlyingEmojisOverlay as default } from './FlyingEmojisOverlay'; diff --git a/dailyjs/flying-emojis/components/Tray/Tray.js b/dailyjs/flying-emojis/components/Tray/Tray.js new file mode 100644 index 0000000..7b0edda --- /dev/null +++ b/dailyjs/flying-emojis/components/Tray/Tray.js @@ -0,0 +1,44 @@ +import React, { useState } from 'react'; + +import Button from '@dailyjs/shared/components/Button'; +import { TrayButton } from '@dailyjs/shared/components/Tray'; +import { ReactComponent as IconStar } from '@dailyjs/shared/icons/star-md.svg'; + +export const Tray = () => { + const [showEmojis, setShowEmojis] = useState(false); + + function sendEmoji(emoji) { + // Dispatch custom event here so the local user can see their own emoji + window.dispatchEvent( + new CustomEvent('reaction_added', { detail: { emoji } }) + ); + + setShowEmojis(false); + } + + return ( +
+ {showEmojis && ( +
+ + +
+ )} + setShowEmojis(!showEmojis)}> + + + +
+ ); +}; + +export default Tray; diff --git a/dailyjs/flying-emojis/components/Tray/index.js b/dailyjs/flying-emojis/components/Tray/index.js new file mode 100644 index 0000000..100bcc8 --- /dev/null +++ b/dailyjs/flying-emojis/components/Tray/index.js @@ -0,0 +1 @@ +export { Tray as default } from './Tray'; diff --git a/dailyjs/flying-emojis/image.png b/dailyjs/flying-emojis/image.png new file mode 100644 index 0000000000000000000000000000000000000000..cca9672e1ef5a05a8a28fd4db045e1a55c1a13f1 GIT binary patch literal 138392 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

c+N$Jgvz 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 k>VN5*H_uORS37F_ABf{Z+zwyz!T; +App.customTrayComponent = ; + +export default App; diff --git a/dailyjs/flying-emojis/pages/api b/dailyjs/flying-emojis/pages/api new file mode 120000 index 0000000..999f604 --- /dev/null +++ b/dailyjs/flying-emojis/pages/api @@ -0,0 +1 @@ +../../basic-call/pages/api \ No newline at end of file diff --git a/dailyjs/flying-emojis/pages/index.js b/dailyjs/flying-emojis/pages/index.js new file mode 100644 index 0000000..d25e77e --- /dev/null +++ b/dailyjs/flying-emojis/pages/index.js @@ -0,0 +1,13 @@ +import Index from '@dailyjs/basic-call/pages'; +import getDemoProps from '@dailyjs/shared/lib/demoProps'; + +export async function getStaticProps() { + const defaultProps = getDemoProps(); + + // Pass through domain as prop + return { + props: defaultProps, + }; +} + +export default Index; diff --git a/dailyjs/flying-emojis/public b/dailyjs/flying-emojis/public new file mode 120000 index 0000000..33a6e67 --- /dev/null +++ b/dailyjs/flying-emojis/public @@ -0,0 +1 @@ +../basic-call/public \ No newline at end of file diff --git a/dailyjs/shared/icons/star-md.svg b/dailyjs/shared/icons/star-md.svg new file mode 100644 index 0000000..68c299b --- /dev/null +++ b/dailyjs/shared/icons/star-md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index deb3d12..6c4dc2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -264,6 +264,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@popperjs/core@^2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" + integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== + "@rushstack/eslint-patch@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.6.tgz#023d72a5c4531b4ce204528971700a78a85a0c50" @@ -2204,7 +2209,7 @@ lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -2897,6 +2902,11 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" +react-fast-compare@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + react-is@17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -2907,6 +2917,14 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-popper@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.5.tgz#1214ef3cec86330a171671a4fbcbeeb65ee58e96" + integrity sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw== + dependencies: + react-fast-compare "^3.0.1" + warning "^4.0.2" + react-refresh@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" @@ -3616,6 +3634,13 @@ vm-browserify@1.1.2, vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +warning@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + watchpack@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" From 51192c8f58aed1a51eff8afae9252366ef16f888 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 13 Jul 2021 18:00:52 +0100 Subject: [PATCH 04/13] flying emojis --- dailyjs/flying-emojis/README.md | 24 ++++--------- .../FlyingEmojis/FlyingEmojisOverlay.js | 9 ++--- dailyjs/flying-emojis/components/Tray/Tray.js | 35 ++++++++++++++++--- 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/dailyjs/flying-emojis/README.md b/dailyjs/flying-emojis/README.md index 6703492..4c7c69d 100644 --- a/dailyjs/flying-emojis/README.md +++ b/dailyjs/flying-emojis/README.md @@ -1,20 +1,18 @@ -# Text Chat +# Flying Emojis -![Text Chat](./image.png) +![Flying Emojis](./image.png) ### Live example -**[See it in action here ➑️](https://dailyjs-text-chat.vercel.app)** +**[See it in action here ➑️](https://dailyjs-flying-emojis.vercel.app)** --- ## What does this demo do? -- Use [sendAppMessage](https://docs.daily.co/reference#%EF%B8%8F-sendappmessage) to send messages -- Listen for incoming messages using the call object `app-message` event -- Extend the basic call demo with a chat provider and aside -- Show a notification bubble on chat tray button when a new message is received -- Demonstrate how to play a sound whenever a message is received +- Use [sendAppMessage](https://docs.daily.co/reference#%EF%B8%8F-sendappmessage) to send flying emojis to all clients +- Implements a custom `` that adds `` component that listens for incoming emoji events and appends a new node to the DOM +- Todo: pool emoji DOM nodes to optimise on DOM mutations Please note: this demo is not currently mobile optimised @@ -25,17 +23,9 @@ Please note: this demo is not currently mobile optimised mv env.example .env.local yarn -yarn workspace @dailyjs/text-chat dev +yarn workspace @dailyjs/flying-emojis dev ``` -## How does this example work? - -In this example we extend the [basic call demo](../basic-call) with the ability to send chat messages. - -We pass a custom tray object, a custom app object (wrapping the original in a new `ChatProvider`) as well as add our `ChatAside` panel. We also symlink both the `public` and `pages/api` folders from the basic call. - -In a real world use case you would likely want to implement serverside logic so that participants joining a call can retrieve previously sent messages. This round trip could be done inside of the Chat context. - ## Deploy your own on Vercel [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/daily-co/clone-flow?repository-url=https%3A%2F%2Fgithub.com%2Fdaily-demos%2Fexamples.git&env=DAILY_DOMAIN%2CDAILY_API_KEY&envDescription=Your%20Daily%20domain%20and%20API%20key%20can%20be%20found%20on%20your%20account%20dashboard&envLink=https%3A%2F%2Fdashboard.daily.co&project-name=daily-examples&repo-name=daily-examples) diff --git a/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js b/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js index 8060e59..47c587e 100644 --- a/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js +++ b/dailyjs/flying-emojis/components/FlyingEmojis/FlyingEmojisOverlay.js @@ -4,6 +4,7 @@ import { useCallState } from '@dailyjs/shared/contexts/CallProvider'; const EMOJI_MAP = { fire: 'πŸ”₯', squid: 'πŸ¦‘', + laugh: '🀣', }; export const FlyingEmojisOverlay = () => { @@ -23,7 +24,7 @@ export const FlyingEmojisOverlay = () => { return; } - console.log(`⭐ New flying emoji: ${emoji}`); + console.log(`⭐ Displaying flying emoji: ${emoji}`); const node = document.createElement('div'); node.appendChild(document.createTextNode(EMOJI_MAP[emoji])); @@ -93,8 +94,8 @@ export const FlyingEmojisOverlay = () => { position: fixed; top: 0px; bottom: 0px; - left: 0px; - right: 0px; + left: 24px; + right: 24px; overflow: hidden; pointer-events: none; user-select: none; @@ -123,7 +124,7 @@ export const FlyingEmojisOverlay = () => { @keyframes emerge { to { - bottom: 300px; + bottom: 85%; opacity: 0; } } diff --git a/dailyjs/flying-emojis/components/Tray/Tray.js b/dailyjs/flying-emojis/components/Tray/Tray.js index 7b0edda..3788e98 100644 --- a/dailyjs/flying-emojis/components/Tray/Tray.js +++ b/dailyjs/flying-emojis/components/Tray/Tray.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import Button from '@dailyjs/shared/components/Button'; import { TrayButton } from '@dailyjs/shared/components/Tray'; @@ -12,7 +12,6 @@ export const Tray = () => { window.dispatchEvent( new CustomEvent('reaction_added', { detail: { emoji } }) ); - setShowEmojis(false); } @@ -20,8 +19,27 @@ export const Tray = () => {
{showEmojis && (
- - + + +
)} setShowEmojis(!showEmojis)}> @@ -33,8 +51,15 @@ export const Tray = () => { .emojis { position: absolute; display: flex; - top: -50px; + top: calc(-100% + var(--spacing-xs)); + left: 0px; + transform: translateX(calc(-50% + 26px)); z-index: 99; + background: white; + padding: var(--spacing-xxxs); + column-gap: 5px; + border-radius: var(--radius-md); + box-shadow: var(--shadow-depth-2); } `}
From a695235ff8656ab43d49409101c46669ebad7f8d Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 13 Jul 2021 18:39:44 +0100 Subject: [PATCH 05/13] added client side throttling --- dailyjs/README.md | 4 ++++ dailyjs/flying-emojis/components/Tray/Tray.js | 19 ++++++++++++++++++- dailyjs/shared/components/Button/Button.js | 3 +++ dailyjs/shared/components/Tray/Tray.js | 9 ++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/dailyjs/README.md b/dailyjs/README.md index 9b78cc3..5c3d2f6 100644 --- a/dailyjs/README.md +++ b/dailyjs/README.md @@ -12,6 +12,10 @@ Send messages to other participants using sendAppMessage Broadcast call to a custom RTMP endpoint using a variety of different layout modes +### [πŸ”₯ Flying emojis](./flying-emojis) + +Send emoji reactions to all clients using sendAppMessage + --- ## Getting started diff --git a/dailyjs/flying-emojis/components/Tray/Tray.js b/dailyjs/flying-emojis/components/Tray/Tray.js index 3788e98..113de3d 100644 --- a/dailyjs/flying-emojis/components/Tray/Tray.js +++ b/dailyjs/flying-emojis/components/Tray/Tray.js @@ -4,8 +4,11 @@ import Button from '@dailyjs/shared/components/Button'; import { TrayButton } from '@dailyjs/shared/components/Tray'; import { ReactComponent as IconStar } from '@dailyjs/shared/icons/star-md.svg'; +const COOLDOWN = 1500; + export const Tray = () => { const [showEmojis, setShowEmojis] = useState(false); + const [isThrottled, setIsThrottled] = useState(false); function sendEmoji(emoji) { // Dispatch custom event here so the local user can see their own emoji @@ -13,8 +16,18 @@ export const Tray = () => { new CustomEvent('reaction_added', { detail: { emoji } }) ); setShowEmojis(false); + setIsThrottled(true); } + // Pseudo-throttling (should ideally be done serverside) + useEffect(() => { + if (!isThrottled) { + return false; + } + const t = setTimeout(() => setIsThrottled(false), COOLDOWN); + return () => clearTimeout(t); + }, [isThrottled]); + return (
{showEmojis && ( @@ -42,7 +55,11 @@ export const Tray = () => {
)} - setShowEmojis(!showEmojis)}> + setShowEmojis(!showEmojis)} + disabled={isThrottled} + > + + ); }; export default App; diff --git a/dailyjs/basic-call/components/CreatingRoom/CreatingRoom.js b/dailyjs/basic-call/components/CreatingRoom/CreatingRoom.js new file mode 100644 index 0000000..4973120 --- /dev/null +++ b/dailyjs/basic-call/components/CreatingRoom/CreatingRoom.js @@ -0,0 +1,100 @@ +import React, { useState, useEffect } from 'react'; +import { Card, CardHeader, CardBody } from '@dailyjs/shared/components/Card'; +import Loader from '@dailyjs/shared/components/Loader'; +import { Well } from '@dailyjs/shared/components/Well'; +import PropTypes from 'prop-types'; + +export const CreatingRoom = ({ onCreated }) => { + const [room, setRoom] = useState(); + const [fetching, setFetching] = useState(false); + const [error, setError] = useState(false); + + useEffect(() => { + if (room) return; + + async function createRoom() { + 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); + } + + createRoom(); + }, [room]); + + useEffect(() => { + if (!room || !onCreated) return; + + console.log(`πŸšͺ Room created: ${room}, joining now`); + + onCreated(room, true); + }, [room, onCreated]); + + return ( +
+ {fetching && ( +
+ Creating new demo room... +
+ )} + {error && ( + + An error occured + + {error} + An error occured when trying to create a demo room. Please check + that your environmental variables are correct and try again. + + + )} + + +
+ ); +}; + +CreatingRoom.propTypes = { + onCreated: PropTypes.func.isRequired, +}; + +export default CreatingRoom; diff --git a/dailyjs/basic-call/components/CreatingRoom/index.js b/dailyjs/basic-call/components/CreatingRoom/index.js new file mode 100644 index 0000000..c92b6f2 --- /dev/null +++ b/dailyjs/basic-call/components/CreatingRoom/index.js @@ -0,0 +1,2 @@ +export { CreatingRoom as default } from './CreatingRoom'; +export { CreatingRoom } from './CreatingRoom'; diff --git a/dailyjs/basic-call/pages/api/createRoom.js b/dailyjs/basic-call/pages/api/createRoom.js new file mode 100644 index 0000000..1c8ff2b --- /dev/null +++ b/dailyjs/basic-call/pages/api/createRoom.js @@ -0,0 +1,36 @@ +export default async function handler(req, res) { + if (req.method === 'POST') { + console.log(`Creating room on domain ${process.env.DAILY_DOMAIN}`); + + const options = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${process.env.DAILY_API_KEY}`, + }, + body: JSON.stringify({ + properties: { + exp: Math.round(Date.now() / 1000) + 5 * 60, // expire in 5 minutes + eject_at_room_exp: true, + }, + }), + }; + + const dailyRes = await fetch( + `${process.env.DAILY_REST_DOMAIN || 'https://api.daily.co/v1'}/rooms`, + options + ); + + const { name, url, error } = await dailyRes.json(); + + if (error) { + return res.status(500).json({ error }); + } + + return res + .status(200) + .json({ name, url, domain: process.env.DAILY_DOMAIN }); + } + + return res.status(500); +} diff --git a/dailyjs/basic-call/pages/index.js b/dailyjs/basic-call/pages/index.js index 1e0d432..7c0df78 100644 --- a/dailyjs/basic-call/pages/index.js +++ b/dailyjs/basic-call/pages/index.js @@ -6,9 +6,9 @@ import { TracksProvider } from '@dailyjs/shared/contexts/TracksProvider'; import { UIStateProvider } from '@dailyjs/shared/contexts/UIStateProvider'; import { WaitingRoomProvider } from '@dailyjs/shared/contexts/WaitingRoomProvider'; import getDemoProps from '@dailyjs/shared/lib/demoProps'; - import PropTypes from 'prop-types'; import App from '../components/App'; +import { CreatingRoom } from '../components/CreatingRoom'; import { Intro, NotConfigured } from '../components/Intro'; /** @@ -25,6 +25,7 @@ export default function Index({ predefinedRoom = '', forceFetchToken = false, forceOwner = false, + demoMode = false, asides, modals, customTrayComponent, @@ -74,22 +75,24 @@ export default function Index({ if (!isReady) { return (
- {!isConfigured ? ( - - ) : ( - - fetchToken ? getMeetingToken(room, isOwner) : setRoomName(room) - } - /> - )} + {(() => { + if (!isConfigured) return ; + if (demoMode) return ; + return ( + + fetchToken ? getMeetingToken(room, isOwner) : setRoomName(room) + } + /> + ); + })()}