diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 3ef03c68..5e979883 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -1,17 +1,8 @@
const COPYRIGHT_HEADER = `/*
-Copyright %%CURRENT_YEAR%% New Vector Ltd
+Copyright %%CURRENT_YEAR%% New Vector Ltd.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+SPDX-License-Identifier: AGPL-3.0-only
+Please see LICENSE in the repository root for full details.
*/
`;
diff --git a/.github/workflows/element-call.yaml b/.github/workflows/element-call.yaml
index c6485e7f..d41df03b 100644
--- a/.github/workflows/element-call.yaml
+++ b/.github/workflows/element-call.yaml
@@ -39,7 +39,7 @@ jobs:
VITE_APP_VERSION: ${{ inputs.vite_app_version }}
NODE_OPTIONS: "--max-old-space-size=4096"
- name: Upload Artifact
- uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4
+ uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4
with:
name: build-output
path: dist
diff --git a/.github/workflows/translations-download.yaml b/.github/workflows/translations-download.yaml
index 42a1cc69..8bcc5181 100644
--- a/.github/workflows/translations-download.yaml
+++ b/.github/workflows/translations-download.yaml
@@ -39,7 +39,7 @@ jobs:
- name: Create Pull Request
id: cpr
- uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
+ uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2
with:
token: ${{ secrets.ELEMENT_BOT_TOKEN }}
branch: actions/localazy-download
diff --git a/package.json b/package.json
index bce1ead7..d268d19c 100644
--- a/package.json
+++ b/package.json
@@ -83,7 +83,7 @@
"livekit-client": "^2.0.2",
"lodash": "^4.17.21",
"loglevel": "^1.9.1",
- "matrix-js-sdk": "matrix-org/matrix-js-sdk#169e8f86139111574a3738f8557c6fa4b2a199db",
+ "matrix-js-sdk": "matrix-org/matrix-js-sdk#414ac9d8cc28330718236b90ad67a1507e146932",
"matrix-widget-api": "^1.8.2",
"normalize.css": "^8.0.1",
"observable-hooks": "^4.2.3",
@@ -110,5 +110,8 @@
"vite-plugin-svgr": "^4.0.0",
"vitest": "^2.0.0",
"vitest-axe": "^1.0.0-pre.3"
+ },
+ "resolutions": {
+ "strip-ansi": "6.0.1"
}
}
diff --git a/src/analytics/AnalyticsNotice.tsx b/src/analytics/AnalyticsNotice.tsx
index 8df2d742..9ba78f0d 100644
--- a/src/analytics/AnalyticsNotice.tsx
+++ b/src/analytics/AnalyticsNotice.tsx
@@ -8,14 +8,20 @@ Please see LICENSE in the repository root for full details.
import { FC } from "react";
import { Trans } from "react-i18next";
-import { Link } from "../typography/Typography";
+import { ExternalLink } from "../button/Link";
export const AnalyticsNotice: FC = () => (
By participating in this beta, you consent to the collection of anonymous
data, which we use to improve the product. You can find more information
about which data we track in our{" "}
- Privacy Policy and our{" "}
- Cookie Policy.
+
+ Privacy Policy
+ {" "}
+ and our{" "}
+
+ Cookie Policy
+
+ .
);
diff --git a/src/auth/RegisterPage.tsx b/src/auth/RegisterPage.tsx
index 5ee1c9eb..392f8a7a 100644
--- a/src/auth/RegisterPage.tsx
+++ b/src/auth/RegisterPage.tsx
@@ -19,7 +19,7 @@ import { captureException } from "@sentry/react";
import { sleep } from "matrix-js-sdk/src/utils";
import { Trans, useTranslation } from "react-i18next";
import { logger } from "matrix-js-sdk/src/logger";
-import { Button } from "@vector-im/compound-web";
+import { Button, Text } from "@vector-im/compound-web";
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
import { useClientLegacy } from "../ClientContext";
@@ -28,10 +28,10 @@ import styles from "./LoginPage.module.css";
import Logo from "../icons/LogoLarge.svg?react";
import { LoadingView } from "../FullScreenView";
import { useRecaptcha } from "./useRecaptcha";
-import { Caption, Link } from "../typography/Typography";
import { usePageTitle } from "../usePageTitle";
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
import { Config } from "../config/Config";
+import { ExternalLink, Link } from "../button/Link";
export const RegisterPage: FC = () => {
const { t } = useTranslation();
@@ -201,24 +201,24 @@ export const RegisterPage: FC = () => {
data-testid="register_confirm_password"
/>
-
+
This site is protected by ReCAPTCHA and the Google{" "}
-
+
Privacy Policy
- {" "}
+ {" "}
and{" "}
-
+
Terms of Service
- {" "}
+ {" "}
apply.
By clicking "Register", you agree to our{" "}
-
+
End User Licensing Agreement (EULA)
-
+
-
+
{error && (
diff --git a/src/button/Link.module.css b/src/button/Link.module.css
new file mode 100644
index 00000000..6248bc40
--- /dev/null
+++ b/src/button/Link.module.css
@@ -0,0 +1,13 @@
+/*
+Copyright 2024 New Vector Ltd.
+
+SPDX-License-Identifier: AGPL-3.0-only
+Please see LICENSE in the repository root for full details.
+*/
+
+.external {
+ /* By default links will be blue/purple (or whatever the user agent does), but
+ in our designs we generally want external links to be the same color as the
+ surrounding text */
+ color: inherit;
+}
diff --git a/src/button/Link.tsx b/src/button/Link.tsx
index 35c9af98..68c4dd13 100644
--- a/src/button/Link.tsx
+++ b/src/button/Link.tsx
@@ -15,10 +15,16 @@ import {
import { Link as CpdLink } from "@vector-im/compound-web";
import { useHistory } from "react-router-dom";
import { createPath, LocationDescriptor, Path } from "history";
+import classNames from "classnames";
+
+import { useLatest } from "../useLatest";
+import styles from "./Link.module.css";
export function useLink(
to: LocationDescriptor,
+ state?: unknown,
): [Path, (e: MouseEvent) => void] {
+ const latestState = useLatest(state);
const history = useHistory();
const path = useMemo(
() => (typeof to === "string" ? to : createPath(to)),
@@ -27,9 +33,9 @@ export function useLink(
const onClick = useCallback(
(e: MouseEvent) => {
e.preventDefault();
- history.push(to);
+ history.push(to, latestState.current);
},
- [history, to],
+ [history, to, latestState],
);
return [path, onClick];
@@ -38,15 +44,37 @@ export function useLink(
type Props = Omit<
ComponentPropsWithoutRef,
"href" | "onClick"
-> & { to: LocationDescriptor };
+> & { to: LocationDescriptor; state?: unknown };
/**
* A version of Compound's link component that integrates with our router setup.
+ * This is only for app-internal links.
*/
export const Link = forwardRef(function Link(
- { to, ...props },
+ { to, state, ...props },
ref,
) {
- const [path, onClick] = useLink(to);
+ const [path, onClick] = useLink(to, state);
return ;
});
+
+/**
+ * A link to an external web page, made to fit into blocks of text more subtly
+ * than the normal Compound link component.
+ */
+export const ExternalLink = forwardRef<
+ HTMLAnchorElement,
+ ComponentPropsWithoutRef<"a">
+>(function ExternalLink({ className, children, ...props }, ref) {
+ return (
+
+ {children}
+
+ );
+});
diff --git a/src/home/CallList.module.css b/src/home/CallList.module.css
index 8e988d03..faa5bf2d 100644
--- a/src/home/CallList.module.css
+++ b/src/home/CallList.module.css
@@ -50,6 +50,12 @@ Please see LICENSE in the repository root for full details.
margin-bottom: 0;
}
+.callName {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
.facePile {
margin-top: 8px;
}
@@ -64,3 +70,8 @@ Please see LICENSE in the repository root for full details.
justify-content: center;
margin-bottom: 24px;
}
+
+.disabled {
+ cursor: not-allowed;
+ opacity: 0.8;
+}
diff --git a/src/home/CallList.tsx b/src/home/CallList.tsx
index aa6db6f3..72b7356a 100644
--- a/src/home/CallList.tsx
+++ b/src/home/CallList.tsx
@@ -9,12 +9,15 @@ import { Link } from "react-router-dom";
import { MatrixClient } from "matrix-js-sdk/src/client";
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
import { Room } from "matrix-js-sdk/src/models/room";
-import { FC } from "react";
+import { FC, useCallback, MouseEvent, useState } from "react";
+import { useTranslation } from "react-i18next";
+import { IconButton, Text } from "@vector-im/compound-web";
+import { CloseIcon } from "@vector-im/compound-design-tokens/assets/web/icons";
+import classNames from "classnames";
import { Avatar, Size } from "../Avatar";
import styles from "./CallList.module.css";
import { getRelativeRoomUrl } from "../utils/matrix";
-import { Body } from "../typography/Typography";
import { GroupCallRoom } from "./useGroupCallRooms";
import { useRoomEncryptionSystem } from "../e2ee/sharedKeyManagement";
@@ -55,22 +58,53 @@ interface CallTileProps {
client: MatrixClient;
}
-const CallTile: FC = ({ name, avatarUrl, room }) => {
+const CallTile: FC = ({ name, avatarUrl, room, client }) => {
+ const { t } = useTranslation();
const roomEncryptionSystem = useRoomEncryptionSystem(room.roomId);
+ const [isLeaving, setIsLeaving] = useState(false);
+
+ const onRemove = useCallback(
+ (e: MouseEvent) => {
+ e.stopPropagation();
+ e.preventDefault();
+ setIsLeaving(true);
+ client.leave(room.roomId).catch(() => setIsLeaving(false));
+ },
+ [room, client],
+ );
+
+ const body = (
+ <>
+
+
+
+ {name}
+
+
+
+
+
+ >
+ );
+
return (
-
-
-
-
- {name}
-
-
-
-
+ {isLeaving ? (
+
+ {body}
+
+ ) : (
+
+ {body}
+
+ )}
);
};
diff --git a/src/home/RegisteredView.tsx b/src/home/RegisteredView.tsx
index 34abe113..db242414 100644
--- a/src/home/RegisteredView.tsx
+++ b/src/home/RegisteredView.tsx
@@ -9,7 +9,7 @@ import { useState, useCallback, FormEvent, FormEventHandler, FC } from "react";
import { useHistory } from "react-router-dom";
import { MatrixClient } from "matrix-js-sdk/src/client";
import { useTranslation } from "react-i18next";
-import { Heading } from "@vector-im/compound-web";
+import { Heading, Text } from "@vector-im/compound-web";
import { logger } from "matrix-js-sdk/src/logger";
import { Button } from "@vector-im/compound-web";
@@ -27,7 +27,6 @@ import { FieldRow, InputField, ErrorMessage } from "../input/Input";
import { CallList } from "./CallList";
import { UserMenuContainer } from "../UserMenuContainer";
import { JoinExistingCallModal } from "./JoinExistingCallModal";
-import { Caption } from "../typography/Typography";
import { Form } from "../form/Form";
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
import { E2eeType } from "../e2ee/e2eeType";
@@ -144,9 +143,9 @@ export const RegisteredView: FC = ({ client }) => {
{optInAnalytics === null && (
-
+
-
+
)}
{error && (
diff --git a/src/home/UnauthenticatedView.tsx b/src/home/UnauthenticatedView.tsx
index a1ea8514..daafa9f8 100644
--- a/src/home/UnauthenticatedView.tsx
+++ b/src/home/UnauthenticatedView.tsx
@@ -9,7 +9,7 @@ import { FC, useCallback, useState, FormEventHandler } from "react";
import { useHistory } from "react-router-dom";
import { randomString } from "matrix-js-sdk/src/randomstring";
import { Trans, useTranslation } from "react-i18next";
-import { Button, Heading } from "@vector-im/compound-web";
+import { Button, Heading, Text } from "@vector-im/compound-web";
import { logger } from "matrix-js-sdk/src/logger";
import { useClient } from "../ClientContext";
@@ -25,7 +25,6 @@ import {
import { useInteractiveRegistration } from "../auth/useInteractiveRegistration";
import { JoinExistingCallModal } from "./JoinExistingCallModal";
import { useRecaptcha } from "../auth/useRecaptcha";
-import { Body, Caption, Link } from "../typography/Typography";
import { Form } from "../form/Form";
import styles from "./UnauthenticatedView.module.css";
import commonStyles from "./common.module.css";
@@ -34,6 +33,7 @@ import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
import { Config } from "../config/Config";
import { E2eeType } from "../e2ee/e2eeType";
import { useOptInAnalytics } from "../settings/settings";
+import { ExternalLink, Link } from "../button/Link";
export const UnauthenticatedView: FC = () => {
const { setClient } = useClient();
@@ -178,18 +178,18 @@ export const UnauthenticatedView: FC = () => {
/>
{optInAnalytics === null && (
-
+
-
+
)}
-
+
By clicking "Go", you agree to our{" "}
-
+
End User Licensing Agreement (EULA)
-
+
-
+
{error && (
@@ -207,19 +207,19 @@ export const UnauthenticatedView: FC = () => {
-
-
+
+
{t("unauthenticated_view_login_button")}
-
-
+
+
Not registered yet?{" "}
-
+
Create an account
-
+
{onFinished && (
diff --git a/src/index.css b/src/index.css
index b416dcca..02f335f9 100644
--- a/src/index.css
+++ b/src/index.css
@@ -237,16 +237,6 @@ body[data-platform="desktop"] {
line-height: var(--font-size-title);
}
- a {
- color: var(--cpd-color-text-action-accent);
- text-decoration: none;
- }
-
- a:hover,
- a:active {
- opacity: 0.8;
- }
-
hr {
width: calc(100% - 24px);
border: none;
diff --git a/src/main.tsx b/src/main.tsx
index b3e10985..f847e21a 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -18,7 +18,7 @@ import "./index.css";
import { logger } from "matrix-js-sdk/src/logger";
import {
setLogExtension as setLKLogExtension,
- setLogLevel,
+ setLogLevel as setLKLogLevel,
} from "livekit-client";
import { App } from "./App";
@@ -28,9 +28,11 @@ import { Initializer } from "./initializer";
initRageshake().catch((e) => {
logger.error("Failed to initialize rageshake", e);
});
-
-setLogLevel("debug");
-setLKLogExtension(global.mx_rage_logger.log);
+setLKLogLevel("debug");
+setLKLogExtension((level, msg, context) => {
+ // we pass a synthetic logger name of "livekit" to the rageshake to make it easier to read
+ global.mx_rage_logger.log(level, "livekit", msg, context);
+});
logger.info(`Element Call ${import.meta.env.VITE_APP_VERSION || "dev"}`);
diff --git a/src/room/CallEndedView.tsx b/src/room/CallEndedView.tsx
index 296bf2fb..556dc6e5 100644
--- a/src/room/CallEndedView.tsx
+++ b/src/room/CallEndedView.tsx
@@ -9,12 +9,11 @@ import { FC, FormEventHandler, ReactNode, useCallback, useState } from "react";
import { MatrixClient } from "matrix-js-sdk/src/client";
import { Trans, useTranslation } from "react-i18next";
import { useHistory } from "react-router-dom";
-import { Button } from "@vector-im/compound-web";
+import { Button, Heading, Text } from "@vector-im/compound-web";
import styles from "./CallEndedView.module.css";
import feedbackStyle from "../input/FeedbackInput.module.css";
import { useProfile } from "../profile/useProfile";
-import { Body, Headline } from "../typography/Typography";
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
import { FieldRow, InputField } from "../input/Input";
@@ -139,11 +138,11 @@ export const CallEndedView: FC = ({
return (
<>
-
+
You were disconnected from the call
-
+
{t("call_ended_view.reconnect_button")}
@@ -154,9 +153,9 @@ export const CallEndedView: FC = ({
{!confineToRoom && (
-
+
{t("return_home_button")}
-
+
)}
>
);
@@ -164,7 +163,7 @@ export const CallEndedView: FC = ({
return (
<>
-
+
{surveySubmitted
? t("call_ended_view.headline", {
displayName,
@@ -174,16 +173,16 @@ export const CallEndedView: FC = ({
}) +
"\n" +
t("call_ended_view.survey_prompt")}
-
+
{(!surveySubmitted || confineToRoom) &&
PosthogAnalytics.instance.isEnabled()
? qualitySurveyDialog
: createAccountDialog}
{!confineToRoom && (
-
+
{t("call_ended_view.not_now_button")}
-
+
)}
>
);
diff --git a/src/room/GroupCallLoader.tsx b/src/room/GroupCallLoader.tsx
index 36bdcc4c..f843f3f4 100644
--- a/src/room/GroupCallLoader.tsx
+++ b/src/room/GroupCallLoader.tsx
@@ -5,13 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
-import { useCallback } from "react";
import { MatrixClient } from "matrix-js-sdk/src/client";
import { useTranslation } from "react-i18next";
import { MatrixError } from "matrix-js-sdk/src/matrix";
-import { useHistory } from "react-router-dom";
-import { Heading, Link, Text } from "@vector-im/compound-web";
+import { Heading, Text } from "@vector-im/compound-web";
+import { Link } from "../button/Link";
import {
useLoadGroupCall,
GroupCallStatus,
@@ -35,15 +34,6 @@ export function GroupCallLoader({
const { t } = useTranslation();
const groupCallState = useLoadGroupCall(client, roomIdOrAlias, viaServers);
- const history = useHistory();
- const onHomeClick = useCallback(
- (ev: React.MouseEvent) => {
- ev.preventDefault();
- history.push("/");
- },
- [history],
- );
-
switch (groupCallState.kind) {
case "loaded":
case "waitForInvite":
@@ -63,9 +53,7 @@ export function GroupCallLoader({
{t("group_call_loader.failed_text")}
{/* XXX: A 'create it for me' button would be the obvious UX here. Two screens already have
dupes of this flow, let's make a common component and put it here. */}
-
- {t("common.home")}
-
+ {t("common.home")}
);
} else if (groupCallState.error instanceof CallTerminatedMessage) {
@@ -79,9 +67,7 @@ export function GroupCallLoader({
"{groupCallState.error.reason}"
>
)}
-
- {t("common.home")}
-
+ {t("common.home")}
);
} else {
diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx
index f1986d4b..6892262b 100644
--- a/src/room/GroupCallView.tsx
+++ b/src/room/GroupCallView.tsx
@@ -15,7 +15,7 @@ import {
import { logger } from "matrix-js-sdk/src/logger";
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
import { JoinRule } from "matrix-js-sdk/src/matrix";
-import { Heading, Link, Text } from "@vector-im/compound-web";
+import { Heading, Text } from "@vector-im/compound-web";
import { useTranslation } from "react-i18next";
import type { IWidgetApiRequest } from "matrix-widget-api";
@@ -40,6 +40,7 @@ import { useJoinRule } from "./useJoinRule";
import { InviteModal } from "./InviteModal";
import { useUrlParams } from "../UrlParams";
import { E2eeType } from "../e2ee/e2eeType";
+import { Link } from "../button/Link";
declare global {
interface Window {
@@ -85,6 +86,14 @@ export const GroupCallView: FC = ({
};
}, [rtcSession]);
+ useEffect(() => {
+ // Sanity check the room object
+ if (client.getRoom(rtcSession.room.roomId) !== rtcSession.room)
+ logger.warn(
+ `We've ended up with multiple rooms for the same ID (${rtcSession.room.roomId}). This indicates a bug in the group call loading code, and may lead to incomplete room state.`,
+ );
+ }, [client, rtcSession.room]);
+
const { displayName, avatarUrl } = useProfile(client);
const roomName = useRoomName(rtcSession.room);
const roomAvatar = useRoomAvatar(rtcSession.room);
@@ -273,14 +282,6 @@ export const GroupCallView: FC = ({
);
const onShareClick = joinRule === JoinRule.Public ? onShareClickFn : null;
- const onHomeClick = useCallback(
- (ev: React.MouseEvent) => {
- ev.preventDefault();
- history.push("/");
- },
- [history],
- );
-
const { t } = useTranslation();
if (!isE2EESupportedBrowser() && e2eeSystem.kind !== E2eeType.NONE) {
@@ -289,9 +290,7 @@ export const GroupCallView: FC = ({
{t("browser_media_e2ee_unsupported_heading")}
{t("browser_media_e2ee_unsupported")}
-
- {t("common.home")}
-
+ {t("common.home")}
);
}
diff --git a/src/room/RageshakeRequestModal.tsx b/src/room/RageshakeRequestModal.tsx
index 03b0c1c0..d22b0bea 100644
--- a/src/room/RageshakeRequestModal.tsx
+++ b/src/room/RageshakeRequestModal.tsx
@@ -7,12 +7,11 @@ Please see LICENSE in the repository root for full details.
import { FC, useEffect } from "react";
import { useTranslation } from "react-i18next";
-import { Button } from "@vector-im/compound-web";
+import { Button, Text } from "@vector-im/compound-web";
import { Modal, Props as ModalProps } from "../Modal";
import { FieldRow, ErrorMessage } from "../input/Input";
import { useSubmitRageshake } from "../settings/submit-rageshake";
-import { Body } from "../typography/Typography";
interface Props extends Omit {
rageshakeRequestId: string;
@@ -40,7 +39,7 @@ export const RageshakeRequestModal: FC = ({
open={open}
onDismiss={onDismiss}
>
- {t("rageshake_request_modal.body")}
+ {t("rageshake_request_modal.body")}
diff --git a/src/room/RoomAuthView.tsx b/src/room/RoomAuthView.tsx
index b8a3c85e..537d9611 100644
--- a/src/room/RoomAuthView.tsx
+++ b/src/room/RoomAuthView.tsx
@@ -9,16 +9,16 @@ import { FC, useCallback, useState } from "react";
import { useLocation } from "react-router-dom";
import { Trans, useTranslation } from "react-i18next";
import { logger } from "matrix-js-sdk/src/logger";
-import { Button } from "@vector-im/compound-web";
+import { Button, Heading, Text } from "@vector-im/compound-web";
import styles from "./RoomAuthView.module.css";
-import { Body, Caption, Link, Headline } from "../typography/Typography";
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
import { Form } from "../form/Form";
import { UserMenuContainer } from "../UserMenuContainer";
import { useRegisterPasswordlessUser } from "../auth/useRegisterPasswordlessUser";
import { Config } from "../config/Config";
+import { ExternalLink, Link } from "../button/Link";
export const RoomAuthView: FC = () => {
const [loading, setLoading] = useState(false);
@@ -63,9 +63,9 @@ export const RoomAuthView: FC = () => {
-
+
{t("lobby.join_button")}
-
+
-
+
Not registered yet?{" "}
-
+
Create an account
-
+
>
);
diff --git a/src/room/useLoadGroupCall.ts b/src/room/useLoadGroupCall.ts
index 8b758726..6e07aa52 100644
--- a/src/room/useLoadGroupCall.ts
+++ b/src/room/useLoadGroupCall.ts
@@ -17,7 +17,7 @@ import { SyncState } from "matrix-js-sdk/src/sync";
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
import { RoomEvent, Room } from "matrix-js-sdk/src/models/room";
import { KnownMembership } from "matrix-js-sdk/src/types";
-import { JoinRule } from "matrix-js-sdk/src/matrix";
+import { JoinRule, MatrixError } from "matrix-js-sdk/src/matrix";
import { useTranslation } from "react-i18next";
import { widget } from "../widget";
@@ -54,6 +54,42 @@ export type GroupCallStatus =
| GroupCallWaitForInvite
| GroupCallCanKnock;
+const MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE = 3;
+const DELAY_MS_FOR_INVITE_JOIN_FAILURE = 3000;
+
+/**
+ * Join a room, and retry on M_FORBIDDEN error in order to work
+ * around a potential race when joining rooms over federation.
+ *
+ * Will wait up to to `DELAY_MS_FOR_INVITE_JOIN_FAILURE` per attempt.
+ * Will try up to `MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE` times.
+ *
+ * @see https://github.com/element-hq/element-call/issues/2634
+ * @param client The matrix client
+ * @param attempt Number of attempts made.
+ * @param params Parameters to pass to client.joinRoom
+ */
+async function joinRoomAfterInvite(
+ client: MatrixClient,
+ attempt = 0,
+ ...params: Parameters
+): ReturnType {
+ try {
+ return await client.joinRoom(...params);
+ } catch (ex) {
+ if (
+ ex instanceof MatrixError &&
+ ex.errcode === "M_FORBIDDEN" &&
+ attempt < MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE
+ ) {
+ // If we were invited and got a M_FORBIDDEN, it's highly likely the server hasn't caught up yet.
+ await new Promise((r) => setTimeout(r, DELAY_MS_FOR_INVITE_JOIN_FAILURE));
+ return joinRoomAfterInvite(client, attempt + 1, ...params);
+ }
+ throw ex;
+ }
+}
+
export class CallTerminatedMessage extends Error {
/**
* @param messageBody The message explaining the kind of termination (kick, ban, knock reject, etc.) (translated)
@@ -162,10 +198,13 @@ export const useLoadGroupCall = (
membership === KnownMembership.Invite &&
prevMembership === KnownMembership.Knock
) {
- client.joinRoom(room.roomId, { viaServers }).then((room) => {
- logger.log("Auto-joined %s", room.roomId);
- resolve(room);
- }, reject);
+ joinRoomAfterInvite(client, 0, room.roomId, { viaServers }).then(
+ (room) => {
+ logger.log("Auto-joined %s", room.roomId);
+ resolve(room);
+ },
+ reject,
+ );
}
if (membership === KnownMembership.Ban) reject(bannedError());
if (membership === KnownMembership.Leave)
diff --git a/src/settings/FeedbackSettingsTab.tsx b/src/settings/FeedbackSettingsTab.tsx
index f47d10ac..455995a1 100644
--- a/src/settings/FeedbackSettingsTab.tsx
+++ b/src/settings/FeedbackSettingsTab.tsx
@@ -8,12 +8,11 @@ Please see LICENSE in the repository root for full details.
import { FC, useCallback } from "react";
import { randomString } from "matrix-js-sdk/src/randomstring";
import { useTranslation } from "react-i18next";
-import { Button } from "@vector-im/compound-web";
+import { Button, Text } from "@vector-im/compound-web";
import { logger } from "matrix-js-sdk/src/logger";
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
import { useSubmitRageshake, useRageshakeRequest } from "./submit-rageshake";
-import { Body } from "../typography/Typography";
import feedbackStyles from "../input/FeedbackInput.module.css";
interface Props {
@@ -56,7 +55,7 @@ export const FeedbackSettingsTab: FC = ({ roomId }) => {
return (
{t("settings.feedback_tab_h4")}
- {t("settings.feedback_tab_body")}
+ {t("settings.feedback_tab_body")}
);
diff --git a/src/settings/SettingsModal.tsx b/src/settings/SettingsModal.tsx
index 3dfbae65..c4ba24d1 100644
--- a/src/settings/SettingsModal.tsx
+++ b/src/settings/SettingsModal.tsx
@@ -8,13 +8,12 @@ Please see LICENSE in the repository root for full details.
import { ChangeEvent, FC, ReactNode, useCallback } from "react";
import { Trans, useTranslation } from "react-i18next";
import { MatrixClient } from "matrix-js-sdk/src/matrix";
-import { Dropdown } from "@vector-im/compound-web";
+import { Dropdown, Text } from "@vector-im/compound-web";
import { Modal } from "../Modal";
import styles from "./SettingsModal.module.css";
import { Tab, TabContainer } from "../tabs/Tabs";
import { FieldRow, InputField } from "../input/Input";
-import { Caption } from "../typography/Typography";
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
import { ProfileSettingsTab } from "./ProfileSettingsTab";
import { FeedbackSettingsTab } from "./FeedbackSettingsTab";
@@ -102,14 +101,14 @@ export const SettingsModal: FC = ({
};
const optInDescription = (
-
+
You may withdraw consent by unchecking this box. If you are currently in
a call, this setting will take effect at the end of the call.
-
+
);
const devices = useMediaDevices();
diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts
index e0868b9e..ea9805df 100644
--- a/src/settings/rageshake.ts
+++ b/src/settings/rageshake.ts
@@ -29,9 +29,9 @@ Please see LICENSE in the repository root for full details.
import EventEmitter from "events";
import { throttle } from "lodash";
-import { logger } from "matrix-js-sdk/src/logger";
+import { Logger, logger } from "matrix-js-sdk/src/logger";
import { randomString } from "matrix-js-sdk/src/randomstring";
-import { LoggingMethod } from "loglevel";
+import loglevel, { LoggingMethod } from "loglevel";
// the length of log data we keep in indexeddb (and include in the reports)
const MAX_LOG_SIZE = 1024 * 1024 * 5; // 5 MB
@@ -467,7 +467,12 @@ declare global {
*/
export async function init(): Promise {
global.mx_rage_logger = new ConsoleLogger();
- setLogExtension(global.mx_rage_logger.log);
+ setLogExtension(logger, global.mx_rage_logger.log);
+ // these are the child/prefixed loggers we want to capture from js-sdk
+ // there doesn't seem to be an easy way to capture all children
+ ["MatrixRTCSession", "MatrixRTCSessionManager"].forEach((loggerName) => {
+ setLogExtension(logger.getChild(loggerName), global.mx_rage_logger.log);
+ });
return tryInitStorage();
}
@@ -580,10 +585,14 @@ type LogLevelString = keyof typeof LogLevel;
* took loglevel's example honouring log levels). Adds a loglevel logging extension
* in the recommended way.
*/
-export function setLogExtension(extension: LogExtensionFunc): void {
- const originalFactory = logger.methodFactory;
+function setLogExtension(
+ _loggerToExtend: Logger,
+ extension: LogExtensionFunc,
+): void {
+ const loggerToExtend = _loggerToExtend as unknown as loglevel.Logger;
+ const originalFactory = loggerToExtend.methodFactory;
- logger.methodFactory = function (
+ loggerToExtend.methodFactory = function (
methodName,
configLevel,
loggerName,
@@ -594,11 +603,14 @@ export function setLogExtension(extension: LogExtensionFunc): void {
const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;
return (...args) => {
+ // we don't send the logger name to the raw method as some of them are already outputting the prefix
rawMethod.apply(this, args);
if (needLog) {
- extension(logLevel, ...args);
+ // we prefix the logger name to the extension
+ // this makes sure that the rageshake contains the logger name
+ extension(logLevel, loggerName?.toString(), ...args);
}
};
};
- logger.setLevel(logger.getLevel()); // Be sure to call setLevel method in order to apply plugin
+ loggerToExtend.setLevel(loggerToExtend.getLevel()); // Be sure to call setLevel method in order to apply plugin
}
diff --git a/src/settings/submit-rageshake.ts b/src/settings/submit-rageshake.ts
index 16b81d0b..1ab90667 100644
--- a/src/settings/submit-rageshake.ts
+++ b/src/settings/submit-rageshake.ts
@@ -270,11 +270,17 @@ export function useSubmitRageshake(): {
);
}
- await fetch(Config.get().rageshake!.submit_url, {
+ const res = await fetch(Config.get().rageshake!.submit_url, {
method: "POST",
body,
});
+ if (res.status !== 200) {
+ throw new Error(
+ `Failed to submit feedback: receive HTTP ${res.status} ${res.statusText}`,
+ );
+ }
+
setState({ sending: false, sent: true, error: undefined });
} catch (error) {
setState({ sending: false, sent: false, error: error as Error });
diff --git a/src/state/CallViewModel.ts b/src/state/CallViewModel.ts
index 802b33fa..6ce233fc 100644
--- a/src/state/CallViewModel.ts
+++ b/src/state/CallViewModel.ts
@@ -16,7 +16,11 @@ import {
ParticipantEvent,
RemoteParticipant,
} from "livekit-client";
-import { Room as MatrixRoom, RoomMember } from "matrix-js-sdk/src/matrix";
+import {
+ Room as MatrixRoom,
+ RoomMember,
+ RoomStateEvent,
+} from "matrix-js-sdk/src/matrix";
import {
EMPTY,
Observable,
@@ -320,6 +324,8 @@ export class CallViewModel extends ViewModel {
this.remoteParticipants,
observeParticipantMedia(this.livekitRoom.localParticipant),
duplicateTiles.value,
+ // Also react to changes in the list of members
+ fromEvent(this.matrixRoom, RoomStateEvent.Update).pipe(startWith(null)),
]).pipe(
scan(
(
diff --git a/src/typography/Typography.module.css b/src/typography/Typography.module.css
deleted file mode 100644
index d9ce7476..00000000
--- a/src/typography/Typography.module.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright 2022-2024 New Vector Ltd.
-
-SPDX-License-Identifier: AGPL-3.0-only
-Please see LICENSE in the repository root for full details.
-*/
-
-.caption {
- font-size: var(--font-size-caption);
- line-height: var(--font-size-body);
-}
-
-.micro {
- font-size: var(--font-size-micro);
- line-height: var(--font-size-caption);
-}
-
-.regular {
- font-weight: 400;
-}
-
-.semiBold {
- font-weight: 600;
-}
-
-.bold {
- font-weight: 700;
-}
-
-.link {
- color: var(--cpd-color-text-link-external);
-}
-
-.link:hover {
- text-decoration: underline;
- opacity: initial;
-}
-
-.primary {
- color: var(--cpd-color-text-action-accent);
-}
-
-.overflowEllipsis {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
diff --git a/src/typography/Typography.tsx b/src/typography/Typography.tsx
deleted file mode 100644
index 48b5a7f2..00000000
--- a/src/typography/Typography.tsx
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
-Copyright 2022-2024 New Vector Ltd.
-
-SPDX-License-Identifier: AGPL-3.0-only
-Please see LICENSE in the repository root for full details.
-*/
-
-import { createElement, forwardRef, ReactNode } from "react";
-import classNames from "classnames";
-import { Link as RouterLink } from "react-router-dom";
-import * as H from "history";
-
-import styles from "./Typography.module.css";
-
-interface TypographyProps {
- children: ReactNode;
- fontWeight?: string;
- className?: string;
- overflowEllipsis?: boolean;
- as?: string;
-}
-
-export const Headline = forwardRef(
- (
- {
- as: Component = "h1",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Headline.displayName = "Headline";
-
-export const Title = forwardRef(
- (
- {
- as: Component = "h2",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Title.displayName = "Title";
-
-export const Subtitle = forwardRef(
- (
- {
- as: Component = "h3",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Subtitle.displayName = "Subtitle";
-
-export const Body = forwardRef(
- (
- {
- as: Component = "p",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Body.displayName = "Body";
-
-export const Caption = forwardRef(
- (
- {
- as: Component = "p",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles.caption,
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Caption.displayName = "Caption";
-
-export const Micro = forwardRef(
- (
- {
- as: Component = "p",
- children,
- className,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- return createElement(
- Component,
- {
- ...rest,
- className: classNames(
- styles.micro,
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref,
- },
- children,
- );
- },
-);
-
-Micro.displayName = "Micro";
-
-interface LinkProps extends TypographyProps {
- to?: H.LocationDescriptor;
- color?: string;
- href?: string;
-}
-
-export const Link = forwardRef(
- (
- {
- as,
- children,
- className,
- color = "link",
- href,
- to,
- fontWeight,
- overflowEllipsis,
- ...rest
- },
- ref,
- ) => {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- const Component: string | RouterLink = as || (to ? RouterLink : "a");
- let externalLinkProps: { href: string; target: string; rel: string };
-
- if (href) {
- externalLinkProps = {
- href,
- target: "_blank",
- rel: "noreferrer noopener",
- };
- }
-
- return createElement(
- Component,
- {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- ...externalLinkProps,
- ...rest,
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- to: to,
- className: classNames(
- styles[color],
- styles[fontWeight ?? ""],
- { [styles.overflowEllipsis]: overflowEllipsis },
- className,
- ),
- ref: ref,
- },
- children,
- );
- },
-);
-
-Link.displayName = "Link";
diff --git a/yarn.lock b/yarn.lock
index df8d420d..86b88e38 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1746,48 +1746,40 @@
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
"@floating-ui/core@^1.6.0":
- version "1.6.7"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12"
- integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==
- dependencies:
- "@floating-ui/utils" "^0.2.7"
-
-"@floating-ui/dom@1.6.8":
version "1.6.8"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.8.tgz#45e20532b6d8a061b356a4fb336022cf2609754d"
- integrity sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
+ integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
+ dependencies:
+ "@floating-ui/utils" "^0.2.8"
+
+"@floating-ui/dom@1.6.11", "@floating-ui/dom@^1.0.0":
+ version "1.6.11"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723"
+ integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==
dependencies:
"@floating-ui/core" "^1.6.0"
- "@floating-ui/utils" "^0.2.5"
+ "@floating-ui/utils" "^0.2.8"
-"@floating-ui/dom@^1.0.0":
- version "1.6.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f"
- integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==
- dependencies:
- "@floating-ui/core" "^1.6.0"
- "@floating-ui/utils" "^0.2.7"
-
-"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0"
- integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==
+"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
+ integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
dependencies:
"@floating-ui/dom" "^1.0.0"
"@floating-ui/react@^0.26.9":
- version "0.26.23"
- resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.23.tgz#28985e5ce482c34f347f28076f11267e47a933bd"
- integrity sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==
+ version "0.26.24"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.24.tgz#072b9dfeca4e79ef4e3000ef1c28e0ffc86f4ed4"
+ integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==
dependencies:
- "@floating-ui/react-dom" "^2.1.1"
- "@floating-ui/utils" "^0.2.7"
+ "@floating-ui/react-dom" "^2.1.2"
+ "@floating-ui/utils" "^0.2.8"
tabbable "^6.0.0"
-"@floating-ui/utils@^0.2.5", "@floating-ui/utils@^0.2.7":
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e"
- integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==
+"@floating-ui/utils@^0.2.8":
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
+ integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
"@gulpjs/to-absolute-glob@^4.0.0":
version "4.0.0"
@@ -1864,21 +1856,21 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
-"@livekit/components-core@0.11.2", "@livekit/components-core@^0.11.0":
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/@livekit/components-core/-/components-core-0.11.2.tgz#fded2e207155e4737ed52830d48b75ae2eaaf449"
- integrity sha512-rXQ1OvyGe9gY8BCpH5FTr4Il17/sS/ecJQbG3PoOXAkQVl5JP965eqUPyKXZTdxNKlVLef00AygrO2pPArwOTA==
+"@livekit/components-core@0.11.5", "@livekit/components-core@^0.11.0":
+ version "0.11.5"
+ resolved "https://registry.yarnpkg.com/@livekit/components-core/-/components-core-0.11.5.tgz#6c61910f6cecd51a88a195ccbd9300832fdf1c22"
+ integrity sha512-aaWPQJEfbY5tUND+diB7sW/6dRWN/H9lwqVy7L3nt15MszN1lX7ZlM9gA4ODquv+wUyFhxYfjRm7jVuV/g234g==
dependencies:
- "@floating-ui/dom" "1.6.8"
+ "@floating-ui/dom" "1.6.11"
loglevel "1.9.1"
rxjs "7.8.1"
"@livekit/components-react@^2.0.0":
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/@livekit/components-react/-/components-react-2.4.3.tgz#634b507be2dfede2267f304fc5922d1b69e2be56"
- integrity sha512-XhCvwFvNjhBJcoQHIY4Hk6MBp7mM9q0n0i7sN/xK3fB1DSjkxIkpc7lh/+Pjqdu6F6OJT3MjwNFYnftqy6kcmw==
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/@livekit/components-react/-/components-react-2.5.4.tgz#43181f3a7718f58e4a77b0fdd45d96e99777ffa4"
+ integrity sha512-uog/fZMOABFNX2HS8R4zYr2F+m14vS4mifAnRWDux+4wjMvBminX57pRqf/YN9wHc0cmiPlq0Nd8JLWnqJd2fg==
dependencies:
- "@livekit/components-core" "0.11.2"
+ "@livekit/components-core" "0.11.5"
clsx "2.1.1"
usehooks-ts "3.1.0"
@@ -1889,10 +1881,10 @@
dependencies:
"@bufbuild/protobuf" "^1.7.2"
-"@matrix-org/matrix-sdk-crypto-wasm@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-7.0.0.tgz#8d6abdb9ded8656cc9e2a7909913a34bf3fc9b3a"
- integrity sha512-MOencXiW/gI5MuTtCNsuojjwT5DXCrjMqv9xOslJC9h2tPdLFFFMGr58dY5Lis4DRd9MRWcgrGowUIHOqieWTA==
+"@matrix-org/matrix-sdk-crypto-wasm@^8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-8.0.0.tgz#6ddc0e63538e821a2efbc5c1a2f0fa0f71d489ff"
+ integrity sha512-s0q3O2dK8b6hOJ+SZFz+s/IiMabmVsNue6r17sTwbrRD8liBkCrpjYnxoMYvtC01GggJ9TZLQbeqpt8hQSPHAg==
"@matrix-org/olm@3.2.15":
version "3.2.15"
@@ -2441,85 +2433,85 @@
estree-walker "^2.0.2"
picomatch "^2.3.1"
-"@rollup/rollup-android-arm-eabi@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11"
- integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==
+"@rollup/rollup-android-arm-eabi@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz#155c7d82c1b36c3ad84d9adf9b3cd520cba81a0f"
+ integrity sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==
-"@rollup/rollup-android-arm64@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb"
- integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==
+"@rollup/rollup-android-arm64@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz#b94b6fa002bd94a9cbd8f9e47e23b25e5bd113ba"
+ integrity sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==
-"@rollup/rollup-darwin-arm64@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz#0a2c364e775acdf1172fe3327662eec7c46e55b1"
- integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==
+"@rollup/rollup-darwin-arm64@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz#0934126cf9cbeadfe0eb7471ab5d1517e8cd8dcc"
+ integrity sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==
-"@rollup/rollup-darwin-x64@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42"
- integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==
+"@rollup/rollup-darwin-x64@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz#0ce8e1e0f349778938c7c90e4bdc730640e0a13e"
+ integrity sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==
-"@rollup/rollup-linux-arm-gnueabihf@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1"
- integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==
+"@rollup/rollup-linux-arm-gnueabihf@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz#5669d34775ad5d71e4f29ade99d0ff4df523afb6"
+ integrity sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==
-"@rollup/rollup-linux-arm-musleabihf@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266"
- integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==
+"@rollup/rollup-linux-arm-musleabihf@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz#f6d1a0e1da4061370cb2f4244fbdd727c806dd88"
+ integrity sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==
-"@rollup/rollup-linux-arm64-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7"
- integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==
+"@rollup/rollup-linux-arm64-gnu@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz#ed96a05e99743dee4d23cc4913fc6e01a0089c88"
+ integrity sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==
-"@rollup/rollup-linux-arm64-musl@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80"
- integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==
+"@rollup/rollup-linux-arm64-musl@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz#057ea26eaa7e537a06ded617d23d57eab3cecb58"
+ integrity sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==
-"@rollup/rollup-linux-powerpc64le-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54"
- integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==
+"@rollup/rollup-linux-powerpc64le-gnu@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz#6e6e1f9404c9bf3fbd7d51cd11cd288a9a2843aa"
+ integrity sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==
-"@rollup/rollup-linux-riscv64-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09"
- integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==
+"@rollup/rollup-linux-riscv64-gnu@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz#eef1536a53f6e6658a2a778130e6b1a4a41cb439"
+ integrity sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==
-"@rollup/rollup-linux-s390x-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18"
- integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==
+"@rollup/rollup-linux-s390x-gnu@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz#2b28fb89ca084efaf8086f435025d96b4a966957"
+ integrity sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==
-"@rollup/rollup-linux-x64-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad"
- integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==
+"@rollup/rollup-linux-x64-gnu@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz#5226cde6c6b495b04a3392c1d2c572844e42f06b"
+ integrity sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==
-"@rollup/rollup-linux-x64-musl@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8"
- integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==
+"@rollup/rollup-linux-x64-musl@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz#2c2412982e6c2a00a2ecac6d548ebb02f0aa6ca4"
+ integrity sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==
-"@rollup/rollup-win32-arm64-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504"
- integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==
+"@rollup/rollup-win32-arm64-msvc@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz#fbb6ef5379199e2ec0103ef32877b0985c773a55"
+ integrity sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==
-"@rollup/rollup-win32-ia32-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e"
- integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==
+"@rollup/rollup-win32-ia32-msvc@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz#d50e2082e147e24d87fe34abbf6246525ec3845a"
+ integrity sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==
-"@rollup/rollup-win32-x64-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b"
- integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==
+"@rollup/rollup-win32-x64-msvc@4.21.3":
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz#4115233aa1bd5a2060214f96d8511f6247093212"
+ integrity sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==
"@rtsao/scc@^1.1.0":
version "1.1.0"
@@ -3093,9 +3085,9 @@
integrity sha512-PtQMG7kDzwtjw/fLKD63uWP5rJ8cgWc/aXarfEzxYUf9ceWxBajnYOBI2jDqtE3WIUe9uTVBzNEvmOBG/VIgTA==
"@vector-im/compound-web@^6.0.0":
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-6.1.2.tgz#3f8bbd69f2b06a2b8dd12c68df813356e5486074"
- integrity sha512-kWOcprUsGGrGPRT9lPE3tnyGYWzNEIQSZ57BT/vMx9NX4QqT/Dpq0VhkBKm8W583NoYtxDOgSWWkvFQhyHVkWw==
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-6.2.0.tgz#ae38f04be524b87b2b655858e603f60677d9a973"
+ integrity sha512-oRoRDyKzlgPwjhZcn/Ll9zTccr/61ky3g7JUfQtvbe03H2Gyd887J8KJ/Q6RuUvVyUYTjHh2yi+eKp3UK1ylCw==
dependencies:
"@floating-ui/react" "^0.26.9"
"@radix-ui/react-context-menu" "^2.1.5"
@@ -3250,11 +3242,6 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-regex@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
- integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -5811,16 +5798,16 @@ lines-and-columns@^1.1.6:
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
livekit-client@^2.0.2:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/livekit-client/-/livekit-client-2.5.1.tgz#c5a6bcc7069133e71ed1f3dd3e397a7480cf24b3"
- integrity sha512-D7BzGoO3nc7/H2pEP9hseTjpzfgUoQ1AdeUNdlM7XNEywvorY1UR6RhOWH9UvycM/D5tIIRx7OvhxzpVfHE3TA==
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/livekit-client/-/livekit-client-2.5.2.tgz#3c8fcc67a0eb4a990822603e3f016d18b400a1a1"
+ integrity sha512-rzWFH02UznHxpnbj+WEEoHxL1ZSo9BdFK+7ltSZWniTt2llnNckdqeXNsjkBH6k+C9agHTF4XikmxKcpWa4YrQ==
dependencies:
"@livekit/protocol" "1.20.1"
events "^3.3.0"
loglevel "^1.8.0"
sdp-transform "^2.14.1"
ts-debounce "^4.0.0"
- tslib "2.6.3"
+ tslib "2.7.0"
typed-emitter "^2.1.0"
webrtc-adapter "^9.0.0"
@@ -5858,7 +5845,7 @@ lodash@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-loglevel@1.9.1, loglevel@^1.8.0:
+loglevel@1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7"
integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==
@@ -5868,7 +5855,7 @@ loglevel@^1.7.1:
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4"
integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==
-loglevel@^1.9.1:
+loglevel@^1.8.0, loglevel@^1.9.1:
version "1.9.2"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08"
integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==
@@ -5959,12 +5946,12 @@ matrix-events-sdk@0.0.1:
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd"
integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==
-matrix-js-sdk@matrix-org/matrix-js-sdk#169e8f86139111574a3738f8557c6fa4b2a199db:
- version "34.4.0"
- resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/169e8f86139111574a3738f8557c6fa4b2a199db"
+matrix-js-sdk@matrix-org/matrix-js-sdk#414ac9d8cc28330718236b90ad67a1507e146932:
+ version "34.5.0"
+ resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/414ac9d8cc28330718236b90ad67a1507e146932"
dependencies:
"@babel/runtime" "^7.12.5"
- "@matrix-org/matrix-sdk-crypto-wasm" "^7.0.0"
+ "@matrix-org/matrix-sdk-crypto-wasm" "^8.0.0"
"@matrix-org/olm" "3.2.15"
another-json "^0.2.0"
bs58 "^6.0.0"
@@ -6434,7 +6421,7 @@ pathval@^2.0.0:
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
-picocolors@^1.0.0, picocolors@^1.0.1:
+picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
@@ -6734,7 +6721,7 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.4.41, postcss@^8.4.43:
+postcss@^8.4.41:
version "8.4.45"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603"
integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==
@@ -6743,6 +6730,15 @@ postcss@^8.4.41, postcss@^8.4.43:
picocolors "^1.0.1"
source-map-js "^1.2.0"
+postcss@^8.4.43:
+ version "8.4.47"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
+ integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.1.0"
+ source-map-js "^1.2.1"
+
posthog-js@^1.29.0:
version "1.160.3"
resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.160.3.tgz#17c8af4c9ffa2d795d925ca1e7146e61cd5ccabd"
@@ -7204,28 +7200,28 @@ rimraf@^3.0.2:
glob "^7.1.3"
rollup@^4.20.0:
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.2.tgz#f41f277a448d6264e923dd1ea179f0a926aaf9b7"
- integrity sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==
+ version "4.21.3"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.3.tgz#c64ba119e6aeb913798a6f7eef2780a0df5a0821"
+ integrity sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==
dependencies:
"@types/estree" "1.0.5"
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.21.2"
- "@rollup/rollup-android-arm64" "4.21.2"
- "@rollup/rollup-darwin-arm64" "4.21.2"
- "@rollup/rollup-darwin-x64" "4.21.2"
- "@rollup/rollup-linux-arm-gnueabihf" "4.21.2"
- "@rollup/rollup-linux-arm-musleabihf" "4.21.2"
- "@rollup/rollup-linux-arm64-gnu" "4.21.2"
- "@rollup/rollup-linux-arm64-musl" "4.21.2"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.21.2"
- "@rollup/rollup-linux-riscv64-gnu" "4.21.2"
- "@rollup/rollup-linux-s390x-gnu" "4.21.2"
- "@rollup/rollup-linux-x64-gnu" "4.21.2"
- "@rollup/rollup-linux-x64-musl" "4.21.2"
- "@rollup/rollup-win32-arm64-msvc" "4.21.2"
- "@rollup/rollup-win32-ia32-msvc" "4.21.2"
- "@rollup/rollup-win32-x64-msvc" "4.21.2"
+ "@rollup/rollup-android-arm-eabi" "4.21.3"
+ "@rollup/rollup-android-arm64" "4.21.3"
+ "@rollup/rollup-darwin-arm64" "4.21.3"
+ "@rollup/rollup-darwin-x64" "4.21.3"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.21.3"
+ "@rollup/rollup-linux-arm-musleabihf" "4.21.3"
+ "@rollup/rollup-linux-arm64-gnu" "4.21.3"
+ "@rollup/rollup-linux-arm64-musl" "4.21.3"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.21.3"
+ "@rollup/rollup-linux-riscv64-gnu" "4.21.3"
+ "@rollup/rollup-linux-s390x-gnu" "4.21.3"
+ "@rollup/rollup-linux-x64-gnu" "4.21.3"
+ "@rollup/rollup-linux-x64-musl" "4.21.3"
+ "@rollup/rollup-win32-arm64-msvc" "4.21.3"
+ "@rollup/rollup-win32-ia32-msvc" "4.21.3"
+ "@rollup/rollup-win32-x64-msvc" "4.21.3"
fsevents "~2.3.2"
rrweb-cssom@^0.6.0:
@@ -7437,7 +7433,7 @@ sort-keys@^5.0.0:
dependencies:
is-plain-obj "^4.0.0"
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
@@ -7618,20 +7614,13 @@ string_decoder@~1.1.1:
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^7.0.1:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
- integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
- dependencies:
- ansi-regex "^6.0.1"
-
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
@@ -7845,12 +7834,7 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@2.6.3:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
- integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
-
-tslib@^2.0.0, tslib@^2.1.0:
+tslib@2.7.0, tslib@^2.0.0, tslib@^2.1.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
@@ -8193,9 +8177,9 @@ vite-plugin-svgr@^4.0.0:
"@svgr/plugin-jsx" "^8.1.0"
vite@^5.0.0:
- version "5.4.3"
- resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.3.tgz#771c470e808cb6732f204e1ee96c2ed65b97a0eb"
- integrity sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==
+ version "5.4.6"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.6.tgz#85a93a1228a7fb5a723ca1743e337a2588ed008f"
+ integrity sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"