mirror of
https://github.com/vector-im/element-call.git
synced 2026-02-02 04:05:56 +00:00
* make tiles based on rtc member
* display missing lk participant + fix tile multiplier
* add show_non_member_participants config option
* per member tiles
* merge fixes
* linter
* linter and tests
* tests
* adapt tests (wip)
* Remove unused keys
* Fix optionality of nonMemberItemCount
* video is optional
* Mock RTC members
* Lint
* Merge fixes
* Fix user id
* Add explicit types for public fields
* isRTCParticipantAvailable => isLiveKitParticipantAvailable
* isLiveKitParticipantAvailable
* Readonly
* More keys removal
* Make local field based on view model class not observable
* Wording
* Fix RTC members in tes
* Tests again
* Lint
* Disable showing non-member tiles by default
* Duplicate screen sharing tiles like we used to
* Lint
* Revert function reordering
* Remove throttleTime from bad merge
* Cleanup
* Tidy config of show non-member settings
* tidy up handling of local rtc member in tests
* tidy up test init
* Fix mocks
* Cleanup
* Apply local override where participant not yet known
* Handle no visible media id
* Assertions for one-on-one view
* Remove isLiveKitParticipantAvailable and show via encryption status
* Handle no local media (yet)
* Remove unused effect for setting
* Tidy settings
* Avoid case of one-to-one layout with missing local or remote
* Iterate
* Remove option to show non-member tiles to simplify code review
* Remove unused code
* Remove more remnants of show-non-member-tiles
* iterate
* back
* Fix unit test
* Refactor
* Expose TestScheduler as global
* Fix incorrect type assertion
* Simplify speaking observer
* Fix
* Whitespace
* Make it clear that we are mocking MatrixRTC memberships
* Test case for only showing tiles for MatrixRTC session members
* Simplify diff
* Simplify diff
These changes are in https://github.com/element-hq/element-call/pull/2809
* .
* Whitespaces
* Use asObservable when exposing subject
* Show "waiting for media..." when no participant
* Additional test case
* Don't show "waiting for media..." in case of local participant
* Make the loading state more subtle
- instead of a label we show a animated gradient
* Use correct key for matrix rtc foci in code comment. (#2838)
* Update src/tile/SpotlightTile.tsx
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>
* Update src/state/CallViewModel.ts
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>
* Make the purpose of BaseMediaViewModel.local explicit
* Use named object instead of unnamed array for spotlightAndPip
* Refactor spotlightAndPip into spotlight and pip
* Use if statement instead of ternary for readability in spotlight and pip logic
* Review feedback
* Fix tests for CallEventAudioRenderer
* Lint
* Revert "Make the loading state more subtle"
This reverts commit 765f7b4f31.
* Update src/state/CallViewModel.ts
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>
* Fix spelling
* Remove a non-null assertion that failed at runtime
---------
Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com>
158 lines
4.2 KiB
TypeScript
158 lines
4.2 KiB
TypeScript
/*
|
|
Copyright 2022-2024 New Vector Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
export interface ConfigOptions {
|
|
/**
|
|
* The Posthog endpoint to which analytics data will be sent.
|
|
*/
|
|
posthog?: {
|
|
api_key: string;
|
|
api_host: string;
|
|
};
|
|
/**
|
|
* The Sentry endpoint to which crash data will be sent.
|
|
*/
|
|
sentry?: {
|
|
DSN: string;
|
|
environment: string;
|
|
};
|
|
/**
|
|
* The rageshake server to which feedback and debug logs will be sent.
|
|
*/
|
|
rageshake?: {
|
|
submit_url: string;
|
|
};
|
|
|
|
/**
|
|
* Sets the URL to send opentelemetry data to. If unset, opentelemetry will
|
|
* be disabled.
|
|
*/
|
|
opentelemetry?: {
|
|
collector_url: string;
|
|
};
|
|
|
|
// Describes the default homeserver to use. The same format as Element Web
|
|
// (without identity servers as we don't use them).
|
|
default_server_config?: {
|
|
["m.homeserver"]: {
|
|
base_url: string;
|
|
server_name: string;
|
|
};
|
|
};
|
|
|
|
// Describes the LiveKit configuration to be used.
|
|
livekit?: {
|
|
// The link to the service that returns a livekit url and token to use it.
|
|
// This is a fallback link in case the homeserver in use does not advertise
|
|
// a livekit service url in the client well-known.
|
|
// The well known needs to be formatted like so:
|
|
// {"type":"livekit", "livekit_service_url":"https://livekit.example.com"}
|
|
// and stored under the key: "org.matrix.msc4143.rtc_foci"
|
|
livekit_service_url: string;
|
|
};
|
|
|
|
/**
|
|
* TEMPORARY experimental features.
|
|
*/
|
|
features?: {
|
|
/**
|
|
* Allow to join group calls without audio and video.
|
|
*/
|
|
feature_group_calls_without_video_and_audio?: boolean;
|
|
/**
|
|
* Send device-specific call session membership state events instead of
|
|
* legacy user-specific call membership state events.
|
|
* This setting has no effect when the user joins an active call with
|
|
* legacy state events. For compatibility, Element Call will always join
|
|
* active legacy calls with legacy state events.
|
|
*/
|
|
feature_use_device_session_member_events?: boolean;
|
|
};
|
|
|
|
/**
|
|
* A link to the end-user license agreement (EULA)
|
|
*/
|
|
eula: string;
|
|
|
|
media_devices?: {
|
|
/**
|
|
* Defines whether participants should start with audio enabled by default.
|
|
*/
|
|
enable_audio?: boolean;
|
|
/**
|
|
* Defines whether participants should start with video enabled by default.
|
|
*/
|
|
enable_video?: boolean;
|
|
};
|
|
|
|
/**
|
|
* Whether upon entering a room, the user should be prompted to launch the
|
|
* native mobile app. (Affects only Android and iOS.)
|
|
*
|
|
* Note that this can additionally be disabled by the app's URL parameters.
|
|
*/
|
|
app_prompt?: boolean;
|
|
|
|
/**
|
|
* These are low level options that are used to configure the MatrixRTC session.
|
|
* Take care when changing these options.
|
|
*/
|
|
matrix_rtc_session?: {
|
|
/**
|
|
* How long (in milliseconds) to wait before rotating end-to-end media encryption keys
|
|
* when someone leaves a call.
|
|
*/
|
|
key_rotation_on_leave_delay?: number;
|
|
|
|
/**
|
|
* How often (in milliseconds) keep-alive messages should be sent to the server for
|
|
* the MatrixRTC membership event.
|
|
*/
|
|
membership_keep_alive_period?: number;
|
|
|
|
/**
|
|
* How long (in milliseconds) after the last keep-alive the server should expire the
|
|
* MatrixRTC membership event.
|
|
*/
|
|
membership_server_side_expiry_timeout?: number;
|
|
};
|
|
}
|
|
|
|
// Overrides members from ConfigOptions that are always provided by the
|
|
// default config and are therefore non-optional.
|
|
export interface ResolvedConfigOptions extends ConfigOptions {
|
|
default_server_config: {
|
|
["m.homeserver"]: {
|
|
base_url: string;
|
|
server_name: string;
|
|
};
|
|
};
|
|
media_devices: {
|
|
enable_audio: boolean;
|
|
enable_video: boolean;
|
|
};
|
|
app_prompt: boolean;
|
|
}
|
|
|
|
export const DEFAULT_CONFIG: ResolvedConfigOptions = {
|
|
default_server_config: {
|
|
["m.homeserver"]: {
|
|
base_url: "http://localhost:8008",
|
|
server_name: "localhost",
|
|
},
|
|
},
|
|
features: {
|
|
feature_use_device_session_member_events: true,
|
|
},
|
|
eula: "https://static.element.io/legal/online-EULA.pdf",
|
|
media_devices: {
|
|
enable_audio: true,
|
|
enable_video: true,
|
|
},
|
|
app_prompt: true,
|
|
};
|