From 09aeec3285a00d695517b6b009576b7975459c43 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Fri, 14 Aug 2026 10:41:35 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20generalize=20screen-sh?= =?UTF-8?q?are=20error=20modal=20beyond=20macOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The screen-share error modal was tailored to macOS and did not work correctly on other operating systems. Make it OS-aware so it also handles Windows properly, showing the right guidance for each platform. Also open the OS settings link in a new tab, so the user is not disconnected from the ongoing meeting when following it. --- CHANGELOG.md | 1 + .../components/ScreenShareErrorModal.tsx | 21 +++++++++++++------ src/frontend/src/locales/de/rooms.json | 7 +++++-- src/frontend/src/locales/en/rooms.json | 7 +++++-- src/frontend/src/locales/fr/rooms.json | 7 +++++-- src/frontend/src/locales/nl/rooms.json | 7 +++++-- 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31e8df91..a6b865c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to - 🐛(frontend) fix toolbar ResizeObserver loop and alignment drift - 🐛(analytics) filter benign ResizeObserver loop error in Sentry/PostHog - 🐛(frontend) stop reporting screen-share denials as errors +- 🐛(frontend) generalize screen-share error modal beyond macOS ## [1.26.0] - 2026-08-12 diff --git a/src/frontend/src/features/rooms/livekit/components/ScreenShareErrorModal.tsx b/src/frontend/src/features/rooms/livekit/components/ScreenShareErrorModal.tsx index a9d5e890..014d909b 100644 --- a/src/frontend/src/features/rooms/livekit/components/ScreenShareErrorModal.tsx +++ b/src/frontend/src/features/rooms/livekit/components/ScreenShareErrorModal.tsx @@ -1,6 +1,13 @@ import { A, Button, Dialog, P } from '@/primitives' import { useTranslation } from 'react-i18next' import { css } from '@/styled-system/css' +import { getOS, type OS } from '@/utils/os' + +const SCREEN_CAPTURE_SETTINGS_LINKS: Partial> = { + macos: + 'x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture', + windows: 'ms-settings:privacy-graphicscaptureprogrammatic', +} // todo - refactor it into a generic system export const ScreenShareErrorModal = ({ @@ -11,7 +18,8 @@ export const ScreenShareErrorModal = ({ onClose: () => void }) => { const { t } = useTranslation('rooms', { keyPrefix: 'error.screenShare' }) - const isMac = navigator.userAgent.toLowerCase().indexOf('mac') !== -1 + const os = getOS() + const settingsHref = SCREEN_CAPTURE_SETTINGS_LINKS[os] return (

{t('message')}{' '} - {isMac && ( + {settingsHref && ( <> - {t('macInstructions')}{' '} + {t('settingsInstructions')}{' '} - {t('macSystemPreferences')} + {t(`settingsLabel.${os}`)} .{' '} diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json index 25380d2c..bdacc707 100644 --- a/src/frontend/src/locales/de/rooms.json +++ b/src/frontend/src/locales/de/rooms.json @@ -214,8 +214,11 @@ "title": "Bildschirmfreigabe nicht möglich", "ariaLabel": "Bildschirmfreigabe nicht möglich", "message": "Deinem Browser fehlt möglicherweise die Berechtigung, den Bildschirm deines Geräts abzugreifen.", - "macInstructions": "Gehe zu den", - "macSystemPreferences": "Systemeinstellungen", + "settingsInstructions": "Gehe zu den", + "settingsLabel": { + "macos": "Systemeinstellungen", + "windows": "Windows-Datenschutzeinstellungen" + }, "helpLinkText": "Weitere Informationen findest du unter", "helpLinkLabel": "Bildschirmfreigabeproblem", "closeButton": "Schließen", diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json index 34e4758b..1c48fd80 100644 --- a/src/frontend/src/locales/en/rooms.json +++ b/src/frontend/src/locales/en/rooms.json @@ -214,8 +214,11 @@ "title": "Unable to share your screen", "ariaLabel": "Unable to share your screen", "message": "Your browser may not be allowed to record the screen on your computer.", - "macInstructions": "Go to your", - "macSystemPreferences": "System Preferences", + "settingsInstructions": "Go to your", + "settingsLabel": { + "macos": "System Preferences", + "windows": "Windows privacy settings" + }, "helpLinkText": "To learn more, see", "helpLinkLabel": "Presentation issue", "closeButton": "Dismiss", diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json index df55f557..9091d5a5 100644 --- a/src/frontend/src/locales/fr/rooms.json +++ b/src/frontend/src/locales/fr/rooms.json @@ -214,8 +214,11 @@ "title": "Impossible de partager votre écran", "ariaLabel": "Impossible de partager votre écran", "message": "Il se peut que votre navigateur ne soit pas autorisé à enregistrer l'écran sur votre ordinateur.", - "macInstructions": "Accèdez à vos", - "macSystemPreferences": "Préférences système", + "settingsInstructions": "Accédez à vos", + "settingsLabel": { + "macos": "Préférences système", + "windows": "paramètres de confidentialité Windows" + }, "helpLinkText": "Pour en savoir plus, consulter", "helpLinkLabel": "Problème de présentation", "closeButton": "Ignorer", diff --git a/src/frontend/src/locales/nl/rooms.json b/src/frontend/src/locales/nl/rooms.json index f28f727f..36fff7dc 100644 --- a/src/frontend/src/locales/nl/rooms.json +++ b/src/frontend/src/locales/nl/rooms.json @@ -214,8 +214,11 @@ "title": "Kan uw scherm niet delen", "ariaLabel": "Kan uw scherm niet delen", "message": "Het is mogelijk dat uw browser geen toestemming heeft om het scherm op uw computer op te nemen.", - "macInstructions": "Ga naar uw", - "macSystemPreferences": "Systeemvoorkeuren", + "settingsInstructions": "Ga naar uw", + "settingsLabel": { + "macos": "Systeemvoorkeuren", + "windows": "Windows-privacyinstellingen" + }, "helpLinkText": "Meer informatie, zie", "helpLinkLabel": "Presentatieprobleem", "closeButton": "Negeren",