diff --git a/public/locales/en-GB/app.json b/public/locales/en-GB/app.json index f14af673..6dd6e72b 100644 --- a/public/locales/en-GB/app.json +++ b/public/locales/en-GB/app.json @@ -121,5 +121,6 @@ "Yes, join call": "Yes, join call", "You": "You", "You were disconnected from the call": "You were disconnected from the call", - "Your feedback": "Your feedback" + "Your feedback": "Your feedback", + "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117": "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" } diff --git a/public/locales/fr/app.json b/public/locales/fr/app.json index 657dec66..5232e276 100644 --- a/public/locales/fr/app.json +++ b/public/locales/fr/app.json @@ -108,5 +108,18 @@ "Sharing screen": "L’écran est partagé", "{{count, number}}|one": "{{count, number}}", "Not encrypted": "Non chiffré", - "You": "Vous" + "You": "Vous", + "Continue in browser": "Continuer dans le navigateur", + "Mute microphone": "Couper le microphone", + "Name of call": "Nom de l’appel", + "Open in the app": "Ouvrir dans l’application", + "Ready to join?": "Prêt à rejoindre ?", + "Select app": "Choisissez l’application", + "Start new call": "Démarrer un nouvel appel", + "Back to recents": "Revenir aux récents", + "Start video": "Démarrer la vidéo", + "Stop video": "Arrêter la vidéo", + "Unmute microphone": "Allumer le microphone", + "Call not found": "Appel non trouvé", + "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key.": "Les appels sont maintenant chiffrés de bout-en-bout et doivent être créés depuis la page d’accueil. Cela permet d’être sûr que tout le monde utilise la même clé de chiffrement." } diff --git a/public/locales/zh-Hant/app.json b/public/locales/zh-Hant/app.json index 56c70e44..815f5a1a 100644 --- a/public/locales/zh-Hant/app.json +++ b/public/locales/zh-Hant/app.json @@ -119,5 +119,7 @@ "Start video": "開始影片", "Back to recents": "回到最近的通話", "Stop video": "停止影片", - "Unmute microphone": "將麥克風取消靜音" + "Unmute microphone": "將麥克風取消靜音", + "Call not found": "找不到通話", + "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key.": "通話現在是端對端加密的,必須從首頁建立。這有助於確保每個人都使用相同的加密金鑰。" } diff --git a/src/room/AppSelectionModal.tsx b/src/room/AppSelectionModal.tsx index c3b8559b..06b73acc 100644 --- a/src/room/AppSelectionModal.tsx +++ b/src/room/AppSelectionModal.tsx @@ -62,8 +62,11 @@ export const AppSelectionModal: FC = ({ roomId }) => { return params; }); + const result = new URL("io.element.call:/call"); - result.searchParams.set("url", url.toString()); + // Everything after the last & stripped away making us loose the last param. Most likely while removing the pwd. + // TODO fix the pwd removal function (or wherever this happens) to not delete everything after the last &. + result.searchParams.set("url", url.toString() + "&"); return result.toString(); }, [roomId, roomSharedKey]); diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx index 809bba7d..ab96926a 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -17,14 +17,16 @@ limitations under the License. import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useHistory } from "react-router-dom"; import { MatrixClient } from "matrix-js-sdk/src/client"; -import { Room } from "livekit-client"; +import { Room, isE2EESupported } from "livekit-client"; import { logger } from "matrix-js-sdk/src/logger"; import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession"; import { JoinRule, RoomMember } from "matrix-js-sdk/src/matrix"; +import { Heading, Link, Text } from "@vector-im/compound-web"; +import { useTranslation } from "react-i18next"; import type { IWidgetApiRequest } from "matrix-widget-api"; import { widget, ElementWidgetActions, JoinCallData } from "../widget"; -import { ErrorView } from "../FullScreenView"; +import { ErrorView, FullScreenView } from "../FullScreenView"; import { LobbyView } from "./LobbyView"; import { MatrixInfo } from "./VideoPreview"; import { CallEndedView } from "./CallEndedView"; @@ -284,6 +286,16 @@ export function GroupCallView({ ); const onShareClick = joinRule === JoinRule.Public ? onShareClickFn : null; + const onHomeClick = useCallback( + (ev: React.MouseEvent) => { + ev.preventDefault(); + history.push("/"); + }, + [history] + ); + + const { t } = useTranslation(); + if (e2eeEnabled && isRoomE2EE && !e2eeSharedKey) { return ( ); - } - - if (!e2eeEnabled && isRoomE2EE) { + } else if (!isE2EESupported() && isRoomE2EE) { + return ( + + Incompatible Browser + + {t( + "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" + )} + + + {t("Home")} + + + ); + } else if (!e2eeEnabled && isRoomE2EE) { return ; } diff --git a/src/room/LayoutToggle.module.css b/src/room/LayoutToggle.module.css index fb95a716..3c93e742 100644 --- a/src/room/LayoutToggle.module.css +++ b/src/room/LayoutToggle.module.css @@ -24,8 +24,12 @@ limitations under the License. .toggle input { appearance: none; - /* Safari puts a margin on these, which is not removed via appearance: none */ + /* + * Safari puts a margin on these, which is not removed via appearance: none + * mobile safari also has them take up space in the DOM, so set width 0 + */ margin: 0; + width: 0; outline: none !important; }