Remove more legacy webkit/ms/moz support

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2025-01-16 10:46:48 +00:00
parent 1c4e1a5170
commit f8e1b2fd6a
5 changed files with 10 additions and 80 deletions

View File

@@ -84,12 +84,6 @@ declare global {
// we only ever check for its existence, so we can ignore its actual type
MSStream?: unknown;
// https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1029#issuecomment-869224737
// https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
OffscreenCanvas?: {
new (width: number, height: number): OffscreenCanvas;
};
mxContentMessages: ContentMessages;
mxToastStore: ToastStore;
mxDeviceListener: DeviceListener;
@@ -149,31 +143,10 @@ declare global {
fetchWindowIcons?: boolean;
}
interface Document {
// Safari & IE11 only have this prefixed: we used prefixed versions
// previously so let's continue to support them for now
webkitExitFullscreen(): Promise<void>;
msExitFullscreen(): Promise<void>;
readonly webkitFullscreenElement: Element | null;
readonly msFullscreenElement: Element | null;
}
interface Navigator {
userLanguage?: string;
}
interface StorageEstimate {
usageDetails?: { [key: string]: number };
}
interface Element {
// Safari & IE11 only have this prefixed: we used prefixed versions
// previously so let's continue to support them for now
webkitRequestFullScreen(options?: FullscreenOptions): Promise<void>;
msRequestFullscreen(options?: FullscreenOptions): Promise<void>;
// scrollIntoView(arg?: boolean | _ScrollIntoViewOptions): void;
}
// https://github.com/microsoft/TypeScript/issues/28308#issuecomment-650802278
interface AudioWorkletProcessor {
readonly port: MessagePort;
@@ -232,11 +205,4 @@ declare global {
var mx_rage_store: IndexedDBLogStore;
}
// add method which is missing from the node typing
declare module "url" {
interface Url {
format(): string;
}
}
/* eslint-enable @typescript-eslint/naming-convention */

View File

@@ -105,14 +105,8 @@ export default class LanguageDropdown extends React.Component<IProps, IState> {
// default value here too, otherwise we need to handle null / undefined
// values between mounting and the initial value propagating
let language = SettingsStore.getValue("language", null, /*excludeDefault:*/ true);
let value: string | undefined;
if (language) {
value = this.props.value || language;
} else {
language = navigator.language || navigator.userLanguage;
value = this.props.value || language;
}
const language = SettingsStore.getValue("language", null, /*excludeDefault:*/ true);
const value = this.props.value ?? language ?? navigator.language;
return (
<Dropdown

View File

@@ -107,14 +107,8 @@ export default class SpellCheckLanguagesDropdown extends React.Component<
// default value here too, otherwise we need to handle null / undefined;
// values between mounting and the initial value propagating
let language = SettingsStore.getValue("language", null, /*excludeDefault:*/ true);
let value: string | undefined;
if (language) {
value = this.props.value || language;
} else {
language = navigator.language || navigator.userLanguage;
value = this.props.value || language;
}
const language = SettingsStore.getValue("language", null, /*excludeDefault:*/ true);
const value = this.props.value ?? language ?? navigator.language;
return (
<Dropdown

View File

@@ -65,29 +65,6 @@ interface IState {
sidebarShown: boolean;
}
function getFullScreenElement(): Element | null {
return (
document.fullscreenElement ||
// moz omitted because firefox supports this unprefixed now (webkit here for safari)
document.webkitFullscreenElement ||
document.msFullscreenElement
);
}
function requestFullscreen(element: Element): void {
const method =
element.requestFullscreen ||
// moz omitted since firefox supports unprefixed now
element.webkitRequestFullScreen ||
element.msRequestFullscreen;
if (method) method.call(element);
}
function exitFullscreen(): void {
const exitMethod = document.exitFullscreen || document.webkitExitFullscreen || document.msExitFullscreen;
if (exitMethod) exitMethod.call(document);
}
export default class LegacyCallView extends React.Component<IProps, IState> {
private dispatcherRef?: string;
private contentWrapperRef = createRef<HTMLDivElement>();
@@ -119,8 +96,8 @@ export default class LegacyCallView extends React.Component<IProps, IState> {
}
public componentWillUnmount(): void {
if (getFullScreenElement()) {
exitFullscreen();
if (document.fullscreenElement) {
document.exitFullscreen();
}
document.removeEventListener("keydown", this.onNativeKeyDown);
@@ -159,9 +136,9 @@ export default class LegacyCallView extends React.Component<IProps, IState> {
return;
}
if (payload.fullscreen) {
requestFullscreen(this.contentWrapperRef.current);
} else if (getFullScreenElement()) {
exitFullscreen();
this.contentWrapperRef.current?.requestFullscreen();
} else if (document.fullscreenElement) {
document.exitFullscreen();
}
break;
}

View File

@@ -529,8 +529,7 @@ export async function getAllLanguagesWithLabels(): Promise<Language[]> {
export function getLanguagesFromBrowser(): readonly string[] {
if (navigator.languages && navigator.languages.length) return navigator.languages;
if (navigator.language) return [navigator.language];
return [navigator.userLanguage || "en"];
return [navigator.language ?? "en"];
}
export function getLanguageFromBrowser(): string {