Merge pull request #819 from vector-im/dbkr/prefix_other_fullscreen_apis

Use prefixed versions of other fullscreen APIs too
This commit is contained in:
David Baker 2023-01-03 22:56:49 +00:00 committed by GitHub
commit 11a262b58f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 2 deletions

View file

@ -17,6 +17,12 @@ limitations under the License.
import "matrix-js-sdk/src/@types/global";
declare global {
interface Document {
// Safari only supports this prefixed, so tell the type system about it
webkitExitFullscreen: () => void;
webkitFullscreenElement: HTMLElement | null;
}
interface Window {
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
OLM_OPTIONS: Record<string, string>;

View file

@ -54,16 +54,23 @@ export function useFullscreen(ref: React.RefObject<HTMLElement>): {
);
const onFullscreenChanged = useCallback(() => {
if (!document.fullscreenElement) {
if (!document.fullscreenElement && !document.webkitFullscreenElement) {
setFullscreenParticipant(null);
}
}, [setFullscreenParticipant]);
useEventTarget(ref.current, "fullscreenchange", onFullscreenChanged);
useEventTarget(ref.current, "webkitfullscreenchange", onFullscreenChanged);
useEffect(() => {
if (disposed) {
document.exitFullscreen();
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else {
logger.error("No available fullscreen API!");
}
setFullscreenParticipant(null);
}
}, [disposed]);