* 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 * Developer setting to show non-member tiles This is based on top of https://github.com/element-hq/element-call/pull/2701 * Lint * Remove unused code * Remove changes that should be in https://github.com/element-hq/element-call/pull/2858 * Update src/state/CallViewModel.test.ts Co-authored-by: Robin <robin@robin.town> * Merge branch 'livekit' into toger5/show-non-member-tiles * Remove unused nonMemberItemCount * Restore default showNonMemberTiles value after test * Update comments --------- Co-authored-by: Timo <toger5@hotmail.de> Co-authored-by: Timo <16718859+toger5@users.noreply.github.com> Co-authored-by: Robin <robin@robin.town>
109 lines
3.0 KiB
TypeScript
109 lines
3.0 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.
|
|
*/
|
|
|
|
import { type ChangeEvent, type FC, useCallback } from "react";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
import { FieldRow, InputField } from "../input/Input";
|
|
import {
|
|
useSetting,
|
|
duplicateTiles as duplicateTilesSetting,
|
|
debugTileLayout as debugTileLayoutSetting,
|
|
showNonMemberTiles as showNonMemberTilesSetting,
|
|
} from "./settings";
|
|
import type { MatrixClient } from "matrix-js-sdk/src/client";
|
|
|
|
interface Props {
|
|
client: MatrixClient;
|
|
}
|
|
|
|
export const DeveloperSettingsTab: FC<Props> = ({ client }) => {
|
|
const { t } = useTranslation();
|
|
const [duplicateTiles, setDuplicateTiles] = useSetting(duplicateTilesSetting);
|
|
const [debugTileLayout, setDebugTileLayout] = useSetting(
|
|
debugTileLayoutSetting,
|
|
);
|
|
const [showNonMemberTiles, setShowNonMemberTiles] = useSetting(
|
|
showNonMemberTilesSetting,
|
|
);
|
|
|
|
return (
|
|
<>
|
|
<p>
|
|
{t("developer_mode.hostname", {
|
|
hostname: window.location.hostname || "unknown",
|
|
})}
|
|
</p>
|
|
<p>
|
|
{t("version", {
|
|
productName: import.meta.env.VITE_PRODUCT_NAME || "Element Call",
|
|
version: import.meta.env.VITE_APP_VERSION || "dev",
|
|
})}
|
|
</p>
|
|
<p>
|
|
{t("developer_mode.crypto_version", {
|
|
version: client.getCrypto()?.getVersion() || "unknown",
|
|
})}
|
|
</p>
|
|
<p>
|
|
{t("developer_mode.matrix_id", {
|
|
id: client.getUserId() || "unknown",
|
|
})}
|
|
</p>
|
|
<p>
|
|
{t("developer_mode.device_id", {
|
|
id: client.getDeviceId() || "unknown",
|
|
})}
|
|
</p>
|
|
<FieldRow>
|
|
<InputField
|
|
id="duplicateTiles"
|
|
type="number"
|
|
label={t("developer_mode.duplicate_tiles_label")}
|
|
value={duplicateTiles.toString()}
|
|
min={0}
|
|
onChange={useCallback(
|
|
(event: ChangeEvent<HTMLInputElement>): void => {
|
|
const value = event.target.valueAsNumber;
|
|
if (value < 0) {
|
|
return;
|
|
}
|
|
setDuplicateTiles(Number.isNaN(value) ? 0 : value);
|
|
},
|
|
[setDuplicateTiles],
|
|
)}
|
|
/>
|
|
</FieldRow>
|
|
<FieldRow>
|
|
<InputField
|
|
id="debugTileLayout"
|
|
type="checkbox"
|
|
checked={debugTileLayout}
|
|
label={t("developer_mode.debug_tile_layout_label")}
|
|
onChange={(event: ChangeEvent<HTMLInputElement>): void =>
|
|
setDebugTileLayout(event.target.checked)
|
|
}
|
|
/>
|
|
</FieldRow>
|
|
<FieldRow>
|
|
<InputField
|
|
id="showNonMemberTiles"
|
|
type="checkbox"
|
|
label={t("developer_mode.show_non_member_tiles")}
|
|
checked={!!showNonMemberTiles}
|
|
onChange={useCallback(
|
|
(event: ChangeEvent<HTMLInputElement>): void => {
|
|
setShowNonMemberTiles(event.target.checked);
|
|
},
|
|
[setShowNonMemberTiles],
|
|
)}
|
|
/>
|
|
</FieldRow>
|
|
</>
|
|
);
|
|
};
|