mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-15 00:04:59 +08:00
Use prefixed versions of other fullscreen APIs too
This commit is contained in:
parent
05be247946
commit
d2175b40a4
6
src/@types/global.d.ts
vendored
6
src/@types/global.d.ts
vendored
@ -17,6 +17,12 @@ limitations under the License.
|
|||||||
import "matrix-js-sdk/src/@types/global";
|
import "matrix-js-sdk/src/@types/global";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
interface Document {
|
||||||
|
// Safari only supports this prefixed, so tell the type system about it
|
||||||
|
webkitExitFullscreen: () => void;
|
||||||
|
webkitFullscreenElement: HTMLElement | null;
|
||||||
|
}
|
||||||
|
|
||||||
interface Window {
|
interface Window {
|
||||||
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
|
// TODO: https://gitlab.matrix.org/matrix-org/olm/-/issues/10
|
||||||
OLM_OPTIONS: Record<string, string>;
|
OLM_OPTIONS: Record<string, string>;
|
||||||
|
@ -54,16 +54,23 @@ export function useFullscreen(ref: React.RefObject<HTMLElement>): {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const onFullscreenChanged = useCallback(() => {
|
const onFullscreenChanged = useCallback(() => {
|
||||||
if (!document.fullscreenElement) {
|
if (!document.fullscreenElement && !document.webkitFullscreenElement) {
|
||||||
setFullscreenParticipant(null);
|
setFullscreenParticipant(null);
|
||||||
}
|
}
|
||||||
}, [setFullscreenParticipant]);
|
}, [setFullscreenParticipant]);
|
||||||
|
|
||||||
useEventTarget(ref.current, "fullscreenchange", onFullscreenChanged);
|
useEventTarget(ref.current, "fullscreenchange", onFullscreenChanged);
|
||||||
|
useEventTarget(ref.current, "webkitfullscreenchange", onFullscreenChanged);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (disposed) {
|
if (disposed) {
|
||||||
document.exitFullscreen();
|
if (document.exitFullscreen) {
|
||||||
|
document.exitFullscreen();
|
||||||
|
} else if (document.webkitExitFullscreen) {
|
||||||
|
document.webkitExitFullscreen();
|
||||||
|
} else {
|
||||||
|
logger.error("No available fullscreen API!");
|
||||||
|
}
|
||||||
setFullscreenParticipant(null);
|
setFullscreenParticipant(null);
|
||||||
}
|
}
|
||||||
}, [disposed]);
|
}, [disposed]);
|
||||||
|
Loading…
Reference in New Issue
Block a user