refactor: Introduce specific ElementCall error type with code

This commit is contained in:
Valere
2025-02-26 14:53:15 +01:00
parent 31577d7263
commit 7423dfa527
3 changed files with 36 additions and 3 deletions

View File

@@ -44,7 +44,7 @@ import { CallEndedView } from "./CallEndedView";
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
import { useProfile } from "../profile/useProfile";
import { findDeviceByName } from "../utils/media";
import { ActiveCall, ConnectionLostError } from "./InCallView";
import { ActiveCall } from "./InCallView";
import { MUTE_PARTICIPANT_COUNT, type MuteStates } from "./MuteStates";
import { useMediaDevices } from "../livekit/MediaDevicesContext";
import { useMatrixRTCSessionMemberships } from "../useMatrixRTCSessionMemberships";
@@ -61,6 +61,7 @@ import { callEventAudioSounds } from "./CallEventAudioRenderer";
import { useLatest } from "../useLatest";
import { usePageTitle } from "../usePageTitle";
import { ErrorView } from "../ErrorView";
import { ConnectionLostError, ElementCallError } from "../utils/ec-errors.ts";
declare global {
interface Window {

View File

@@ -97,13 +97,12 @@ import {
useSetting,
} from "../settings/settings";
import { ReactionsReader } from "../reactions/ReactionsReader";
import { ConnectionLostError } from "../utils/ec-errors.ts";
const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {});
const maxTapDurationMs = 400;
export class ConnectionLostError extends Error {}
export interface ActiveCallProps
extends Omit<InCallViewProps, "vm" | "livekitRoom" | "connState"> {
e2eeSystem: EncryptionSystem;

33
src/utils/ec-errors.ts Normal file
View File

@@ -0,0 +1,33 @@
/*
Copyright 2025 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details.
*/
export enum ErrorCode {
/**
* Configuration problem due to no MatrixRTC backend/SFU is exposed via .well-known and no fallback configured.
*/
MISSING_LIVE_KIT_SERVICE_URL = "MISSING_LIVE_KIT_SERVICE_URL",
CONNECTION_LOST_ERROR = "CONNECTION_LOST_ERROR",
UNKNOWN_ERROR = "UNKNOWN_ERROR",
}
/**
* Structure for errors that occur when using ElementCall.
*/
export class ElementCallError extends Error {
public code: ErrorCode;
public constructor(message: string, code: ErrorCode) {
super(message);
this.code = code;
}
}
export class ConnectionLostError extends ElementCallError {
public constructor() {
super("Connection lost", ErrorCode.CONNECTION_LOST_ERROR);
}
}