From d213a226b0c4b5ff43950a159914b981a71586f2 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Thu, 27 Mar 2025 14:29:58 +0000 Subject: [PATCH] Tweak to not use js-sdk --- src/@types/matrix-js-sdk.d.ts | 20 +++++++++++++++++++ .../views/settings/InviteControlsPanel.tsx | 1 + 2 files changed, 21 insertions(+) diff --git a/src/@types/matrix-js-sdk.d.ts b/src/@types/matrix-js-sdk.d.ts index 92b76c4c4d..1c28ad4614 100644 --- a/src/@types/matrix-js-sdk.d.ts +++ b/src/@types/matrix-js-sdk.d.ts @@ -15,6 +15,8 @@ import type { EmptyObject } from "matrix-js-sdk/src/matrix"; import type { DeviceClientInformation } from "../utils/device/types.ts"; import type { UserWidget } from "../utils/WidgetUtils-types.ts"; +type InviteConfigAccountDataRule = "allow" | "block"; + // Extend Matrix JS SDK types via Typescript declaration merging to support unspecced event fields and types declare module "matrix-js-sdk/src/types" { export interface FileInfo { @@ -60,6 +62,21 @@ declare module "matrix-js-sdk/src/types" { }; } + export interface InviteConfigAccountData { + /** + * Rule exceptions for users. Takes priority over `default` and `server_exceptions`. + */ + user_exceptions: Record; + /** + * Rule exceptions for users. Takes priority over `default`. + */ + server_exceptions: Record; + /** + * The default rule for invite handling when no exceptions match. + */ + default: InviteConfigAccountDataRule; + } + export interface AccountDataEvents { // Analytics account data event "im.vector.analytics": { @@ -87,6 +104,9 @@ declare module "matrix-js-sdk/src/types" { "m.accepted_terms": { accepted: string[]; }; + + // MSC4155: Invite filtering + "org.matrix.msc4155.invite_permission_config": InviteConfigAccountData; } export interface AudioContent { diff --git a/src/components/views/settings/InviteControlsPanel.tsx b/src/components/views/settings/InviteControlsPanel.tsx index ba26571a44..18f2d84d18 100644 --- a/src/components/views/settings/InviteControlsPanel.tsx +++ b/src/components/views/settings/InviteControlsPanel.tsx @@ -15,6 +15,7 @@ import { _t } from "../../../languageHandler"; import { useAccountData } from "../../../hooks/useAccountData"; import { useMatrixClientContext } from "../../../contexts/MatrixClientContext"; + export const InviteControlsPanel: FC = () => { const client = useMatrixClientContext(); const inviteState = useAccountData(