initial compiling version

Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
Timo K
2025-08-27 15:06:14 +02:00
parent d9b6302bf7
commit 376a4b4e4a
2 changed files with 26 additions and 30 deletions

View File

@@ -41,7 +41,7 @@ import { ActiveCall } from "./InCallView";
import { MUTE_PARTICIPANT_COUNT, type MuteStates } from "./MuteStates";
import { useMediaDevices } from "../MediaDevicesContext";
import { useMatrixRTCSessionMemberships } from "../useMatrixRTCSessionMemberships";
import { enterRTCSession, leaveRTCSession } from "../rtcSessionHelpers";
import { leaveRTCSession } from "../rtcSessionHelpers";
import {
saveKeyForRoom,
useRoomEncryptionSystem,
@@ -90,7 +90,8 @@ interface Props {
skipLobby: UrlParams["skipLobby"];
header: HeaderStyle;
rtcSession: MatrixRTCSession;
isJoined: boolean;
joined: boolean;
setJoined: (value: boolean) => void;
muteStates: MuteStates;
widget: WidgetHelpers | null;
}
@@ -103,7 +104,8 @@ export const GroupCallView: FC<Props> = ({
skipLobby,
header,
rtcSession,
isJoined,
joined,
setJoined,
muteStates,
widget,
}) => {
@@ -213,12 +215,14 @@ export const GroupCallView: FC<Props> = ({
const enterRTCSessionOrError = useCallback(
async (rtcSession: MatrixRTCSession): Promise<void> => {
try {
await enterRTCSession(
rtcSession,
perParticipantE2EE,
useNewMembershipManager,
useExperimentalToDeviceTransport,
);
setJoined(true);
// TODO-MULTI-SFU what to do with error handling now that we don't use this function?
// await enterRTCSession(
// rtcSession,
// perParticipantE2EE,
// useNewMembershipManager,
// useExperimentalToDeviceTransport,
// );
} catch (e) {
if (e instanceof ElementCallError) {
setExternalError(e);
@@ -230,12 +234,9 @@ export const GroupCallView: FC<Props> = ({
setExternalError(error);
}
}
return Promise.resolve();
},
[
perParticipantE2EE,
useExperimentalToDeviceTransport,
useNewMembershipManager,
],
[setJoined],
);
useEffect(() => {
@@ -284,7 +285,7 @@ export const GroupCallView: FC<Props> = ({
const onJoin = (ev: CustomEvent<IWidgetApiRequest>): void => {
(async (): Promise<void> => {
await defaultDeviceSetup(ev.detail.data as unknown as JoinCallData);
await enterRTCSessionOrError(rtcSession);
setJoined(true);
widget.api.transport.reply(ev.detail, {});
})().catch((e) => {
logger.error("Error joining RTC session on preload", e);
@@ -296,11 +297,7 @@ export const GroupCallView: FC<Props> = ({
};
} else {
// No lobby and no preload: we enter the rtc session right away
(async (): Promise<void> => {
await enterRTCSessionOrError(rtcSession);
})().catch((e) => {
logger.error("Error joining RTC session immediately", e);
});
setJoined(true);
}
}
}, [
@@ -311,7 +308,7 @@ export const GroupCallView: FC<Props> = ({
perParticipantE2EE,
mediaDevices,
latestMuteStates,
enterRTCSessionOrError,
setJoined,
useNewMembershipManager,
]);
@@ -373,7 +370,7 @@ export const GroupCallView: FC<Props> = ({
);
useEffect(() => {
if (widget && isJoined) {
if (widget && joined) {
// set widget to sticky once joined.
widget.api.setAlwaysOnScreen(true).catch((e) => {
logger.error("Error calling setAlwaysOnScreen(true)", e);
@@ -391,7 +388,7 @@ export const GroupCallView: FC<Props> = ({
widget.lazyActions.off(ElementWidgetActions.HangupCall, onHangup);
};
}
}, [widget, isJoined, rtcSession]);
}, [widget, joined, rtcSession]);
const joinRule = useJoinRule(room);
@@ -426,7 +423,7 @@ export const GroupCallView: FC<Props> = ({
client={client}
matrixInfo={matrixInfo}
muteStates={muteStates}
onEnter={() => void enterRTCSessionOrError(rtcSession)}
onEnter={() => setJoined(true)}
confineToRoom={confineToRoom}
hideHeader={header === HeaderStyle.None}
participantCount={participantCount}
@@ -444,7 +441,7 @@ export const GroupCallView: FC<Props> = ({
throw externalError;
};
body = <ErrorComponent />;
} else if (isJoined) {
} else if (joined) {
body = (
<>
{shareModal}

View File

@@ -61,10 +61,8 @@ export const RoomPage: FC = () => {
const { avatarUrl, displayName: userDisplayName } = useProfile(client);
const groupCallState = useLoadGroupCall(client, roomIdOrAlias, viaServers);
const isJoined = useMatrixRTCSessionJoinState(
groupCallState.kind === "loaded" ? groupCallState.rtcSession : undefined,
);
const muteStates = useMuteStates(isJoined);
const [joined, setJoined] = useState(false);
const muteStates = useMuteStates(joined);
useEffect(() => {
// If we've finished loading, are not already authed and we've been given a display name as
@@ -109,7 +107,8 @@ export const RoomPage: FC = () => {
widget={widget}
client={client!}
rtcSession={groupCallState.rtcSession}
isJoined={isJoined}
joined={joined}
setJoined={setJoined}
isPasswordlessUser={passwordlessUser}
confineToRoom={confineToRoom}
preload={preload}