From d65464e4dbfc3f53a077f24adfb3d9469bc6518f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 23 Jan 2023 16:53:24 +0000 Subject: [PATCH 01/18] Avoid duplicate PTT button 'unhold' events We called the 'unhold' function even if the button wasn't held which probably will have been generating unmute events even when we weren't muted. Also use separate handlers for events so we can have specific log lines (and also see where the event comes from when caught in the debugger). --- src/room/PTTButton.tsx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/room/PTTButton.tsx b/src/room/PTTButton.tsx index abc02c68..1ff7b27b 100644 --- a/src/room/PTTButton.tsx +++ b/src/room/PTTButton.tsx @@ -17,6 +17,7 @@ limitations under the License. import React, { useCallback, useState, useRef } from "react"; import classNames from "classnames"; import { useSpring, animated } from "@react-spring/web"; +import { logger } from "@sentry/utils"; import styles from "./PTTButton.module.css"; import { ReactComponent as MicIcon } from "../icons/Mic.svg"; @@ -68,11 +69,23 @@ export const PTTButton: React.FC = ({ enqueueNetworkWaiting(true, 100); startTalking(); }, [enqueueNetworkWaiting, startTalking, buttonHeld]); + const unhold = useCallback(() => { + if (!buttonHeld) return; setButtonHeld(false); setNetworkWaiting(false); stopTalking(); - }, [setNetworkWaiting, stopTalking]); + }, [setNetworkWaiting, stopTalking, buttonHeld]); + + const onMouseUp = useCallback(() => { + logger.info("Mouse up event: unholding PTT button"); + unhold(); + }, [unhold]); + + const onBlur = useCallback(() => { + logger.info("Blur event: unholding PTT button"); + unhold(); + }, [unhold]); const onButtonMouseDown = useCallback( (e: React.MouseEvent) => { @@ -85,7 +98,7 @@ export const PTTButton: React.FC = ({ // These listeners go on the window so even if the user's cursor / finger // leaves the button while holding it, the button stays pushed until // they stop clicking / tapping. - useEventTarget(window, "mouseup", unhold); + useEventTarget(window, "mouseup", onMouseUp); useEventTarget( window, "touchend", @@ -103,6 +116,8 @@ export const PTTButton: React.FC = ({ } if (!touchFound) return; + logger.info("Touch event ended: unholding PTT button"); + e.preventDefault(); unhold(); setActiveTouchId(null); @@ -163,6 +178,8 @@ export const PTTButton: React.FC = ({ e.preventDefault(); + logger.info("Keyup event for spacebar: unholding PTT button"); + unhold(); } }, @@ -171,7 +188,7 @@ export const PTTButton: React.FC = ({ ); // TODO: We will need to disable this for a global PTT hotkey to work - useEventTarget(window, "blur", unhold); + useEventTarget(window, "blur", onBlur); const prefersReducedMotion = usePrefersReducedMotion(); const { shadow } = useSpring({ From d2631a3e0201c7e5338f9b3508a548b0f60fe477 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 23 Jan 2023 17:52:02 +0000 Subject: [PATCH 02/18] Fix the rageshake modal on mobile As per comment Unsure if this is the best fix - ideally we wouldn't go into no-controls mode at all, but this part doesn't know whether the dialog is open so the only thing we could really do is tweak the threshold, or possibly guess based on width instead? --- src/room/PTTCallView.tsx | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/room/PTTCallView.tsx b/src/room/PTTCallView.tsx index 08836d09..a25f3371 100644 --- a/src/room/PTTCallView.tsx +++ b/src/room/PTTCallView.tsx @@ -210,36 +210,36 @@ export const PTTCallView: React.FC = ({ )}
- {showControls && ( - <> -
-

- {t("{{count}} people connected", { - count: participatingMembers.length, - })} -

- -
-
- - {!isEmbedded && } - inviteModalState.open()} /> -
- - )} + {/* Always render this because the window will become shorter when the on-screen + keyboard appears, so if we don't render it, the dialog will unmount. */} +
+
+

+ {t("{{count}} people connected", { + count: participatingMembers.length, + })} +

+ +
+
+ + {!isEmbedded && } + inviteModalState.open()} /> +
+
{showControls && From 42d5db6d0f7c35804e4e68300504286dd1eecbfb Mon Sep 17 00:00:00 2001 From: Dino <23552286+dinosmm@users.noreply.github.com> Date: Thu, 26 Jan 2023 10:35:30 +0000 Subject: [PATCH 03/18] Update README.md Updated README.md to include more detailed information about the limitations of Element Call and a recommended homeserver set up. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 997af57c..8e1323fb 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,12 @@ server { } ``` +By default, the app expects you to have [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html) installed locally and running on port 8008. If you wish to use another homeserver, you can add a config file as above. + +Element Call requires a Synapse homeserver with registration enabled without any 3pid or token requirements, if you want it to be used by unregistered users. Furthermore, it cannot be used to log in to an existing homeserver where user accounts have joined normal rooms, as it cannot handle those yet. + +Therefore, to use a self-hosted Synapse homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The HS used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle. + ## Development Element Call is built against [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk/pull/2553). To get started, clone, install, and link the package: @@ -62,8 +68,6 @@ yarn yarn link matrix-js-sdk ``` -By default, the app expects you to have [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html) installed locally and running on port 8008. If you wish to use another homeserver, you can add a config file as above. - You're now ready to launch the development server: ``` From 6e275b92215ede960ea774d8c617c89533be1077 Mon Sep 17 00:00:00 2001 From: Dino <23552286+dinosmm@users.noreply.github.com> Date: Thu, 26 Jan 2023 14:24:53 +0000 Subject: [PATCH 04/18] Clarified homeserver requirements I clarified homeserver requirements (i.e. that Element Call needs a homeserver like Synapse but not necessarily Synapse), and also edited some other parts for clarity. I also updated the recommendation to not log in to an existing homeserver based on my new findings that Element Call *may* allow you to log in to an existing HS but log in is unreliable. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8e1323fb..495d70a9 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,11 @@ server { } ``` -By default, the app expects you to have [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html) installed locally and running on port 8008. If you wish to use another homeserver, you can add a config file as above. +By default, the app expects you to have a Matrix homeserver (such as [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html)) installed locally and running on port 8008. If you wish to use a homeserver on a different URL or one that is hosted on a different server, you can add a config file as above, and include the homeserver URL that you'd like to use. -Element Call requires a Synapse homeserver with registration enabled without any 3pid or token requirements, if you want it to be used by unregistered users. Furthermore, it cannot be used to log in to an existing homeserver where user accounts have joined normal rooms, as it cannot handle those yet. +Element Call requires a homeserver with registration enabled without any 3pid or token requirements, if you want it to be used by unregistered users. Furthermore, it is not recommended to use it with an existing homeserver where user accounts have joined normal rooms, as it may not be able to handle those yet and it may behave unreliably. -Therefore, to use a self-hosted Synapse homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The HS used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle. +Therefore, to use a self-hosted Synapse homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The homeserver used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle. ## Development From acade92d70d35e99c9cf3f214d35497defeaa37a Mon Sep 17 00:00:00 2001 From: Dino <23552286+dinosmm@users.noreply.github.com> Date: Thu, 26 Jan 2023 14:50:32 +0000 Subject: [PATCH 05/18] Removed one more reference to Synapse I forgot to remove one reference to Synapse previously. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 495d70a9..cd4b65de 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ By default, the app expects you to have a Matrix homeserver (such as [Synapse](h Element Call requires a homeserver with registration enabled without any 3pid or token requirements, if you want it to be used by unregistered users. Furthermore, it is not recommended to use it with an existing homeserver where user accounts have joined normal rooms, as it may not be able to handle those yet and it may behave unreliably. -Therefore, to use a self-hosted Synapse homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The homeserver used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle. +Therefore, to use a self-hosted homeserver, this is recommended to be a new server where any user account created has not joined any normal rooms anywhere in the Matrix federated network. The homeserver used can be setup to disable federation, so as to prevent spam registrations (if you keep registrations open) and to ensure Element Call continues to work in case any user decides to log in to their Element Call account using the standard Element app and joins normal rooms that Element Call cannot handle. ## Development From b7ac131614bc7087695cca6cdd9900e182bc0dec Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 26 Jan 2023 14:59:54 +0000 Subject: [PATCH 06/18] Add posthog to PR preview builds --- config/element_io_preview.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/element_io_preview.json b/config/element_io_preview.json index 8a11a147..21fca851 100644 --- a/config/element_io_preview.json +++ b/config/element_io_preview.json @@ -5,6 +5,10 @@ "server_name": "call.ems.host" } }, + "posthog": { + "api_key": "phc_rXGHx9vDmyEvyRxPziYtdVIv0ahEv8A9uLWFcCi1WcU", + "api_host": "https://posthog-element-call.element.io" + }, "rageshake": { "submit_url": "https://element.io/bugreports/submit" } From e0b94b51abcc08a472a6eb17bd7bfb0c9befc33a Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Fri, 20 Jan 2023 17:23:06 +0000 Subject: [PATCH 07/18] Translated using Weblate (Japanese) Currently translated at 72.3% (102 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index fd876f14..b918bd18 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -90,6 +90,9 @@ "Video": "ビデオ", "Waiting for other participants…": "他の参加者を待機しています…", "Waiting for network": "ネットワークを待機しています", - "Walkie-talkie call name": "トランシーバー通話の名前", - "Walkie-talkie call": "トランシーバー通話" + "Walkie-talkie call name": "トランシーバー通話の名称", + "Walkie-talkie call": "トランシーバー通話", + "Camera {{n}}": "カメラ {{n}}", + "{{name}} is talking…": "{{name}}が話しています…", + "Yes, join call": "はい、通話に参加" } From 0f73527ccf208f3cbc0ef8da7b1b809d5cfaaaa1 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Fri, 20 Jan 2023 17:22:07 +0000 Subject: [PATCH 08/18] Translated using Weblate (Japanese) Currently translated at 72.3% (102 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index b918bd18..5f281410 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -94,5 +94,11 @@ "Walkie-talkie call": "トランシーバー通話", "Camera {{n}}": "カメラ {{n}}", "{{name}} is talking…": "{{name}}が話しています…", - "Yes, join call": "はい、通話に参加" + "Yes, join call": "はい、通話に参加", + "Spatial audio": "空間オーディオ", + "Select an option": "オプションを選択", + "Debug log request": "デバッグログを要求", + "Your recent calls": "最近の通話", + "You can't talk at the same time": "同時に会話することはできません", + "WebRTC is not supported or is being blocked in this browser.": "お使いのブラウザでWebRTCがサポートされていないか、またはブロックされています。" } From 24fea189dcba5a8c73a5c8138e21d7e197906fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sat, 21 Jan 2023 17:39:15 +0000 Subject: [PATCH 09/18] Translated using Weblate (Czech) Currently translated at 100.0% (141 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/cs/ --- public/locales/cs/app.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/locales/cs/app.json b/public/locales/cs/app.json index 8afdb2cb..70226c43 100644 --- a/public/locales/cs/app.json +++ b/public/locales/cs/app.json @@ -136,5 +136,8 @@ "<0>Why not finish by setting up a password to keep your account?<1>You'll be able to keep your name and set an avatar for use on future calls": "<0>Proč neskončit nastavením hesla, abyste mohli účet použít znovu?<1>Budete si moci nechat své jméno a nastavit si avatar pro budoucí hovory ", "<0>Join call now<1>Or<2>Copy call link and join later": "<0>Připojit se<1>Or<2>Zkopírovat odkaz a připojit se později", "<0>Already have an account?<1><0>Log in Or <2>Access as a guest": "<0>Už máte účet?<1><0>Přihlásit se Or <2>Jako host", - "{{name}} (Waiting for video...)": "{{name}} (Čekání na video...)" + "{{name}} (Waiting for video...)": "{{name}} (Čekání na video...)", + "This feature is only supported on Firefox.": "Tato funkce je podporována jen ve Firefoxu.", + "<0>Submitting debug logs will help us track down the problem.": "<0>Odeslání ladících záznamů nám pomůže diagnostikovat problém.", + "<0>Oops, something's gone wrong.": "<0>Oops, něco se pokazilo." } From 14a5e53e650eccff2e762a409ad3df558036ea86 Mon Sep 17 00:00:00 2001 From: afr4283 Date: Tue, 24 Jan 2023 10:47:30 +0000 Subject: [PATCH 10/18] Translated using Weblate (Polish) Currently translated at 97.1% (137 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/pl/ --- public/locales/pl/app.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/public/locales/pl/app.json b/public/locales/pl/app.json index e4960489..0fdee20a 100644 --- a/public/locales/pl/app.json +++ b/public/locales/pl/app.json @@ -124,5 +124,16 @@ "{{name}} is talking…": "{{name}} mówi…", "{{name}} is presenting": "{{name}} prezentuje", "{{displayName}}, your call is now ended": "{{displayName}}, twoje połączenie zostało zakończone", - "{{count}} people connected|one": "{{count}} osoba połączona" + "{{count}} people connected|one": "{{count}} osoba połączona", + "Whether to enable single-key keyboard shortcuts, e.g. 'm' to mute/unmute the mic.": "Czy włączyć skróty klawiszowe pojedynczych klawiszy, np. 'm' aby wyciszyć/załączyć mikrofon.", + "This feature is only supported on Firefox.": "Ta funkcjonalność jest dostępna tylko w Firefox.", + "Single-key keyboard shortcuts": "Skróty klawiszowe (pojedyncze klawisze)", + "Copy": "Kopiuj", + "Allow analytics": "Zezwól na analitykę", + "Advanced": "Zaawansowane", + "<0>Submitting debug logs will help us track down the problem.": "<0>Wysłanie logów debuggowania pomoże nam ustalić przyczynę problemu.", + "<0>Oops, something's gone wrong.": "<0>Ojej, coś poszło nie tak.", + "<0>Join call now<1>Or<2>Copy call link and join later": "<0>Dołącz do rozmowy teraz<1>Or<2>Skopiuj link do rozmowy i dołącz później", + "{{name}} (Waiting for video...)": "{{name}} (Oczekiwanie na wideo...)", + "{{name}} (Connecting...)": "{{name}} (Łączenie...)" } From 32fb14107f2942757525d76b730a1d838fb7c245 Mon Sep 17 00:00:00 2001 From: DarkCoder15 Date: Thu, 26 Jan 2023 15:30:58 +0000 Subject: [PATCH 11/18] Translated using Weblate (Russian) Currently translated at 100.0% (141 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ru/ --- public/locales/ru/app.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/public/locales/ru/app.json b/public/locales/ru/app.json index a73f5622..b113bbf5 100644 --- a/public/locales/ru/app.json +++ b/public/locales/ru/app.json @@ -132,6 +132,12 @@ "Copy": "Копировать", "Allow analytics": "Разрешить аналитику", "Advanced": "Расширенные", - "<0>Join call now<1>Or<2>Copy call link and join later": "<0>Присоединиться сейчас<1>или<1><2>Скопировать ссылку на звонок и присоединиться позже", - "{{name}} (Connecting...)": "{{name}} (Соединение...)" + "<0>Join call now<1>Or<2>Copy call link and join later": "<0>Присоединиться сейчас<1>или<1><2>cкопировать ссылку на звонок и присоединиться позже", + "{{name}} (Connecting...)": "{{name}} (Соединение...)", + "Whether to enable single-key keyboard shortcuts, e.g. 'm' to mute/unmute the mic.": "Включить горячие клавиши, например 'm' чтобы отключить/включить микрофон.", + "This feature is only supported on Firefox.": "Эта возможность доступна только в Firefox.", + "Single-key keyboard shortcuts": "Горячие клавиши", + "<0>Submitting debug logs will help us track down the problem.": "<0>Отправка журналов поможет нам найти и устранить проблему.", + "<0>Oops, something's gone wrong.": "<0>Упс, что-то пошло не так.", + "{{name}} (Waiting for video...)": "{{name}} (Ожидание видео...)" } From b4c6684ff5e10fa305b989928b5c3f25fc01f604 Mon Sep 17 00:00:00 2001 From: Genbuchan Date: Mon, 30 Jan 2023 18:24:57 +0000 Subject: [PATCH 12/18] Translated using Weblate (Japanese) Currently translated at 74.4% (105 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 5f281410..9b00f7a1 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -100,5 +100,6 @@ "Debug log request": "デバッグログを要求", "Your recent calls": "最近の通話", "You can't talk at the same time": "同時に会話することはできません", - "WebRTC is not supported or is being blocked in this browser.": "お使いのブラウザでWebRTCがサポートされていないか、またはブロックされています。" + "WebRTC is not supported or is being blocked in this browser.": "お使いのブラウザでWebRTCがサポートされていないか、またはブロックされています。", + "Login to your account": "お持ちのアカウントでログイン" } From 82f2fd05b58a68ea6b542d9a6e0c5726acbf3bfc Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Mon, 30 Jan 2023 18:24:46 +0000 Subject: [PATCH 13/18] Translated using Weblate (Japanese) Currently translated at 74.4% (105 of 141 strings) Translation: Element Call/element-call Translate-URL: https://translate.element.io/projects/element-call/element-call/ja/ --- public/locales/ja/app.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/app.json b/public/locales/ja/app.json index 9b00f7a1..71974160 100644 --- a/public/locales/ja/app.json +++ b/public/locales/ja/app.json @@ -101,5 +101,7 @@ "Your recent calls": "最近の通話", "You can't talk at the same time": "同時に会話することはできません", "WebRTC is not supported or is being blocked in this browser.": "お使いのブラウザでWebRTCがサポートされていないか、またはブロックされています。", - "Login to your account": "お持ちのアカウントでログイン" + "Login to your account": "お持ちのアカウントでログイン", + "Freedom": "自由", + "{{displayName}}, your call is now ended": "{{displayName}}、通話が終了しました" } From e1abbd52919952f4055694811aee3f7867ed1056 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 2 Feb 2023 12:49:54 +0000 Subject: [PATCH 14/18] Yarn upgrade Along with some type fixes to make typescript happy again. Hopefully they are sensible. --- src/Menu.tsx | 11 +- src/Modal.tsx | 4 +- src/room/PTTFeed.tsx | 2 +- yarn.lock | 5564 ++++++++++++++++++++---------------------- 4 files changed, 2624 insertions(+), 2957 deletions(-) diff --git a/src/Menu.tsx b/src/Menu.tsx index 0a995afa..93b8822b 100644 --- a/src/Menu.tsx +++ b/src/Menu.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, { Key, useRef, useState } from "react"; +import React, { Key, ReactNode, useRef, useState } from "react"; import { AriaMenuOptions, useMenu, useMenuItem } from "@react-aria/menu"; import { TreeState, useTreeState } from "@react-stately/tree"; import { mergeProps } from "@react-aria/utils"; @@ -25,10 +25,11 @@ import { Node } from "@react-types/shared"; import styles from "./Menu.module.css"; interface MenuProps extends AriaMenuOptions { - className?: String; + className?: string; onClose?: () => void; onAction: (value: Key) => void; label?: string; + children: ReactNode; } export function Menu({ @@ -38,7 +39,11 @@ export function Menu({ label, ...rest }: MenuProps) { - const state = useTreeState({ ...rest, selectionMode: "none" }); + const state = useTreeState({ + ...rest, + selectionMode: "none", + children: undefined, + }); const menuRef = useRef(); const { menuProps } = useMenu(rest, state, menuRef); diff --git a/src/Modal.tsx b/src/Modal.tsx index 2665e116..7cb7e593 100644 --- a/src/Modal.tsx +++ b/src/Modal.tsx @@ -32,13 +32,13 @@ import { useDialog } from "@react-aria/dialog"; import { FocusScope } from "@react-aria/focus"; import { ButtonAria, useButton } from "@react-aria/button"; import classNames from "classnames"; -import { AriaDialogProps } from "@react-types/dialog"; +import { SpectrumDialogProps } from "@react-types/dialog"; import { useTranslation } from "react-i18next"; import { ReactComponent as CloseIcon } from "./icons/Close.svg"; import styles from "./Modal.module.css"; -export interface ModalProps extends OverlayProps, AriaDialogProps { +export interface ModalProps extends OverlayProps, SpectrumDialogProps { title: string; children: ReactNode; className?: string; diff --git a/src/room/PTTFeed.tsx b/src/room/PTTFeed.tsx index 49a40e0d..389badbe 100644 --- a/src/room/PTTFeed.tsx +++ b/src/room/PTTFeed.tsx @@ -30,5 +30,5 @@ export function PTTFeed({ }) { const { isLocal, stream } = useCallFeed(callFeed); const mediaRef = useMediaStream(stream, audioOutputDevice, isLocal); - return