Use pagehide event on iOS
This commit is contained in:
parent
fc86ffbf80
commit
f47b653932
1 changed files with 21 additions and 2 deletions
|
@ -17,6 +17,22 @@ limitations under the License.
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
import { ConferenceCallManager } from "./ConferenceCallManager";
|
import { ConferenceCallManager } from "./ConferenceCallManager";
|
||||||
|
|
||||||
|
// https://stackoverflow.com/a/9039885
|
||||||
|
function isIOS() {
|
||||||
|
return (
|
||||||
|
[
|
||||||
|
"iPad Simulator",
|
||||||
|
"iPhone Simulator",
|
||||||
|
"iPod Simulator",
|
||||||
|
"iPad",
|
||||||
|
"iPhone",
|
||||||
|
"iPod",
|
||||||
|
].includes(navigator.platform) ||
|
||||||
|
// iPad on iOS 13 detection
|
||||||
|
(navigator.userAgent.includes("Mac") && "ontouchend" in document)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function useConferenceCallManager(homeserverUrl) {
|
export function useConferenceCallManager(homeserverUrl) {
|
||||||
const [{ loading, authenticated, manager, error }, setState] = useState({
|
const [{ loading, authenticated, manager, error }, setState] = useState({
|
||||||
loading: true,
|
loading: true,
|
||||||
|
@ -128,10 +144,13 @@ export function useVideoRoom(manager, roomId, timeout = 5000) {
|
||||||
manager.leaveCall();
|
manager.leaveCall();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("beforeunload", onBeforeUnload);
|
// iOS doesn't fire beforeunload event, so leave the call when you hide the page.
|
||||||
|
const unloadEvent = isIOS() ? "pagehide" : "beforeunload";
|
||||||
|
|
||||||
|
window.addEventListener(unloadEvent, onBeforeUnload);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener("beforeunload", onBeforeUnload);
|
window.removeEventListener(unloadEvent, onBeforeUnload);
|
||||||
manager.leaveCall();
|
manager.leaveCall();
|
||||||
};
|
};
|
||||||
}, [manager]);
|
}, [manager]);
|
||||||
|
|
Loading…
Reference in a new issue