123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import webRTCAdapter_import from "webrtc-adapter";
- const webRTCAdapter: typeof webRTCAdapter_import =
- //@ts-ignore
- webRTCAdapter_import.default || webRTCAdapter_import;
- export const Supports = new (class {
- readonly isIOS = ["iPad", "iPhone", "iPod"].includes(navigator.platform);
- readonly supportedBrowsers = ["firefox", "chrome", "safari"];
- readonly minFirefoxVersion = 59;
- readonly minChromeVersion = 72;
- readonly minSafariVersion = 605;
- isWebRTCSupported(): boolean {
- return typeof RTCPeerConnection !== "undefined";
- }
- isBrowserSupported(): boolean {
- const browser = this.getBrowser();
- const version = this.getVersion();
- const validBrowser = this.supportedBrowsers.includes(browser);
- if (!validBrowser) return false;
- if (browser === "chrome") return version >= this.minChromeVersion;
- if (browser === "firefox") return version >= this.minFirefoxVersion;
- if (browser === "safari")
- return !this.isIOS && version >= this.minSafariVersion;
- return false;
- }
- getBrowser(): string {
- return webRTCAdapter.browserDetails.browser;
- }
- getVersion(): number {
- return webRTCAdapter.browserDetails.version || 0;
- }
- isUnifiedPlanSupported(): boolean {
- const browser = this.getBrowser();
- const version = webRTCAdapter.browserDetails.version || 0;
- if (browser === "chrome" && version < this.minChromeVersion) return false;
- if (browser === "firefox" && version >= this.minFirefoxVersion) return true;
- if (
- !window.RTCRtpTransceiver ||
- !("currentDirection" in RTCRtpTransceiver.prototype)
- )
- return false;
- let tempPc: RTCPeerConnection;
- let supported = false;
- try {
- tempPc = new RTCPeerConnection();
- tempPc.addTransceiver("audio");
- supported = true;
- } catch (e) {
- } finally {
- if (tempPc) {
- tempPc.close();
- }
- }
- return supported;
- }
- toString(): string {
- return `Supports:
- browser:${this.getBrowser()}
- version:${this.getVersion()}
- isIOS:${this.isIOS}
- isWebRTCSupported:${this.isWebRTCSupported()}
- isBrowserSupported:${this.isBrowserSupported()}
- isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`;
- }
- })();
|