From 54d27fd59c6dd74d30f85c7cc5517e0a36a352fb Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 1 Jul 2026 13:49:18 +0100 Subject: [PATCH] Separate out SDKContext (#34053) * Separate out SDKContext ...from SDKContextClass, as the comments hopefully explain. Also make the captitalisation consistent. * Adding the new file usually helps too * Fix import * More comment * Update the various imports of SDKContextClass * Also fix case of TestSDKContext * Update the mock --- apps/web/src/Lifecycle.ts | 6 +- apps/web/src/Notifier.ts | 4 +- apps/web/src/ScalarMessaging.ts | 4 +- .../src/components/structures/MatrixChat.tsx | 7 +- .../components/structures/PipContainer.tsx | 10 +- .../components/views/dialogs/InviteDialog.tsx | 4 +- .../views/dialogs/RoomSettingsDialog.tsx | 5 +- .../views/dialogs/UserSettingsDialog.tsx | 5 +- .../dialogs/WidgetOpenIDPermissionsDialog.tsx | 4 +- .../dialogs/spotlight/SpotlightDialog.tsx | 4 +- .../src/components/views/elements/AppTile.tsx | 4 +- .../views/rooms/BasicMessageComposer.tsx | 4 +- .../components/views/rooms/LegacyRoomList.tsx | 10 +- .../src/components/views/rooms/RoomTile.tsx | 8 +- .../views/spaces/QuickSettingsButton.tsx | 4 +- .../src/components/views/voip/CallView.tsx | 4 +- apps/web/src/contexts/SDKContext.ts | 190 +---------------- apps/web/src/contexts/SDKContextClass.ts | 197 ++++++++++++++++++ apps/web/src/hooks/room/useRoomCall.tsx | 6 +- apps/web/src/hooks/usePermalinkMember.ts | 5 +- apps/web/src/slash-commands/utils.ts | 4 +- apps/web/src/stores/MemberListStore.ts | 4 +- apps/web/src/stores/MultiRoomViewStore.ts | 4 +- apps/web/src/stores/RoomViewStore.tsx | 4 +- apps/web/src/stores/TypingStore.ts | 4 +- .../src/stores/right-panel/RightPanelStore.ts | 4 +- .../web/src/stores/room-list/RoomListStore.ts | 6 +- apps/web/src/stores/spaces/SpaceStore.ts | 8 +- .../src/stores/widgets/ElementWidgetDriver.ts | 10 +- .../web/src/stores/widgets/WidgetMessaging.ts | 12 +- .../stores/widgets/WidgetPermissionStore.ts | 4 +- apps/web/src/utils/DialogOpener.ts | 8 +- apps/web/src/utils/exportUtils/HtmlExport.tsx | 5 +- apps/web/src/utils/leave-behaviour.ts | 4 +- apps/web/src/utils/space.tsx | 6 +- .../viewmodels/room-list/RoomListViewModel.ts | 6 +- .../room/timeline/DateSeparatorViewModel.tsx | 6 +- apps/web/test/test-utils/room.ts | 4 +- apps/web/test/test-utils/wrappers.tsx | 7 +- apps/web/test/unit-tests/Notifier-test.ts | 6 +- .../{TestSdkContext.ts => TestSDKContext.ts} | 6 +- .../unit-tests/audio/PlaybackQueue-test.ts | 6 +- .../structures/LoggedInView-test.tsx | 4 +- .../components/structures/MainSplit-test.tsx | 7 +- .../components/structures/MatrixChat-test.tsx | 12 +- .../structures/MessagePanel-test.tsx | 6 +- .../structures/PipContainer-test.tsx | 10 +- .../components/structures/RightPanel-test.tsx | 6 +- .../structures/RoomSearchView-test.tsx | 6 +- .../components/structures/RoomView-test.tsx | 7 +- .../components/structures/ThreadView-test.tsx | 10 +- .../structures/TimelinePanel-test.tsx | 6 +- .../views/dialogs/InviteDialog-test.tsx | 8 +- .../dialogs/MessageEditHistoryDialog-test.tsx | 7 +- .../views/dialogs/RoomSettingsDialog-test.tsx | 6 +- .../views/dialogs/UserSettingsDialog-test.tsx | 6 +- .../views/elements/AppTile-test.tsx | 6 +- .../components/views/elements/Pill-test.tsx | 9 +- .../views/messages/MVoiceMessageBody-test.tsx | 4 +- .../views/rooms/AppsDrawer-test.tsx | 7 +- .../views/rooms/BasicMessageComposer-test.tsx | 4 +- .../views/rooms/PinnedMessageBanner-test.tsx | 6 +- .../RoomHeader/CallGuestLinkButton-test.tsx | 15 +- .../RoomHeader/VideoRoomChatButton-test.tsx | 7 +- .../components/views/rooms/RoomTile-test.tsx | 6 +- .../views/rooms/SendMessageComposer-test.tsx | 4 +- .../views/rooms/memberlist/common.tsx | 4 +- .../tabs/user/AccountUserSettingsTab-test.tsx | 7 +- .../user/SecurityUserSettingsTab-test.tsx | 5 +- .../tabs/user/SessionManagerTab-test.tsx | 7 +- .../views/spaces/QuickSettingsButton-test.tsx | 6 +- .../views/spaces/SpacePanel-test.tsx | 6 +- .../views/voip/LegacyCallViewForRoom-test.tsx | 7 +- .../unit-tests/contexts/SdkContext-test.ts | 12 +- .../unit-tests/hooks/useRoomCall-test.tsx | 4 +- .../unit-tests/modules/ExtrasApi-test.tsx | 7 +- .../test/unit-tests/slash-commands/utils.ts | 4 +- .../unit-tests/stores/MemberListStore-test.ts | 4 +- .../stores/MultiRoomViewStore-test.ts | 6 +- .../unit-tests/stores/RoomViewStore-test.ts | 6 +- .../unit-tests/stores/TypingStore-test.ts | 4 +- .../widgets/ElementWidgetDriver-test.ts | 4 +- .../stores/widgets/WidgetMessaging-test.ts | 8 +- .../widgets/WidgetPermissionStore-test.ts | 10 +- .../utils/exportUtils/HTMLExport-test.ts | 4 +- .../unit-tests/utils/leave-behaviour-test.ts | 4 +- .../menus/UserMenuViewModel-test.ts | 8 +- .../room-list/RoomListViewModel-test.tsx | 28 +-- .../timeline/DateSeparatorViewModel-test.tsx | 14 +- 89 files changed, 493 insertions(+), 458 deletions(-) create mode 100644 apps/web/src/contexts/SDKContextClass.ts rename apps/web/test/unit-tests/{TestSdkContext.ts => TestSDKContext.ts} (89%) diff --git a/apps/web/src/Lifecycle.ts b/apps/web/src/Lifecycle.ts index 14d6fc8024..339e94ac54 100644 --- a/apps/web/src/Lifecycle.ts +++ b/apps/web/src/Lifecycle.ts @@ -56,7 +56,7 @@ import SdkConfig from "./SdkConfig"; import { DialogOpener } from "./utils/DialogOpener"; import { Action } from "./dispatcher/actions"; import { type OverwriteLoginPayload } from "./dispatcher/payloads/OverwriteLoginPayload"; -import { SdkContextClass } from "./contexts/SDKContext"; +import { SDKContextClass } from "./contexts/SDKContextClass"; import { messageForLoginError } from "./utils/ErrorUtils"; import { completeOidcLogin, type CompleteOidcLoginResponse } from "./utils/oidc/authorize"; import { getOidcErrorMessage } from "./utils/oidc/error"; @@ -1093,7 +1093,7 @@ async function startMatrixClient( dis.dispatch({ action: Action.WillStartClient }, true); // reset things first just in case - SdkContextClass.instance.typingStore.reset(); + SDKContextClass.instance.typingStore.reset(); ToastStore.sharedInstance().reset(); DialogOpener.instance.prepare(client); @@ -1231,7 +1231,7 @@ export function stopMatrixClient(unsetClient = true): void { Notifier.stop(); LegacyCallHandler.instance.stop(); UserActivity.sharedInstance().stop(); - SdkContextClass.instance.typingStore.reset(); + SDKContextClass.instance.typingStore.reset(); Presence.stop(); ActiveWidgetStore.instance.stop(); IntegrationManagers.sharedInstance().stopWatching(); diff --git a/apps/web/src/Notifier.ts b/apps/web/src/Notifier.ts index b7e2144132..a274ae883f 100644 --- a/apps/web/src/Notifier.ts +++ b/apps/web/src/Notifier.ts @@ -43,7 +43,7 @@ import { isPushNotifyDisabled } from "./settings/controllers/NotificationControl import UserActivity from "./UserActivity"; import { mediaFromMxc } from "./customisations/Media"; import ErrorDialog from "./components/views/dialogs/ErrorDialog"; -import { SdkContextClass } from "./contexts/SDKContext"; +import { SDKContextClass } from "./contexts/SDKContextClass"; import { localNotificationsAreSilenced, createLocalNotificationSettingsIfNeeded } from "./utils/notifications"; import { getIncomingCallToastKey, getNotificationEventSendTs, IncomingCallToast } from "./toasts/IncomingCallToast"; import ToastStore from "./stores/ToastStore"; @@ -514,7 +514,7 @@ class NotifierClass extends TypedEventEmitter): void { } } - if (roomId !== SdkContextClass.instance.roomViewStore.getRoomId()) { + if (roomId !== SDKContextClass.instance.roomViewStore.getRoomId()) { sendError(event, _t("scalar|error_room_not_visible", { roomId: roomId })); return; } diff --git a/apps/web/src/components/structures/MatrixChat.tsx b/apps/web/src/components/structures/MatrixChat.tsx index 466aafa94e..f617bc8e58 100644 --- a/apps/web/src/components/structures/MatrixChat.tsx +++ b/apps/web/src/components/structures/MatrixChat.tsx @@ -118,7 +118,8 @@ import RightPanelStore from "../../stores/right-panel/RightPanelStore"; import { TimelineRenderingType } from "../../contexts/RoomContext"; import { type ValidatedServerConfig } from "../../utils/ValidatedServerConfig"; import { isLocalRoom } from "../../utils/localRoom/isLocalRoom"; -import { SDKContext, SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContext } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass.ts"; import { viewUserDeviceSettings } from "../../actions/handlers/viewUserDeviceSettings"; import GenericToast from "../views/toasts/GenericToast"; import RovingSpotlightDialog from "../views/dialogs/spotlight/SpotlightDialog"; @@ -240,14 +241,14 @@ export default class MatrixChat extends React.PureComponent { private dispatcherRef?: string; private themeWatcher?: ThemeWatcher; private fontWatcher?: FontWatcher; - private readonly stores: SdkContextClass; + private readonly stores: SDKContextClass; private loadSessionAbortController = new AbortController(); private sessionLoadStarted = false; public constructor(props: IProps) { super(props); - this.stores = SdkContextClass.instance; + this.stores = SDKContextClass.instance; this.stores.constructEagerStores(); this.state = { diff --git a/apps/web/src/components/structures/PipContainer.tsx b/apps/web/src/components/structures/PipContainer.tsx index 12920fb8a7..7dd78d16f0 100644 --- a/apps/web/src/components/structures/PipContainer.tsx +++ b/apps/web/src/components/structures/PipContainer.tsx @@ -21,7 +21,7 @@ import { WidgetLayoutStore } from "../../stores/widgets/WidgetLayoutStore"; import ActiveWidgetStore, { ActiveWidgetStoreEvent } from "../../stores/ActiveWidgetStore"; import { type ViewRoomPayload } from "../../dispatcher/payloads/ViewRoomPayload"; import { UPDATE_EVENT } from "../../stores/AsyncStore"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import RoomAvatar from "../views/avatars/RoomAvatar"; import { WidgetPipViewModel, type Props as WidgetPipViewModelProps } from "../../viewmodels/room/WidgetPipViewModel"; @@ -99,7 +99,7 @@ class PipContainerInner extends React.Component { public constructor(props: IProps) { super(props); - const roomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const roomId = SDKContextClass.instance.roomViewStore.getRoomId(); const [primaryCall, secondaryCalls] = getPrimarySecondaryCallsForPip(roomId); @@ -116,7 +116,7 @@ class PipContainerInner extends React.Component { public componentDidMount(): void { LegacyCallHandler.instance.addListener(LegacyCallHandlerEvent.CallChangeRoom, this.updateCalls); LegacyCallHandler.instance.addListener(LegacyCallHandlerEvent.CallState, this.updateCalls); - SdkContextClass.instance.roomViewStore.addListener(UPDATE_EVENT, this.onRoomViewStoreUpdate); + SDKContextClass.instance.roomViewStore.addListener(UPDATE_EVENT, this.onRoomViewStoreUpdate); MatrixClientPeg.safeGet().on(CallEvent.RemoteHoldUnhold, this.onCallRemoteHold); const room = MatrixClientPeg.safeGet().getRoom(this.state.viewedRoomId); if (room) { @@ -132,7 +132,7 @@ class PipContainerInner extends React.Component { LegacyCallHandler.instance.removeListener(LegacyCallHandlerEvent.CallState, this.updateCalls); const cli = MatrixClientPeg.get(); cli?.removeListener(CallEvent.RemoteHoldUnhold, this.onCallRemoteHold); - SdkContextClass.instance.roomViewStore.removeListener(UPDATE_EVENT, this.onRoomViewStoreUpdate); + SDKContextClass.instance.roomViewStore.removeListener(UPDATE_EVENT, this.onRoomViewStoreUpdate); const room = cli?.getRoom(this.state.viewedRoomId); if (room) { WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(room), this.updateCalls); @@ -145,7 +145,7 @@ class PipContainerInner extends React.Component { private onMove = (): void => this.props.movePersistedElement.current?.(); private onRoomViewStoreUpdate = (): void => { - const newRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const newRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); const oldRoomId = this.state.viewedRoomId; if (newRoomId === oldRoomId) return; // The WidgetLayoutStore observer always tracks the currently viewed Room, diff --git a/apps/web/src/components/views/dialogs/InviteDialog.tsx b/apps/web/src/components/views/dialogs/InviteDialog.tsx index e5d08582a1..b5dcafd9f8 100644 --- a/apps/web/src/components/views/dialogs/InviteDialog.tsx +++ b/apps/web/src/components/views/dialogs/InviteDialog.tsx @@ -55,7 +55,7 @@ import Modal from "../../../Modal"; import dis from "../../../dispatcher/dispatcher"; import { privateShouldBeEncrypted } from "../../../utils/rooms"; import { type NonEmptyArray } from "../../../@types/common"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; import { type UserProfilesStore } from "../../../stores/UserProfilesStore"; import InviteProgressBody from "./InviteProgressBody.tsx"; import MultiInviter, { type CompletionStates as MultiInviterCompletionStates } from "../../../utils/MultiInviter.ts"; @@ -204,7 +204,7 @@ export default class InviteDialog extends React.PureComponent void; initialTabId?: RoomSettingsTab; - sdkContext: SdkContextClass; + sdkContext: SDKContextClass; } interface IState { diff --git a/apps/web/src/components/views/dialogs/UserSettingsDialog.tsx b/apps/web/src/components/views/dialogs/UserSettingsDialog.tsx index b69e609971..830f1e4f10 100644 --- a/apps/web/src/components/views/dialogs/UserSettingsDialog.tsx +++ b/apps/web/src/components/views/dialogs/UserSettingsDialog.tsx @@ -44,7 +44,8 @@ import KeyboardUserSettingsTab from "../settings/tabs/user/KeyboardUserSettingsT import SessionManagerTab from "../settings/tabs/user/SessionManagerTab"; import { UserTab } from "./UserTab"; import { type NonEmptyArray } from "../../../@types/common"; -import { SDKContext, type SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContext } from "../../../contexts/SDKContext"; +import { type SDKContextClass } from "../../../contexts/SDKContextClass"; import { useSettingValue } from "../../../hooks/useSettings"; import { NoChange, useEventEmitterAsyncState, type AsyncStateCallbackResult } from "../../../hooks/useEventEmitter"; import { EncryptionUserSettingsTab, type State } from "../settings/tabs/user/EncryptionUserSettingsTab"; @@ -57,7 +58,7 @@ interface IProps { * If undefined, the default state is used ("loading"). */ initialEncryptionState?: State; - sdkContext: SdkContextClass; + sdkContext: SDKContextClass; onFinished(this: void): void; } diff --git a/apps/web/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.tsx b/apps/web/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.tsx index d0d06d12d5..cf1142a9b2 100644 --- a/apps/web/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.tsx +++ b/apps/web/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.tsx @@ -16,7 +16,7 @@ import { _t } from "../../../languageHandler"; import { OIDCState } from "../../../stores/widgets/WidgetPermissionStore"; import BaseDialog from "./BaseDialog"; import DialogButtons from "../elements/DialogButtons"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; interface IProps { widget: Widget; @@ -50,7 +50,7 @@ export default class WidgetOpenIDPermissionsDialog extends React.PureComponent = ({ initialText = "", initialFilter = n
{BreadcrumbsStore.instance.rooms - .filter((r) => r.roomId !== SdkContextClass.instance.roomViewStore.getRoomId()) + .filter((r) => r.roomId !== SDKContextClass.instance.roomViewStore.getRoomId()) .map((room) => ( { ); if (isActiveWidget) { // We just left the room that the active widget was from. - if (this.props.room && SdkContextClass.instance.roomViewStore.getRoomId() !== this.props.room.roomId) { + if (this.props.room && SDKContextClass.instance.roomViewStore.getRoomId() !== this.props.room.roomId) { // If we are not actively looking at the room then destroy this widget entirely. this.endWidgetActions(); } else if (WidgetType.JITSI.matches(this.props.app.type)) { diff --git a/apps/web/src/components/views/rooms/BasicMessageComposer.tsx b/apps/web/src/components/views/rooms/BasicMessageComposer.tsx index b44889fe24..73816f0961 100644 --- a/apps/web/src/components/views/rooms/BasicMessageComposer.tsx +++ b/apps/web/src/components/views/rooms/BasicMessageComposer.tsx @@ -41,7 +41,7 @@ import { type ICompletion } from "../../../autocomplete/Autocompleter"; import { getKeyBindingsManager } from "../../../KeyBindingsManager"; import { ALTERNATE_KEY_NAME, KeyBindingAction } from "../../../accessibility/KeyboardShortcuts"; import { _t } from "../../../languageHandler"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import { Landmark, LandmarkNavigation } from "../../../accessibility/LandmarkNavigation"; @@ -251,7 +251,7 @@ export default class BasicMessageEditor extends React.Component isTyping = false; } } - SdkContextClass.instance.typingStore.setSelfTyping( + SDKContextClass.instance.typingStore.setSelfTyping( this.props.room.roomId, this.props.threadId ?? null, isTyping, diff --git a/apps/web/src/components/views/rooms/LegacyRoomList.tsx b/apps/web/src/components/views/rooms/LegacyRoomList.tsx index 9b156f8cb9..a5c4946709 100644 --- a/apps/web/src/components/views/rooms/LegacyRoomList.tsx +++ b/apps/web/src/components/views/rooms/LegacyRoomList.tsx @@ -69,7 +69,7 @@ import IconizedContextMenu, { } from "../context_menus/IconizedContextMenu.tsx"; import ExtraTile from "./ExtraTile.tsx"; import RoomSublist, { type IAuxButtonProps } from "./RoomSublist.tsx"; -import { SdkContextClass } from "../../../contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; import { KeyBindingAction } from "../../../accessibility/KeyboardShortcuts.ts"; import { getKeyBindingsManager } from "../../../KeyBindingsManager.ts"; import AccessibleButton from "../elements/AccessibleButton.tsx"; @@ -462,7 +462,7 @@ export default class LegacyRoomList extends React.PureComponent public componentDidMount(): void { this.dispatcherRef = defaultDispatcher.register(this.onAction); - SdkContextClass.instance.roomViewStore.on(UPDATE_EVENT, this.onRoomViewStoreUpdate); + SDKContextClass.instance.roomViewStore.on(UPDATE_EVENT, this.onRoomViewStoreUpdate); SpaceStore.instance.on(UPDATE_SUGGESTED_ROOMS, this.updateSuggestedRooms); RoomListStore.instance.on(LISTS_UPDATE_EVENT, this.updateLists); LegacyCallHandler.instance.on(LegacyCallHandlerEvent.ProtocolSupport, this.updateProtocolSupport); @@ -473,7 +473,7 @@ export default class LegacyRoomList extends React.PureComponent SpaceStore.instance.off(UPDATE_SUGGESTED_ROOMS, this.updateSuggestedRooms); RoomListStore.instance.off(LISTS_UPDATE_EVENT, this.updateLists); defaultDispatcher.unregister(this.dispatcherRef); - SdkContextClass.instance.roomViewStore.off(UPDATE_EVENT, this.onRoomViewStoreUpdate); + SDKContextClass.instance.roomViewStore.off(UPDATE_EVENT, this.onRoomViewStoreUpdate); LegacyCallHandler.instance.off(LegacyCallHandlerEvent.ProtocolSupport, this.updateProtocolSupport); } @@ -483,14 +483,14 @@ export default class LegacyRoomList extends React.PureComponent private onRoomViewStoreUpdate = (): void => { this.setState({ - currentRoomId: SdkContextClass.instance.roomViewStore.getRoomId() ?? undefined, + currentRoomId: SDKContextClass.instance.roomViewStore.getRoomId() ?? undefined, }); }; private onAction = (payload: ActionPayload): void => { if (payload.action === Action.ViewRoomDelta) { const viewRoomDeltaPayload = payload as ViewRoomDeltaPayload; - const currentRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const currentRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (!currentRoomId) return; const room = this.getRoomDelta(currentRoomId, viewRoomDeltaPayload.delta, viewRoomDeltaPayload.unread); if (room) { diff --git a/apps/web/src/components/views/rooms/RoomTile.tsx b/apps/web/src/components/views/rooms/RoomTile.tsx index 5c4fb91af1..d3230a2efd 100644 --- a/apps/web/src/components/views/rooms/RoomTile.tsx +++ b/apps/web/src/components/views/rooms/RoomTile.tsx @@ -39,7 +39,7 @@ import { KeyBindingAction } from "../../../accessibility/KeyboardShortcuts"; import { getKeyBindingsManager } from "../../../KeyBindingsManager"; import { RoomGeneralContextMenu } from "../context_menus/RoomGeneralContextMenu"; import { CallStore, CallStoreEvent } from "../../../stores/CallStore"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; import { RoomTileSubtitle } from "./RoomTileSubtitle"; import { shouldShowComponent } from "../../../customisations/helpers/UIComponents"; import { UIComponent } from "../../../settings/UIFeature"; @@ -84,7 +84,7 @@ class RoomTile extends React.PureComponent { super(props); this.state = { - selected: SdkContextClass.instance.roomViewStore.getRoomId() === this.props.room.roomId, + selected: SDKContextClass.instance.roomViewStore.getRoomId() === this.props.room.roomId, notificationsMenuPosition: null, generalMenuPosition: null, call: CallStore.instance.getCall(this.props.room.roomId), @@ -150,7 +150,7 @@ class RoomTile extends React.PureComponent { this.scrollIntoView(); } - SdkContextClass.instance.roomViewStore.addRoomListener(this.props.room.roomId, this.onActiveRoomUpdate); + SDKContextClass.instance.roomViewStore.addRoomListener(this.props.room.roomId, this.onActiveRoomUpdate); this.dispatcherRef = defaultDispatcher.register(this.onAction); MessagePreviewStore.instance.on( MessagePreviewStore.getPreviewChangedEventName(this.props.room), @@ -167,7 +167,7 @@ class RoomTile extends React.PureComponent { } public componentWillUnmount(): void { - SdkContextClass.instance.roomViewStore.removeRoomListener(this.props.room.roomId, this.onActiveRoomUpdate); + SDKContextClass.instance.roomViewStore.removeRoomListener(this.props.room.roomId, this.onActiveRoomUpdate); MessagePreviewStore.instance.off( MessagePreviewStore.getPreviewChangedEventName(this.props.room), this.onRoomPreviewChanged, diff --git a/apps/web/src/components/views/spaces/QuickSettingsButton.tsx b/apps/web/src/components/views/spaces/QuickSettingsButton.tsx index 06a7aa9bb1..7855990267 100644 --- a/apps/web/src/components/views/spaces/QuickSettingsButton.tsx +++ b/apps/web/src/components/views/spaces/QuickSettingsButton.tsx @@ -30,7 +30,7 @@ import { UserTab } from "../dialogs/UserTab"; import QuickThemeSwitcher from "./QuickThemeSwitcher"; import Modal from "../../../Modal"; import DevtoolsDialog from "../dialogs/DevtoolsDialog"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; const QuickSettingsButton: React.FC<{ isPanelCollapsed: boolean; @@ -40,7 +40,7 @@ const QuickSettingsButton: React.FC<{ const { [MetaSpace.Favourites]: favouritesEnabled, [MetaSpace.People]: peopleEnabled } = useSettingValue("Spaces.enabledMetaSpaces"); - const currentRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const currentRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); const developerModeEnabled = useSettingValue("developerMode"); // "Favourites" and "People" meta spaces are not available in the new room list const newRoomListEnabled = useSettingValue("feature_new_room_list"); diff --git a/apps/web/src/components/views/voip/CallView.tsx b/apps/web/src/components/views/voip/CallView.tsx index 8067cc065c..ac05b06c08 100644 --- a/apps/web/src/components/views/voip/CallView.tsx +++ b/apps/web/src/components/views/voip/CallView.tsx @@ -13,7 +13,7 @@ import { type Call, CallEvent } from "../../../models/Call"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import AppTile from "../elements/AppTile"; import { CallStore } from "../../../stores/CallStore"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; import { useTypedEventEmitter } from "../../../hooks/useEventEmitter"; import { useCall } from "../../../hooks/useCall"; @@ -38,7 +38,7 @@ const JoinCallView: FC = ({ room, resizing, call, role, onClo // The stickyPromise has to resolve before the widget actually becomes sticky. // We only let the widget become sticky after disconnecting all other active calls. const calls = [...CallStore.instance.connectedCalls].filter( - (call) => SdkContextClass.instance.roomViewStore.getRoomId() !== call.roomId, + (call) => SDKContextClass.instance.roomViewStore.getRoomId() !== call.roomId, ); await Promise.all(calls.map(async (call) => await call.disconnect())); }, []); diff --git a/apps/web/src/contexts/SDKContext.ts b/apps/web/src/contexts/SDKContext.ts index 39230a31e3..a424035ecc 100644 --- a/apps/web/src/contexts/SDKContext.ts +++ b/apps/web/src/contexts/SDKContext.ts @@ -7,194 +7,14 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { type MatrixClient } from "matrix-js-sdk/src/matrix"; import { createContext } from "react"; -import defaultDispatcher from "../dispatcher/dispatcher"; -import LegacyCallHandler from "../LegacyCallHandler"; -import { PosthogAnalytics } from "../PosthogAnalytics"; -import { SlidingSyncManager } from "../SlidingSyncManager"; -import { MemberListStore } from "../stores/MemberListStore"; -import { RoomNotificationStateStore } from "../stores/notifications/RoomNotificationStateStore"; -import RightPanelStore from "../stores/right-panel/RightPanelStore"; -import { RoomViewStore } from "../stores/RoomViewStore"; -import SpaceStore, { type SpaceStoreClass } from "../stores/spaces/SpaceStore"; -import TypingStore from "../stores/TypingStore"; -import { UserProfilesStore } from "../stores/UserProfilesStore"; -import { WidgetLayoutStore } from "../stores/widgets/WidgetLayoutStore"; -import { WidgetPermissionStore } from "../stores/widgets/WidgetPermissionStore"; -import { OidcClientStore } from "../stores/oidc/OidcClientStore"; -import WidgetStore from "../stores/WidgetStore"; -import ResizeNotifier from "../utils/ResizeNotifier"; -import { MultiRoomViewStore } from "../stores/MultiRoomViewStore"; +import { type SDKContextClass } from "./SDKContextClass"; // This context is available to components under MatrixChat, -// the context must not be used by components outside a SdkContextClass tree. +// the context must not be used by components outside a SDKContextClass tree. // This assertion allows us to make the type not nullable. -export const SDKContext = createContext(null as any); +// This file is deliberately kept separate from the actual instantiation of the +// stores to keep just a type import to the SDKContextClass itself. +export const SDKContext = createContext(null as any); SDKContext.displayName = "SDKContext"; - -/** - * A class which lazily initialises stores as and when they are requested, ensuring they remain - * as singletons scoped to this object. - */ -export class SdkContextClass { - /** - * The global SdkContextClass instance. This is a temporary measure whilst so many stores remain global - * as well. Over time, these stores should accept a `SdkContextClass` instance in their constructor. - * When all stores do this, this static variable can be deleted. - */ - public static readonly instance = new SdkContextClass(); - - // Optional as we don't have a client on initial load if unregistered. This should be set - // when the MatrixClient is first acquired in the dispatcher event Action.OnLoggedIn. - // It is only safe to set this once, as updating this value will NOT notify components using - // this Context. - public client?: MatrixClient; - - // All protected fields to make it easier to derive test stores - protected _WidgetPermissionStore?: WidgetPermissionStore; - protected _MemberListStore?: MemberListStore; - protected _RightPanelStore?: RightPanelStore; - protected _RoomNotificationStateStore?: RoomNotificationStateStore; - protected _RoomViewStore?: RoomViewStore; - protected _WidgetLayoutStore?: WidgetLayoutStore; - protected _WidgetStore?: WidgetStore; - protected _PosthogAnalytics?: PosthogAnalytics; - protected _SlidingSyncManager?: SlidingSyncManager; - protected _SpaceStore?: SpaceStoreClass; - protected _LegacyCallHandler?: LegacyCallHandler; - protected _TypingStore?: TypingStore; - protected _UserProfilesStore?: UserProfilesStore; - protected _OidcClientStore?: OidcClientStore; - protected _ResizeNotifier?: ResizeNotifier; - protected _MultiRoomViewStore?: MultiRoomViewStore; - - /** - * Automatically construct stores which need to be created eagerly so they can register with - * the dispatcher. - */ - public constructEagerStores(): void { - this._RoomViewStore = this.roomViewStore; - } - - public get legacyCallHandler(): LegacyCallHandler { - if (!this._LegacyCallHandler) { - this._LegacyCallHandler = LegacyCallHandler.instance; - } - return this._LegacyCallHandler; - } - public get rightPanelStore(): RightPanelStore { - if (!this._RightPanelStore) { - this._RightPanelStore = RightPanelStore.instance; - } - return this._RightPanelStore; - } - public get roomNotificationStateStore(): RoomNotificationStateStore { - if (!this._RoomNotificationStateStore) { - this._RoomNotificationStateStore = RoomNotificationStateStore.instance; - } - return this._RoomNotificationStateStore; - } - public get roomViewStore(): RoomViewStore { - if (!this._RoomViewStore) { - this._RoomViewStore = new RoomViewStore(defaultDispatcher, this); - } - return this._RoomViewStore; - } - public get widgetLayoutStore(): WidgetLayoutStore { - if (!this._WidgetLayoutStore) { - this._WidgetLayoutStore = WidgetLayoutStore.instance; - } - return this._WidgetLayoutStore; - } - public get widgetPermissionStore(): WidgetPermissionStore { - if (!this._WidgetPermissionStore) { - this._WidgetPermissionStore = new WidgetPermissionStore(this); - } - return this._WidgetPermissionStore; - } - public get widgetStore(): WidgetStore { - if (!this._WidgetStore) { - this._WidgetStore = WidgetStore.instance; - } - return this._WidgetStore; - } - public get posthogAnalytics(): PosthogAnalytics { - if (!this._PosthogAnalytics) { - this._PosthogAnalytics = PosthogAnalytics.instance; - } - return this._PosthogAnalytics; - } - public get memberListStore(): MemberListStore { - if (!this._MemberListStore) { - this._MemberListStore = new MemberListStore(this); - } - return this._MemberListStore; - } - public get slidingSyncManager(): SlidingSyncManager { - if (!this._SlidingSyncManager) { - this._SlidingSyncManager = SlidingSyncManager.instance; - } - return this._SlidingSyncManager; - } - public get spaceStore(): SpaceStoreClass { - if (!this._SpaceStore) { - this._SpaceStore = SpaceStore.instance; - } - return this._SpaceStore; - } - public get typingStore(): TypingStore { - if (!this._TypingStore) { - this._TypingStore = new TypingStore(this); - window.mxTypingStore = this._TypingStore; - } - return this._TypingStore; - } - - public get userProfilesStore(): UserProfilesStore { - if (!this.client) { - throw new Error("Unable to create UserProfilesStore without a client"); - } - - if (!this._UserProfilesStore) { - this._UserProfilesStore = new UserProfilesStore(this.client); - } - - return this._UserProfilesStore; - } - - public get oidcClientStore(): OidcClientStore { - if (!this.client) { - throw new Error("Unable to create OidcClientStore without a client"); - } - - if (!this._OidcClientStore) { - this._OidcClientStore = new OidcClientStore(this.client); - } - - return this._OidcClientStore; - } - - // This is getting increasingly tenuous to have here but we still have class components so it's - // awkward to consume multiple contexts in them. This should be replaced with ResizeObservers - // anyway really. - public get resizeNotifier(): ResizeNotifier { - if (!this._ResizeNotifier) { - this._ResizeNotifier = new ResizeNotifier(); - } - return this._ResizeNotifier; - } - - public get multiRoomViewStore(): MultiRoomViewStore { - if (!this._MultiRoomViewStore) { - this._MultiRoomViewStore = new MultiRoomViewStore(defaultDispatcher, this); - } - return this._MultiRoomViewStore; - } - - public onLoggedOut(): void { - this._UserProfilesStore = undefined; - this._OidcClientStore = undefined; - } -} diff --git a/apps/web/src/contexts/SDKContextClass.ts b/apps/web/src/contexts/SDKContextClass.ts new file mode 100644 index 0000000000..4b60a734ec --- /dev/null +++ b/apps/web/src/contexts/SDKContextClass.ts @@ -0,0 +1,197 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2022 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { type MatrixClient } from "matrix-js-sdk/src/matrix"; + +import defaultDispatcher from "../dispatcher/dispatcher"; +import LegacyCallHandler from "../LegacyCallHandler"; +import { PosthogAnalytics } from "../PosthogAnalytics"; +import { SlidingSyncManager } from "../SlidingSyncManager"; +import { MemberListStore } from "../stores/MemberListStore"; +import { RoomNotificationStateStore } from "../stores/notifications/RoomNotificationStateStore"; +import RightPanelStore from "../stores/right-panel/RightPanelStore"; +import { RoomViewStore } from "../stores/RoomViewStore"; +import SpaceStore, { type SpaceStoreClass } from "../stores/spaces/SpaceStore"; +import TypingStore from "../stores/TypingStore"; +import { UserProfilesStore } from "../stores/UserProfilesStore"; +import { WidgetLayoutStore } from "../stores/widgets/WidgetLayoutStore"; +import { WidgetPermissionStore } from "../stores/widgets/WidgetPermissionStore"; +import { OidcClientStore } from "../stores/oidc/OidcClientStore"; +import WidgetStore from "../stores/WidgetStore"; +import ResizeNotifier from "../utils/ResizeNotifier"; +import { MultiRoomViewStore } from "../stores/MultiRoomViewStore"; + +/** + * A class which (mostly) lazily initialises stores as and when they are requested, ensuring they remain + * as singletons scoped to this object. + * + * Since this does the actual construction of all stores, it is *very* heavy on imports and lives right near + * the top of the import tree. If anything other than code to set up the app (or tests) are importing this file, + * it's doing it wrong and should be accessing whatever it needs via the react context. + */ +export class SDKContextClass { + /** + * The global SDKContextClass instance. This is a temporary measure whilst so many stores remain global + * as well. Over time, these stores should accept a `SDKContextClass` instance in their constructor. + * When all stores do this, this static variable can be deleted. + */ + public static readonly instance = new SDKContextClass(); + + // Optional as we don't have a client on initial load if unregistered. This should be set + // when the MatrixClient is first acquired in the dispatcher event Action.OnLoggedIn. + // It is only safe to set this once, as updating this value will NOT notify components using + // this Context. + public client?: MatrixClient; + + // All protected fields to make it easier to derive test stores + protected _WidgetPermissionStore?: WidgetPermissionStore; + protected _MemberListStore?: MemberListStore; + protected _RightPanelStore?: RightPanelStore; + protected _RoomNotificationStateStore?: RoomNotificationStateStore; + protected _RoomViewStore?: RoomViewStore; + protected _WidgetLayoutStore?: WidgetLayoutStore; + protected _WidgetStore?: WidgetStore; + protected _PosthogAnalytics?: PosthogAnalytics; + protected _SlidingSyncManager?: SlidingSyncManager; + protected _SpaceStore?: SpaceStoreClass; + protected _LegacyCallHandler?: LegacyCallHandler; + protected _TypingStore?: TypingStore; + protected _UserProfilesStore?: UserProfilesStore; + protected _OidcClientStore?: OidcClientStore; + protected _ResizeNotifier?: ResizeNotifier; + protected _MultiRoomViewStore?: MultiRoomViewStore; + + /** + * Automatically construct stores which need to be created eagerly so they can register with + * the dispatcher. + */ + public constructEagerStores(): void { + this._RoomViewStore = this.roomViewStore; + } + + public get legacyCallHandler(): LegacyCallHandler { + if (!this._LegacyCallHandler) { + this._LegacyCallHandler = LegacyCallHandler.instance; + } + return this._LegacyCallHandler; + } + public get rightPanelStore(): RightPanelStore { + if (!this._RightPanelStore) { + this._RightPanelStore = RightPanelStore.instance; + } + return this._RightPanelStore; + } + public get roomNotificationStateStore(): RoomNotificationStateStore { + if (!this._RoomNotificationStateStore) { + this._RoomNotificationStateStore = RoomNotificationStateStore.instance; + } + return this._RoomNotificationStateStore; + } + public get roomViewStore(): RoomViewStore { + if (!this._RoomViewStore) { + this._RoomViewStore = new RoomViewStore(defaultDispatcher, this); + } + return this._RoomViewStore; + } + public get widgetLayoutStore(): WidgetLayoutStore { + if (!this._WidgetLayoutStore) { + this._WidgetLayoutStore = WidgetLayoutStore.instance; + } + return this._WidgetLayoutStore; + } + public get widgetPermissionStore(): WidgetPermissionStore { + if (!this._WidgetPermissionStore) { + this._WidgetPermissionStore = new WidgetPermissionStore(this); + } + return this._WidgetPermissionStore; + } + public get widgetStore(): WidgetStore { + if (!this._WidgetStore) { + this._WidgetStore = WidgetStore.instance; + } + return this._WidgetStore; + } + public get posthogAnalytics(): PosthogAnalytics { + if (!this._PosthogAnalytics) { + this._PosthogAnalytics = PosthogAnalytics.instance; + } + return this._PosthogAnalytics; + } + public get memberListStore(): MemberListStore { + if (!this._MemberListStore) { + this._MemberListStore = new MemberListStore(this); + } + return this._MemberListStore; + } + public get slidingSyncManager(): SlidingSyncManager { + if (!this._SlidingSyncManager) { + this._SlidingSyncManager = SlidingSyncManager.instance; + } + return this._SlidingSyncManager; + } + public get spaceStore(): SpaceStoreClass { + if (!this._SpaceStore) { + this._SpaceStore = SpaceStore.instance; + } + return this._SpaceStore; + } + public get typingStore(): TypingStore { + if (!this._TypingStore) { + this._TypingStore = new TypingStore(this); + window.mxTypingStore = this._TypingStore; + } + return this._TypingStore; + } + + public get userProfilesStore(): UserProfilesStore { + if (!this.client) { + throw new Error("Unable to create UserProfilesStore without a client"); + } + + if (!this._UserProfilesStore) { + this._UserProfilesStore = new UserProfilesStore(this.client); + } + + return this._UserProfilesStore; + } + + public get oidcClientStore(): OidcClientStore { + if (!this.client) { + throw new Error("Unable to create OidcClientStore without a client"); + } + + if (!this._OidcClientStore) { + this._OidcClientStore = new OidcClientStore(this.client); + } + + return this._OidcClientStore; + } + + // This is getting increasingly tenuous to have here but we still have class components so it's + // awkward to consume multiple contexts in them. This should be replaced with ResizeObservers + // anyway really. + public get resizeNotifier(): ResizeNotifier { + if (!this._ResizeNotifier) { + this._ResizeNotifier = new ResizeNotifier(); + } + return this._ResizeNotifier; + } + + public get multiRoomViewStore(): MultiRoomViewStore { + if (!this._MultiRoomViewStore) { + this._MultiRoomViewStore = new MultiRoomViewStore(defaultDispatcher, this); + } + return this._MultiRoomViewStore; + } + + public onLoggedOut(): void { + this._UserProfilesStore = undefined; + this._OidcClientStore = undefined; + } +} diff --git a/apps/web/src/hooks/room/useRoomCall.tsx b/apps/web/src/hooks/room/useRoomCall.tsx index 6737395cb2..9981bbdbde 100644 --- a/apps/web/src/hooks/room/useRoomCall.tsx +++ b/apps/web/src/hooks/room/useRoomCall.tsx @@ -38,7 +38,7 @@ import { type InteractionName } from "../../PosthogTrackers"; import { ElementCallMemberEventType } from "../../call-types"; import { LocalRoom, LocalRoomState } from "../../models/LocalRoom"; import { useScopedRoomContext } from "../../contexts/ScopedRoomContext"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; const logger = rootLogger.getChild("useRoomCall"); @@ -132,9 +132,9 @@ export const useRoomCall = ( }, [useElementCallExclusively, serverIsConfiguredForElementCall]); const hasLegacyCall = useEventEmitterState( - SdkContextClass.instance.legacyCallHandler, + SDKContextClass.instance.legacyCallHandler, LegacyCallHandlerEvent.CallsChanged, - () => SdkContextClass.instance.legacyCallHandler.getCallForRoom(room.roomId) !== null, + () => SDKContextClass.instance.legacyCallHandler.getCallForRoom(room.roomId) !== null, ); // settings const widgets = useWidgets(room); diff --git a/apps/web/src/hooks/usePermalinkMember.ts b/apps/web/src/hooks/usePermalinkMember.ts index 3e1bd945cf..8ca5d76e75 100644 --- a/apps/web/src/hooks/usePermalinkMember.ts +++ b/apps/web/src/hooks/usePermalinkMember.ts @@ -10,7 +10,8 @@ import { type IMatrixProfile, type MatrixEvent, type Room, RoomMember } from "ma import { useContext, useEffect, useState } from "react"; import { PillType } from "../components/views/elements/PillType"; -import { SDKContext, type SdkContextClass } from "../contexts/SDKContext"; +import { SDKContext } from "../contexts/SDKContext"; +import { type SDKContextClass } from "../contexts/SDKContextClass"; import { type PermalinkParts } from "../utils/permalinks/PermalinkConstructor"; const createMemberFromProfile = (userId: string, profile: IMatrixProfile): RoomMember => { @@ -65,7 +66,7 @@ const determineUserId = ( * If sharing at least one room with the user, then the result will be the profile fetched via API. * null in all other cases. */ -const determineMember = (userId: string, targetRoom: Room, context: SdkContextClass): RoomMember | null => { +const determineMember = (userId: string, targetRoom: Room, context: SDKContextClass): RoomMember | null => { const targetRoomMember = targetRoom.getMember(userId); if (targetRoomMember) return targetRoomMember; diff --git a/apps/web/src/slash-commands/utils.ts b/apps/web/src/slash-commands/utils.ts index 1ec60aecf6..40ec7c2744 100644 --- a/apps/web/src/slash-commands/utils.ts +++ b/apps/web/src/slash-commands/utils.ts @@ -11,7 +11,7 @@ Please see LICENSE files in the repository root for full details. import { EventType, type MatrixClient } from "matrix-js-sdk/src/matrix"; -import { SdkContextClass } from "../contexts/SDKContext"; +import { SDKContextClass } from "../contexts/SDKContextClass"; import { isLocalRoom } from "../utils/localRoom/isLocalRoom"; import Modal from "../Modal"; import UploadConfirmDialog from "../components/views/dialogs/UploadConfirmDialog"; @@ -70,7 +70,7 @@ export const singleMxcUpload = async (cli: MatrixClient): Promise }; export const isCurrentLocalRoom = (cli: MatrixClient | null): boolean => { - const roomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const roomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (!roomId) return false; const room = cli?.getRoom(roomId); if (!room) return false; diff --git a/apps/web/src/stores/MemberListStore.ts b/apps/web/src/stores/MemberListStore.ts index 29269bac94..48f4ead023 100644 --- a/apps/web/src/stores/MemberListStore.ts +++ b/apps/web/src/stores/MemberListStore.ts @@ -10,7 +10,7 @@ import { type Room, type RoomMember } from "matrix-js-sdk/src/matrix"; import { KnownMembership } from "matrix-js-sdk/src/types"; import SettingsStore from "../settings/SettingsStore"; -import { type SdkContextClass } from "../contexts/SDKContext"; +import { type SDKContextClass } from "../contexts/SDKContextClass"; import SdkConfig from "../SdkConfig"; // Regex applied to filter our punctuation in member names before applying sort, to fuzzy it a little @@ -28,7 +28,7 @@ export class MemberListStore { private collator?: Intl.Collator; - public constructor(private readonly stores: SdkContextClass) {} + public constructor(private readonly stores: SDKContextClass) {} /** * Load the member list. Call this whenever the list may have changed. diff --git a/apps/web/src/stores/MultiRoomViewStore.ts b/apps/web/src/stores/MultiRoomViewStore.ts index bc2f090e6f..201458933b 100644 --- a/apps/web/src/stores/MultiRoomViewStore.ts +++ b/apps/web/src/stores/MultiRoomViewStore.ts @@ -9,7 +9,7 @@ import { logger } from "matrix-js-sdk/src/logger"; import { RoomViewStore } from "./RoomViewStore"; import { type MatrixDispatcher } from "../dispatcher/dispatcher"; -import { type SdkContextClass } from "../contexts/SDKContext"; +import { type SDKContextClass } from "../contexts/SDKContextClass"; import { Action } from "../dispatcher/actions"; /** @@ -24,7 +24,7 @@ export class MultiRoomViewStore { public constructor( private dispatcher: MatrixDispatcher, - private sdkContextClass: SdkContextClass, + private sdkContextClass: SDKContextClass, ) {} /** diff --git a/apps/web/src/stores/RoomViewStore.tsx b/apps/web/src/stores/RoomViewStore.tsx index f875d2f26d..c4b76882dd 100644 --- a/apps/web/src/stores/RoomViewStore.tsx +++ b/apps/web/src/stores/RoomViewStore.tsx @@ -41,7 +41,7 @@ import { type ActiveRoomChangedPayload } from "../dispatcher/payloads/ActiveRoom import SettingsStore from "../settings/SettingsStore"; import { awaitRoomDownSync } from "../utils/RoomUpgrade"; import { UPDATE_EVENT } from "./AsyncStore"; -import { type SdkContextClass } from "../contexts/SDKContext"; +import { type SDKContextClass } from "../contexts/SDKContextClass"; import { CallStore } from "./CallStore"; import { type ThreadPayload } from "../dispatcher/payloads/ThreadPayload"; import { type ActionPayload } from "../dispatcher/payloads"; @@ -152,7 +152,7 @@ export class RoomViewStore extends EventEmitter { public constructor( dis: MatrixDispatcher, - private readonly stores: SdkContextClass, + private readonly stores: SDKContextClass, private readonly lockedToRoomId?: string, ) { super(); diff --git a/apps/web/src/stores/TypingStore.ts b/apps/web/src/stores/TypingStore.ts index 31f04121b1..2796cc2293 100644 --- a/apps/web/src/stores/TypingStore.ts +++ b/apps/web/src/stores/TypingStore.ts @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { type SdkContextClass } from "../contexts/SDKContext"; +import { type SDKContextClass } from "../contexts/SDKContextClass"; import SettingsStore from "../settings/SettingsStore"; import { isLocalRoom } from "../utils/localRoom/isLocalRoom"; import Timer from "../utils/Timer"; @@ -26,7 +26,7 @@ export default class TypingStore { }; } = {}; - public constructor(private readonly context: SdkContextClass) { + public constructor(private readonly context: SDKContextClass) { this.reset(); } diff --git a/apps/web/src/stores/right-panel/RightPanelStore.ts b/apps/web/src/stores/right-panel/RightPanelStore.ts index f58559a66e..18db90a9eb 100644 --- a/apps/web/src/stores/right-panel/RightPanelStore.ts +++ b/apps/web/src/stores/right-panel/RightPanelStore.ts @@ -26,7 +26,7 @@ import { import { type ActionPayload } from "../../dispatcher/payloads"; import { Action } from "../../dispatcher/actions"; import { type ActiveRoomChangedPayload } from "../../dispatcher/payloads/ActiveRoomChangedPayload"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { MatrixClientPeg } from "../../MatrixClientPeg"; /** @@ -74,7 +74,7 @@ export default class RightPanelStore extends ReadyWatchingStore { } protected async onReady(): Promise { - this.viewedRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + this.viewedRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); this.matrixClient?.on(CryptoEvent.VerificationRequestReceived, this.onVerificationRequestUpdate); this.loadCacheFromSettings(); this.emitAndUpdateSettings(); diff --git a/apps/web/src/stores/room-list/RoomListStore.ts b/apps/web/src/stores/room-list/RoomListStore.ts index fc2343d441..08c0c1ed35 100644 --- a/apps/web/src/stores/room-list/RoomListStore.ts +++ b/apps/web/src/stores/room-list/RoomListStore.ts @@ -33,7 +33,7 @@ import { SpaceWatcher } from "./SpaceWatcher"; import { type IRoomTimelineActionPayload } from "../../actions/MatrixActionCreators"; import { type RoomListStore as Interface, RoomListStoreEvent } from "./Interface"; import { UPDATE_EVENT } from "../AsyncStore"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { getChangedOverrideRoomMutePushRules } from "../room-list-v3/utils"; import { type TagID } from "../room-list-v3/skip-list/tag"; @@ -113,7 +113,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implem this.readyStore.useUnitTestClient(forcedClient); } - SdkContextClass.instance.roomViewStore.addListener(UPDATE_EVENT, () => this.handleRVSUpdate({})); + SDKContextClass.instance.roomViewStore.addListener(UPDATE_EVENT, () => this.handleRVSUpdate({})); this.algorithm.on(LIST_UPDATED_EVENT, this.onAlgorithmListUpdated); this.algorithm.on(FILTER_CHANGED, this.onAlgorithmFilterUpdated); this.setupWatchers(); @@ -136,7 +136,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implem private handleRVSUpdate({ trigger = true }): void { if (!this.matrixClient) return; // We assume there won't be RVS updates without a client - const activeRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const activeRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (!activeRoomId && this.algorithm.stickyRoom) { this.algorithm.setStickyRoom(null); } else if (activeRoomId) { diff --git a/apps/web/src/stores/spaces/SpaceStore.ts b/apps/web/src/stores/spaces/SpaceStore.ts index 2ccbb750a6..c3e3483b52 100644 --- a/apps/web/src/stores/spaces/SpaceStore.ts +++ b/apps/web/src/stores/spaces/SpaceStore.ts @@ -61,7 +61,7 @@ import { type ViewRoomPayload } from "../../dispatcher/payloads/ViewRoomPayload" import { type ViewHomePagePayload } from "../../dispatcher/payloads/ViewHomePagePayload"; import { type SwitchSpacePayload } from "../../dispatcher/payloads/SwitchSpacePayload"; import { type AfterLeaveRoomPayload } from "../../dispatcher/payloads/AfterLeaveRoomPayload"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { ModuleApi } from "../../modules/Api.ts"; const ACTIVE_SPACE_LS_KEY = "mx_active_space"; @@ -919,7 +919,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient { this.updateNotificationStates(notificationStatesToUpdate); }; - private switchSpaceIfNeeded = (roomId = SdkContextClass.instance.roomViewStore.getRoomId()): void => { + private switchSpaceIfNeeded = (roomId = SDKContextClass.instance.roomViewStore.getRoomId()): void => { if (!roomId) return; if (!this.isRoomInSpace(this.activeSpace, roomId) && !this.matrixClient?.getRoom(roomId)?.isSpaceRoom()) { this.switchToRelatedSpace(roomId); @@ -975,7 +975,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient { // if the room currently being viewed was just joined then switch to its related space if ( newMembership === KnownMembership.Join && - room.roomId === SdkContextClass.instance.roomViewStore.getRoomId() + room.roomId === SDKContextClass.instance.roomViewStore.getRoomId() ) { this.switchSpaceIfNeeded(room.roomId); } @@ -1003,7 +1003,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient { this.emit(room.roomId); } - if (membership === KnownMembership.Join && room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()) { + if (membership === KnownMembership.Join && room.roomId === SDKContextClass.instance.roomViewStore.getRoomId()) { // if the user was looking at the space and then joined: select that space this.setActiveSpace(room.roomId, false); } else if (membership === KnownMembership.Leave && room.roomId === this.activeSpace) { diff --git a/apps/web/src/stores/widgets/ElementWidgetDriver.ts b/apps/web/src/stores/widgets/ElementWidgetDriver.ts index c408d052f5..2b36b70e12 100644 --- a/apps/web/src/stores/widgets/ElementWidgetDriver.ts +++ b/apps/web/src/stores/widgets/ElementWidgetDriver.ts @@ -62,7 +62,7 @@ import { containsEmoji } from "../../effects/utils"; import dis from "../../dispatcher/dispatcher"; import { ElementWidgetCapabilities } from "./ElementWidgetCapabilities"; import { navigateToPermalink } from "../../utils/permalinks/navigator"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { ModuleRunner } from "../../modules/ModuleRunner"; import { ModuleApi } from "../../modules/Api"; import { toWidgetDescriptor } from "../../modules/WidgetLifecycleApi"; @@ -232,7 +232,7 @@ export class ElementWidgetDriver extends WidgetDriver { } // To always allow OIDC requests for element call, the widgetPermissionStore is used: - SdkContextClass.instance.widgetPermissionStore.setOIDCState( + SDKContextClass.instance.widgetPermissionStore.setOIDCState( forWidget, forWidgetKind, inRoomId, @@ -303,7 +303,7 @@ export class ElementWidgetDriver extends WidgetDriver { private getSendEventTarget(roomId: string | null = null): { client: MatrixClient; roomId: string } { const client = MatrixClientPeg.safeGet(); - roomId = roomId || SdkContextClass.instance.roomViewStore.getRoomId() || null; + roomId = roomId || SDKContextClass.instance.roomViewStore.getRoomId() || null; if (!roomId) throw new Error("No room specified and no room in RoomViewStore focus."); return { client, roomId }; } @@ -691,7 +691,7 @@ export class ElementWidgetDriver extends WidgetDriver { }); } - const oidcState = SdkContextClass.instance.widgetPermissionStore.getOIDCState( + const oidcState = SDKContextClass.instance.widgetPermissionStore.getOIDCState( this.forWidget, this.forWidgetKind, this.inRoomId, @@ -773,7 +773,7 @@ export class ElementWidgetDriver extends WidgetDriver { ): Promise { const client = MatrixClientPeg.safeGet(); const dir = direction as Direction; - roomId = roomId ?? SdkContextClass.instance.roomViewStore.getRoomId() ?? undefined; + roomId = roomId ?? SDKContextClass.instance.roomViewStore.getRoomId() ?? undefined; if (typeof roomId !== "string") { throw new Error("Error while reading the current room"); diff --git a/apps/web/src/stores/widgets/WidgetMessaging.ts b/apps/web/src/stores/widgets/WidgetMessaging.ts index 62a99913c9..978a9af51a 100644 --- a/apps/web/src/stores/widgets/WidgetMessaging.ts +++ b/apps/web/src/stores/widgets/WidgetMessaging.ts @@ -61,7 +61,7 @@ import { arrayFastClone } from "../../utils/arrays"; import { type ViewRoomPayload } from "../../dispatcher/payloads/ViewRoomPayload"; import Modal from "../../Modal"; import ErrorDialog from "../../components/views/dialogs/ErrorDialog"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { UPDATE_EVENT } from "../AsyncStore"; // TODO: Purge this code of its overgrown hacks and compatibility shims. @@ -293,7 +293,7 @@ export class WidgetMessaging extends TypedEventEmitter { - const roomId = SdkContextClass.instance.roomViewStore.getRoomId() ?? null; + const roomId = SDKContextClass.instance.roomViewStore.getRoomId() ?? null; if (roomId !== this.viewedRoomId) { this.widgetApi!.setViewedRoomId(roomId); this.viewedRoomId = roomId; @@ -323,8 +323,8 @@ export class WidgetMessaging extends TypedEventEmitterdata?.integId; - const roomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const roomId = SDKContextClass.instance.roomViewStore.getRoomId(); const room = roomId ? this.client.getRoom(roomId) : undefined; if (!room) return; @@ -516,7 +516,7 @@ export class WidgetMessaging extends TypedEventEmitter { - if (added && SdkContextClass.instance.roomViewStore.getRoomId() === space.roomId) { + if (added && SDKContextClass.instance.roomViewStore.getRoomId() === space.roomId) { defaultDispatcher.fire(Action.UpdateSpaceHierarchy); } }); diff --git a/apps/web/src/utils/exportUtils/HtmlExport.tsx b/apps/web/src/utils/exportUtils/HtmlExport.tsx index c3ea5e9fcb..1d005c4618 100644 --- a/apps/web/src/utils/exportUtils/HtmlExport.tsx +++ b/apps/web/src/utils/exportUtils/HtmlExport.tsx @@ -30,7 +30,8 @@ import MatrixClientContext from "../../contexts/MatrixClientContext"; import getExportCSS from "./exportCSS"; import { textForEvent } from "../../TextForEvent"; import { haveRendererForEvent } from "../../events/EventTileFactory"; -import { SDKContext, SdkContextClass } from "../../contexts/SDKContext.ts"; +import { SDKContext } from "../../contexts/SDKContext.ts"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { DateSeparatorViewModel } from "../../viewmodels/room/timeline/DateSeparatorViewModel"; import exportJS from "./exportJS.js?raw"; @@ -285,7 +286,7 @@ export default class HTMLExporter extends Exporter { {/* Export rendering uses an isolated root, so provide I18nContext explicitly. */} - + { const userId = space.client.getUserId()!; @@ -115,7 +115,7 @@ export const showAddExistingSubspace = (space: Room): void => { "mx_AddExistingToSpaceDialog_wrapper", ); finished.then(([added]) => { - if (added && SdkContextClass.instance.roomViewStore.getRoomId() === space.roomId) { + if (added && SDKContextClass.instance.roomViewStore.getRoomId() === space.roomId) { defaultDispatcher.fire(Action.UpdateSpaceHierarchy); } }); @@ -131,7 +131,7 @@ export const showCreateNewSubspace = (space: Room): void => { "mx_CreateSubspaceDialog_wrapper", ); finished.then(([added]) => { - if (added && SdkContextClass.instance.roomViewStore.getRoomId() === space.roomId) { + if (added && SDKContextClass.instance.roomViewStore.getRoomId() === space.roomId) { defaultDispatcher.fire(Action.UpdateSpaceHierarchy); } }); diff --git a/apps/web/src/viewmodels/room-list/RoomListViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListViewModel.ts index 66279c6d8c..540d03c160 100644 --- a/apps/web/src/viewmodels/room-list/RoomListViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListViewModel.ts @@ -34,7 +34,7 @@ import { UPDATE_STATUS_INDICATOR, } from "../../stores/notifications/RoomNotificationStateStore"; import { RoomListItemViewModel } from "./RoomListItemViewModel"; -import { SdkContextClass } from "../../contexts/SDKContext"; +import { SDKContextClass } from "../../contexts/SDKContextClass"; import { hasCreateRoomRights } from "./utils"; import { keepIfSame } from "../../utils/keepIfSame"; import { DefaultTagID } from "../../stores/room-list-v3/skip-list/tag"; @@ -490,7 +490,7 @@ export class RoomListViewModel * Migrated from useRoomListNavigation hook. */ private handleViewRoomDelta(payload: ViewRoomDeltaPayload): void { - const currentRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const currentRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (!currentRoomId) return; const { delta, unread } = payload; @@ -668,7 +668,7 @@ export class RoomListViewModel ): Promise { // Determine the room ID to use for calculations // Use override if provided (e.g., during space changes), otherwise fall back to RoomViewStore - const roomId = roomIdOverride ?? SdkContextClass.instance.roomViewStore.getRoomId(); + const roomId = roomIdOverride ?? SDKContextClass.instance.roomViewStore.getRoomId(); // Apply sticky room logic to keep selected room at same position within its section const stickySections = this.applyStickyRoom(isRoomChange, roomId); diff --git a/apps/web/src/viewmodels/room/timeline/DateSeparatorViewModel.tsx b/apps/web/src/viewmodels/room/timeline/DateSeparatorViewModel.tsx index c29c2b222c..ea05e86d16 100644 --- a/apps/web/src/viewmodels/room/timeline/DateSeparatorViewModel.tsx +++ b/apps/web/src/viewmodels/room/timeline/DateSeparatorViewModel.tsx @@ -28,7 +28,7 @@ import { UIFeature } from "../../../settings/UIFeature"; import ErrorDialog from "../../../components/views/dialogs/ErrorDialog"; import BugReportDialog from "../../../components/views/dialogs/BugReportDialog"; import AccessibleButton from "../../../components/views/elements/AccessibleButton"; -import { SdkContextClass } from "../../../contexts/SDKContext"; +import { SDKContextClass } from "../../../contexts/SDKContextClass"; export interface DateSeparatorViewModelProps { /** @@ -159,7 +159,7 @@ export class DateSeparatorViewModel // Only try to navigate to the room if the user is still viewing the same // room. We don't want to jump someone back to a room after a slow request // if they've already navigated away to another room. - const currentRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const currentRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (currentRoomId === roomIdForJumpRequest) { dispatcher.dispatch({ action: Action.ViewRoom, @@ -185,7 +185,7 @@ export class DateSeparatorViewModel // don't want to worry someone about an error in a room they no longer care // about after a slow request if they've already navigated away to another // room. - const currentRoomId = SdkContextClass.instance.roomViewStore.getRoomId(); + const currentRoomId = SDKContextClass.instance.roomViewStore.getRoomId(); if (currentRoomId === roomIdForJumpRequest) { let friendlyErrorMessage = "An error occured while trying to find and jump to the given date."; let submitDebugLogsContent: React.ReactElement = <>; diff --git a/apps/web/test/test-utils/room.ts b/apps/web/test/test-utils/room.ts index 429feb59db..60eaed5b4d 100644 --- a/apps/web/test/test-utils/room.ts +++ b/apps/web/test/test-utils/room.ts @@ -14,7 +14,7 @@ import { MainSplitContentType } from "../../src/contexts/RoomContext"; import { type RoomContextType, TimelineRenderingType } from "../../src/contexts/RoomContext"; import { Layout } from "../../src/settings/enums/Layout"; import { mkEvent } from "./test-utils"; -import { SdkContextClass } from "../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../src/contexts/SDKContextClass"; export const makeMembershipEvent = (roomId: string, userId: string, membership = KnownMembership.Join) => mkEvent({ @@ -45,7 +45,7 @@ export const makeRoomWithStateEvents = ( export function getRoomContext(room: Room, override: Partial): RoomContextType { return { - roomViewStore: SdkContextClass.instance.roomViewStore, + roomViewStore: SDKContextClass.instance.roomViewStore, room, roomLoading: true, peekLoading: false, diff --git a/apps/web/test/test-utils/wrappers.tsx b/apps/web/test/test-utils/wrappers.tsx index 99ceae7f94..25ad33b0f8 100644 --- a/apps/web/test/test-utils/wrappers.tsx +++ b/apps/web/test/test-utils/wrappers.tsx @@ -12,7 +12,8 @@ import { type RenderOptions } from "jest-matrix-react"; import { MatrixClientPeg as peg } from "../../src/MatrixClientPeg"; import MatrixClientContext from "../../src/contexts/MatrixClientContext"; -import { SDKContext, type SdkContextClass } from "../../src/contexts/SDKContext"; +import { SDKContext } from "../../src/contexts/SDKContext"; +import { type SDKContextClass } from "../../src/contexts/SDKContextClass"; type WrapperProps = { wrappedRef?: Ref> } & T; @@ -38,7 +39,7 @@ export function wrapInMatrixClientContext(WrappedComponent: ComponentType) export function wrapInSdkContext( WrappedComponent: ComponentType, - sdkContext: SdkContextClass, + sdkContext: SDKContextClass, ): ComponentType> { return class extends React.Component> { render() { @@ -63,7 +64,7 @@ export function withClientContextRenderOptions(client: MatrixClient): RenderOpti }; } -export function clientAndSDKContextRenderOptions(client: MatrixClient, sdkContext: SdkContextClass): RenderOptions { +export function clientAndSDKContextRenderOptions(client: MatrixClient, sdkContext: SDKContextClass): RenderOptions { return { wrapper: ({ children }) => ( diff --git a/apps/web/test/unit-tests/Notifier-test.ts b/apps/web/test/unit-tests/Notifier-test.ts index 2c5bf2bce0..0ed1e2fdcb 100644 --- a/apps/web/test/unit-tests/Notifier-test.ts +++ b/apps/web/test/unit-tests/Notifier-test.ts @@ -38,7 +38,7 @@ import { mockPlatformPeg, } from "../test-utils"; import { getIncomingCallToastKey, IncomingCallToast } from "../../src/toasts/IncomingCallToast"; -import { SdkContextClass } from "../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../src/contexts/SDKContextClass"; import UserActivity from "../../src/UserActivity"; import Modal from "../../src/Modal"; import { mkThread } from "../test-utils/threads"; @@ -665,7 +665,7 @@ describe("Notifier", () => { describe("evaluateEvent", () => { beforeEach(() => { - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(testRoom.roomId); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(testRoom.roomId); jest.spyOn(UserActivity.sharedInstance(), "userActiveRecently").mockReturnValue(true); @@ -720,7 +720,7 @@ describe("Notifier", () => { thread_id: rootEvent.getId()!, }); - await waitFor(() => expect(SdkContextClass.instance.roomViewStore.getThreadId()).toBe(rootEvent.getId())); + await waitFor(() => expect(SDKContextClass.instance.roomViewStore.getThreadId()).toBe(rootEvent.getId())); Notifier.evaluateEvent(events[1]); expect(Notifier.displayPopupNotification).toHaveBeenCalledTimes(1); diff --git a/apps/web/test/unit-tests/TestSdkContext.ts b/apps/web/test/unit-tests/TestSDKContext.ts similarity index 89% rename from apps/web/test/unit-tests/TestSdkContext.ts rename to apps/web/test/unit-tests/TestSDKContext.ts index f4d7eea9e2..6f499a4b5b 100644 --- a/apps/web/test/unit-tests/TestSdkContext.ts +++ b/apps/web/test/unit-tests/TestSDKContext.ts @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { SdkContextClass } from "../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../src/contexts/SDKContextClass"; import { type PosthogAnalytics } from "../../src/PosthogAnalytics"; import { type SlidingSyncManager } from "../../src/SlidingSyncManager"; import { type RoomNotificationStateStore } from "../../src/stores/notifications/RoomNotificationStateStore"; @@ -18,10 +18,10 @@ import { type WidgetPermissionStore } from "../../src/stores/widgets/WidgetPermi import type WidgetStore from "../../src/stores/WidgetStore"; /** - * A class which provides the same API as SdkContextClass but adds additional unsafe setters which can + * A class which provides the same API as SDKContextClass but adds additional unsafe setters which can * replace individual stores. This is useful for tests which need to mock out stores. */ -export class TestSdkContext extends SdkContextClass { +export class TestSDKContext extends SDKContextClass { declare public _RightPanelStore?: RightPanelStore; declare public _RoomNotificationStateStore?: RoomNotificationStateStore; declare public _RoomViewStore?: RoomViewStore; diff --git a/apps/web/test/unit-tests/audio/PlaybackQueue-test.ts b/apps/web/test/unit-tests/audio/PlaybackQueue-test.ts index 15bad79345..d2a09dbab9 100644 --- a/apps/web/test/unit-tests/audio/PlaybackQueue-test.ts +++ b/apps/web/test/unit-tests/audio/PlaybackQueue-test.ts @@ -12,7 +12,7 @@ import { PlaybackQueue } from "../../../src/audio/PlaybackQueue"; import { type Playback, PlaybackState } from "../../../src/audio/Playback"; import { UPDATE_EVENT } from "../../../src/stores/AsyncStore"; import { MockedPlayback } from "./MockedPlayback"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; describe("PlaybackQueue", () => { let playbackQueue: PlaybackQueue; @@ -22,7 +22,7 @@ describe("PlaybackQueue", () => { mockRoom = { getMember: jest.fn(), } as unknown as Mocked; - playbackQueue = new PlaybackQueue(mockRoom, SdkContextClass.instance.roomViewStore); + playbackQueue = new PlaybackQueue(mockRoom, SDKContextClass.instance.roomViewStore); }); it.each([ @@ -76,7 +76,7 @@ describe("PlaybackQueue", () => { `mx_voice_message_clocks_${mockRoom.roomId}`, JSON.stringify(Array.from(clockStates.entries())), ); - playbackQueue = new PlaybackQueue(mockRoom, SdkContextClass.instance.roomViewStore); + playbackQueue = new PlaybackQueue(mockRoom, SDKContextClass.instance.roomViewStore); // @ts-ignore expect(playbackQueue.clockStates.has("a")).toBe(true); diff --git a/apps/web/test/unit-tests/components/structures/LoggedInView-test.tsx b/apps/web/test/unit-tests/components/structures/LoggedInView-test.tsx index 68f8976c25..8b3ab7680e 100644 --- a/apps/web/test/unit-tests/components/structures/LoggedInView-test.tsx +++ b/apps/web/test/unit-tests/components/structures/LoggedInView-test.tsx @@ -31,7 +31,7 @@ import { SDKContext } from "../../../../src/contexts/SDKContext"; import { StandardActions } from "../../../../src/notifications/StandardActions"; import ResizeNotifier from "../../../../src/utils/ResizeNotifier"; import { flushPromises, getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../test-utils"; -import { TestSdkContext } from "../../TestSdkContext"; +import { TestSDKContext } from "../../TestSDKContext"; import defaultDispatcher from "../../../../src/dispatcher/dispatcher"; import SettingsStore from "../../../../src/settings/SettingsStore"; import { SettingLevel } from "../../../../src/settings/SettingLevel"; @@ -80,7 +80,7 @@ describe("", () => { doesServerSupportExtendedProfiles: jest.fn().mockResolvedValue(true), }); const mediaHandler = new MediaHandler(mockClient); - const mockSdkContext = new TestSdkContext(); + const mockSdkContext = new TestSDKContext(); const defaultProps = { matrixClient: mockClient, diff --git a/apps/web/test/unit-tests/components/structures/MainSplit-test.tsx b/apps/web/test/unit-tests/components/structures/MainSplit-test.tsx index da3c29cd36..9568334fb8 100644 --- a/apps/web/test/unit-tests/components/structures/MainSplit-test.tsx +++ b/apps/web/test/unit-tests/components/structures/MainSplit-test.tsx @@ -11,7 +11,8 @@ import { render, fireEvent } from "jest-matrix-react"; import MainSplit from "../../../../src/components/structures/MainSplit"; import { PosthogAnalytics } from "../../../../src/PosthogAnalytics.ts"; -import { SDKContext, SdkContextClass } from "../../../../src/contexts/SDKContext.ts"; +import { SDKContext } from "../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; describe("", () => { const children = ( @@ -20,11 +21,11 @@ describe("", () => {
); const panel =
Right panel
; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; beforeEach(() => { localStorage.clear(); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); }); it("renders", () => { diff --git a/apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx b/apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx index 65a4c0cf9c..09845b110b 100644 --- a/apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx +++ b/apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx @@ -70,7 +70,7 @@ import { ShareFormat } from "../../../../src/dispatcher/payloads/SharePayload.ts import { clearStorage } from "../../../../src/Lifecycle"; import RoomListStore from "../../../../src/stores/room-list/RoomListStore.ts"; import UserSettingsDialog from "../../../../src/components/views/dialogs/UserSettingsDialog.tsx"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { makeDelegatedAuthConfig } from "../../../test-utils/oidc.ts"; import { type QrLoginCredentials } from "../../../../src/components/views/auth/LoginWithQR.tsx"; @@ -322,24 +322,24 @@ describe("", () => { it("should notify resizenotifier when left panel hidden", async () => { getComponent(); - jest.spyOn(SdkContextClass.instance.resizeNotifier, "notifyLeftHandleResized"); + jest.spyOn(SDKContextClass.instance.resizeNotifier, "notifyLeftHandleResized"); defaultDispatcher.dispatch({ action: "hide_left_panel" }); await waitFor(() => - expect(mocked(SdkContextClass.instance.resizeNotifier.notifyLeftHandleResized)).toHaveBeenCalled(), + expect(mocked(SDKContextClass.instance.resizeNotifier.notifyLeftHandleResized)).toHaveBeenCalled(), ); }); it("should notify resizenotifier when left panel shown", async () => { getComponent(); - jest.spyOn(SdkContextClass.instance.resizeNotifier, "notifyLeftHandleResized"); + jest.spyOn(SDKContextClass.instance.resizeNotifier, "notifyLeftHandleResized"); defaultDispatcher.dispatch({ action: "show_left_panel" }); await waitFor(() => - expect(mocked(SdkContextClass.instance.resizeNotifier.notifyLeftHandleResized)).toHaveBeenCalled(), + expect(mocked(SDKContextClass.instance.resizeNotifier.notifyLeftHandleResized)).toHaveBeenCalled(), ); }); @@ -823,7 +823,7 @@ describe("", () => { await waitFor(() => expect(createDialog).toHaveBeenCalledWith( UserSettingsDialog, - { initialTabId: UserTab.SessionManager, sdkContext: expect.any(SdkContextClass) }, + { initialTabId: UserTab.SessionManager, sdkContext: expect.any(SDKContextClass) }, /*className=*/ undefined, /*isPriority=*/ false, /*isStatic=*/ true, diff --git a/apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx b/apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx index cef5310920..18d2fe2ca7 100644 --- a/apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx +++ b/apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx @@ -31,7 +31,7 @@ import { import type ResizeNotifier from "../../../../src/utils/ResizeNotifier"; import { MatrixClientPeg } from "../../../../src/MatrixClientPeg"; import { ScopedRoomContextProvider } from "../../../../src/contexts/ScopedRoomContext.tsx"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; jest.mock("../../../../src/utils/beacon", () => ({ useBeacon: jest.fn(), @@ -54,7 +54,7 @@ describe("MessagePanel", function () { getClientWellKnown: jest.fn().mockReturnValue({}), supportsThreads: jest.fn().mockReturnValue(true), }); - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; jest.spyOn(MatrixClientPeg, "get").mockReturnValue(client); const room = new Room(roomId, client, userId); @@ -106,7 +106,7 @@ describe("MessagePanel", function () { return arg === "showDisplaynameChanges"; }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); DMRoomMap.makeShared(client); }); diff --git a/apps/web/test/unit-tests/components/structures/PipContainer-test.tsx b/apps/web/test/unit-tests/components/structures/PipContainer-test.tsx index c1b8275981..c77c802cc5 100644 --- a/apps/web/test/unit-tests/components/structures/PipContainer-test.tsx +++ b/apps/web/test/unit-tests/components/structures/PipContainer-test.tsx @@ -41,12 +41,12 @@ import DMRoomMap from "../../../../src/utils/DMRoomMap"; import defaultDispatcher from "../../../../src/dispatcher/dispatcher"; import { Action } from "../../../../src/dispatcher/actions"; import { type ViewRoomPayload } from "../../../../src/dispatcher/payloads/ViewRoomPayload"; -import { TestSdkContext } from "../../TestSdkContext"; +import { TestSDKContext } from "../../TestSDKContext"; import { RoomViewStore } from "../../../../src/stores/RoomViewStore"; import { WidgetLayoutStore } from "../../../../src/stores/widgets/WidgetLayoutStore"; import WidgetStore from "../../../../src/stores/WidgetStore"; import { WidgetType } from "../../../../src/widgets/WidgetType"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { type WidgetMessaging } from "../../../../src/stores/widgets/WidgetMessaging"; jest.mock("../../../../src/stores/OwnProfileStore", () => ({ @@ -65,7 +65,7 @@ describe("PipContainer", () => { jest.spyOn(HTMLMediaElement.prototype, "play").mockImplementation(async () => {}); let user: UserEvent; - let sdkContext: TestSdkContext; + let sdkContext: TestSDKContext; let client: Mocked; let room: Room; let room2: Room; @@ -109,9 +109,9 @@ describe("PipContainer", () => { ), ); - sdkContext = new TestSdkContext(); + sdkContext = new TestSDKContext(); // @ts-ignore PipContainer uses SDKContext in the constructor - SdkContextClass.instance = sdkContext; + SDKContextClass.instance = sdkContext; sdkContext.client = client; }); diff --git a/apps/web/test/unit-tests/components/structures/RightPanel-test.tsx b/apps/web/test/unit-tests/components/structures/RightPanel-test.tsx index 5a5b9237af..e14150e700 100644 --- a/apps/web/test/unit-tests/components/structures/RightPanel-test.tsx +++ b/apps/web/test/unit-tests/components/structures/RightPanel-test.tsx @@ -23,7 +23,7 @@ import { RightPanelPhases } from "../../../../src/stores/right-panel/RightPanelS import RightPanelStore from "../../../../src/stores/right-panel/RightPanelStore"; import { UPDATE_EVENT } from "../../../../src/stores/AsyncStore"; import { WidgetLayoutStore } from "../../../../src/stores/widgets/WidgetLayoutStore"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks"; const RightPanelBase = wrapInMatrixClientContext(_RightPanel); @@ -32,13 +32,13 @@ describe("RightPanel", () => { const resizeNotifier = new ResizeNotifier(); let cli: MockedObject; - let context: SdkContextClass; + let context: SDKContextClass; let RightPanel: React.ComponentType>; beforeEach(() => { stubClient(); cli = mocked(MatrixClientPeg.safeGet()); DMRoomMap.makeShared(cli); - context = new SdkContextClass(); + context = new SDKContextClass(); context.client = cli; RightPanel = wrapInSdkContext(RightPanelBase, context); }); diff --git a/apps/web/test/unit-tests/components/structures/RoomSearchView-test.tsx b/apps/web/test/unit-tests/components/structures/RoomSearchView-test.tsx index 36c204ec13..dccf608003 100644 --- a/apps/web/test/unit-tests/components/structures/RoomSearchView-test.tsx +++ b/apps/web/test/unit-tests/components/structures/RoomSearchView-test.tsx @@ -24,7 +24,7 @@ import { clientAndSDKContextRenderOptions, stubClient } from "../../../test-util import MatrixClientContext from "../../../../src/contexts/MatrixClientContext"; import { MatrixClientPeg } from "../../../../src/MatrixClientPeg"; import { searchPagination, SearchScope } from "../../../../src/Searching"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import SettingsStore from "../../../../src/settings/SettingsStore.ts"; import { SettingLevel } from "../../../../src/settings/SettingLevel.ts"; @@ -36,13 +36,13 @@ jest.mock("../../../../src/Searching", () => ({ describe("", () => { const eventMapper = (obj: Partial) => new MatrixEvent(obj); let client: MatrixClient; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; let room: Room; beforeEach(async () => { stubClient(); client = MatrixClientPeg.safeGet(); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); client.supportsThreads = jest.fn().mockReturnValue(true); room = new Room("!room:server", client, client.getSafeUserId()); mocked(client.getRoom).mockReturnValue(room); diff --git a/apps/web/test/unit-tests/components/structures/RoomView-test.tsx b/apps/web/test/unit-tests/components/structures/RoomView-test.tsx index 90cba684e7..235947d592 100644 --- a/apps/web/test/unit-tests/components/structures/RoomView-test.tsx +++ b/apps/web/test/unit-tests/components/structures/RoomView-test.tsx @@ -55,7 +55,8 @@ import { type LocalRoom, LocalRoomState } from "../../../../src/models/LocalRoom import { DirectoryMember } from "../../../../src/utils/direct-messages"; import { createDmLocalRoom } from "../../../../src/utils/dm/createDmLocalRoom"; import { UPDATE_EVENT } from "../../../../src/stores/AsyncStore"; -import { SDKContext, SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import WidgetUtils from "../../../../src/utils/WidgetUtils"; import { WidgetType } from "../../../../src/widgets/WidgetType"; import WidgetStore from "../../../../src/stores/WidgetStore"; @@ -85,7 +86,7 @@ describe("RoomView", () => { let cli: MockedObject; let room: Room; let rooms: Map; - let stores: SdkContextClass; + let stores: SDKContextClass; let crypto: CryptoApi; // mute some noise @@ -110,7 +111,7 @@ describe("RoomView", () => { room.on(RoomEvent.TimelineReset, (...args) => cli.emit(RoomEvent.TimelineReset, ...args)); DMRoomMap.makeShared(cli); - stores = new SdkContextClass(); + stores = new SDKContextClass(); stores.client = cli; stores.rightPanelStore.useUnitTestClient(cli); diff --git a/apps/web/test/unit-tests/components/structures/ThreadView-test.tsx b/apps/web/test/unit-tests/components/structures/ThreadView-test.tsx index b4f7ed18ae..ea32700a2b 100644 --- a/apps/web/test/unit-tests/components/structures/ThreadView-test.tsx +++ b/apps/web/test/unit-tests/components/structures/ThreadView-test.tsx @@ -23,7 +23,7 @@ import React, { useState } from "react"; import ThreadView from "../../../../src/components/structures/ThreadView"; import MatrixClientContext from "../../../../src/contexts/MatrixClientContext"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { Action } from "../../../../src/dispatcher/actions"; import dispatcher from "../../../../src/dispatcher/dispatcher"; import { MatrixClientPeg } from "../../../../src/MatrixClientPeg"; @@ -190,18 +190,18 @@ describe("ThreadView", () => { }); it("sets the correct thread in the room view store", async () => { - // expect(SdkContextClass.instance.roomViewStore.getThreadId()).toBeNull(); + // expect(SDKContextClass.instance.roomViewStore.getThreadId()).toBeNull(); const { unmount } = await getComponent(); waitFor(() => { - expect(SdkContextClass.instance.roomViewStore.getThreadId()).toBe(rootEvent.getId()); + expect(SDKContextClass.instance.roomViewStore.getThreadId()).toBe(rootEvent.getId()); }); unmount(); - await waitFor(() => expect(SdkContextClass.instance.roomViewStore.getThreadId()).toBeNull()); + await waitFor(() => expect(SDKContextClass.instance.roomViewStore.getThreadId()).toBeNull()); }); it("clears highlight message in the room view store", async () => { - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(room.roomId); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(room.roomId); const mock = jest.spyOn(dispatcher, "dispatch"); const { unmount } = await getComponent(rootEvent); mock.mockClear(); diff --git a/apps/web/test/unit-tests/components/structures/TimelinePanel-test.tsx b/apps/web/test/unit-tests/components/structures/TimelinePanel-test.tsx index ec312a1edf..eeb1740c45 100644 --- a/apps/web/test/unit-tests/components/structures/TimelinePanel-test.tsx +++ b/apps/web/test/unit-tests/components/structures/TimelinePanel-test.tsx @@ -52,7 +52,7 @@ import defaultDispatcher from "../../../../src/dispatcher/dispatcher"; import { Action } from "../../../../src/dispatcher/actions"; import { SettingLevel } from "../../../../src/settings/SettingLevel"; import MatrixClientBackedController from "../../../../src/settings/controllers/MatrixClientBackedController"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import type Timer from "../../../../src/utils/Timer"; // ScrollPanel calls this, but jsdom doesn't mock it for us @@ -162,7 +162,7 @@ const setupPagination = ( describe("TimelinePanel", () => { let client: Mocked; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; let userId: string; filterConsole("checkForPreJoinUISI: showing all messages, skipping check"); @@ -170,7 +170,7 @@ describe("TimelinePanel", () => { beforeEach(() => { client = mocked(stubClient()); userId = client.getSafeUserId(); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); }); describe("read receipts and markers", () => { diff --git a/apps/web/test/unit-tests/components/views/dialogs/InviteDialog-test.tsx b/apps/web/test/unit-tests/components/views/dialogs/InviteDialog-test.tsx index 51a28d8e1b..219556abc2 100644 --- a/apps/web/test/unit-tests/components/views/dialogs/InviteDialog-test.tsx +++ b/apps/web/test/unit-tests/components/views/dialogs/InviteDialog-test.tsx @@ -30,7 +30,7 @@ import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import SdkConfig from "../../../../../src/SdkConfig"; import { type ValidatedServerConfig } from "../../../../../src/utils/ValidatedServerConfig"; import { type IConfigOptions } from "../../../../../src/IConfigOptions"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import { type IProfileInfo } from "../../../../../src/hooks/useProfileInfo"; import { DirectoryMember, startDmOnFirstMessage } from "../../../../../src/utils/direct-messages"; @@ -178,13 +178,13 @@ describe("InviteDialog", () => { mockClient.getRooms.mockReturnValue([room]); mockClient.getRoom.mockReturnValue(room); - SdkContextClass.instance.client = mockClient; + SDKContextClass.instance.client = mockClient; }); afterEach(async () => { await clearAllModals(); - SdkContextClass.instance.onLoggedOut(); - SdkContextClass.instance.client = undefined; + SDKContextClass.instance.onLoggedOut(); + SDKContextClass.instance.client = undefined; }); afterAll(() => { diff --git a/apps/web/test/unit-tests/components/views/dialogs/MessageEditHistoryDialog-test.tsx b/apps/web/test/unit-tests/components/views/dialogs/MessageEditHistoryDialog-test.tsx index 028c415932..375b9f3f8f 100644 --- a/apps/web/test/unit-tests/components/views/dialogs/MessageEditHistoryDialog-test.tsx +++ b/apps/web/test/unit-tests/components/views/dialogs/MessageEditHistoryDialog-test.tsx @@ -13,12 +13,13 @@ import { EventType, MatrixEvent } from "matrix-js-sdk/src/matrix"; import type { MatrixClient } from "matrix-js-sdk/src/matrix"; import { flushPromises, mkMessage, stubClient } from "../../../../test-utils"; import MessageEditHistoryDialog from "../../../../../src/components/views/dialogs/MessageEditHistoryDialog"; -import { SDKContext, SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; describe("", () => { const roomId = "!aroom:example.com"; let client: jest.Mocked; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; let event: MatrixEvent; beforeEach(() => { @@ -29,7 +30,7 @@ describe("", () => { room: "!room:example.com", msg: "My Great Message", }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); }); async function renderComponent(): Promise { diff --git a/apps/web/test/unit-tests/components/views/dialogs/RoomSettingsDialog-test.tsx b/apps/web/test/unit-tests/components/views/dialogs/RoomSettingsDialog-test.tsx index 5bc6933d50..a91812a92e 100644 --- a/apps/web/test/unit-tests/components/views/dialogs/RoomSettingsDialog-test.tsx +++ b/apps/web/test/unit-tests/components/views/dialogs/RoomSettingsDialog-test.tsx @@ -24,7 +24,7 @@ import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext import SettingsStore from "../../../../../src/settings/SettingsStore"; import { UIFeature } from "../../../../../src/settings/UIFeature"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; describe("", () => { const userId = "@alice:server.org"; @@ -44,7 +44,7 @@ describe("", () => { const room2 = new Room("!room2:server.org", mockClient, userId); room2.name = "Another Room"; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; jest.spyOn(SettingsStore, "getValue"); @@ -57,7 +57,7 @@ describe("", () => { return null; }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = mockClient; jest.spyOn(SettingsStore, "getValue").mockReset().mockReturnValue(false); diff --git a/apps/web/test/unit-tests/components/views/dialogs/UserSettingsDialog-test.tsx b/apps/web/test/unit-tests/components/views/dialogs/UserSettingsDialog-test.tsx index e915279bb6..a68cbdac90 100644 --- a/apps/web/test/unit-tests/components/views/dialogs/UserSettingsDialog-test.tsx +++ b/apps/web/test/unit-tests/components/views/dialogs/UserSettingsDialog-test.tsx @@ -26,7 +26,7 @@ import { } from "../../../../test-utils"; import { UIFeature } from "../../../../../src/settings/UIFeature"; import { SettingLevel } from "../../../../../src/settings/SettingLevel"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import { type FeatureSettingKey } from "../../../../../src/settings/Settings.tsx"; import { mockOpenIdConfiguration } from "../../../../test-utils/oidc.ts"; @@ -57,7 +57,7 @@ describe("", () => { const mockSettingsStore = mocked(SettingsStore); let mockClient!: MockedObject; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; const defaultProps = { onFinished: jest.fn() }; const getComponent = ( props: Partial }> = {}, @@ -76,7 +76,7 @@ describe("", () => { getMediaConfig: jest.fn(), getAuthMetadata: jest.fn().mockResolvedValue(mockOpenIdConfiguration()), }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = mockClient; mockSettingsStore.getValue.mockReturnValue(false); mockSettingsStore.getValueAt.mockReturnValue(false); diff --git a/apps/web/test/unit-tests/components/views/elements/AppTile-test.tsx b/apps/web/test/unit-tests/components/views/elements/AppTile-test.tsx index 44f5addcc7..e68c15be37 100644 --- a/apps/web/test/unit-tests/components/views/elements/AppTile-test.tsx +++ b/apps/web/test/unit-tests/components/views/elements/AppTile-test.tsx @@ -39,7 +39,7 @@ import { WidgetMessagingStore } from "../../../../../src/stores/widgets/WidgetMe import { ModuleRunner } from "../../../../../src/modules/ModuleRunner"; import { ModuleApi } from "../../../../../src/modules/Api"; import { RoomPermalinkCreator } from "../../../../../src/utils/permalinks/Permalinks"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; jest.mock("../../../../../src/stores/OwnProfileStore", () => ({ OwnProfileStore: { @@ -56,7 +56,7 @@ const realGetValue = SettingsStore.getValue; describe("AppTile", () => { let cli: MatrixClient; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; let r1: Room; let r2: Room; const resizeNotifier = new ResizeNotifier(); @@ -118,7 +118,7 @@ describe("AppTile", () => { beforeEach(async () => { // Do not carry across settings from previous tests SettingsStore.reset(); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); // @ts-ignore await WidgetMessagingStore.instance.onReady(); diff --git a/apps/web/test/unit-tests/components/views/elements/Pill-test.tsx b/apps/web/test/unit-tests/components/views/elements/Pill-test.tsx index 2119021654..630e70ec2c 100644 --- a/apps/web/test/unit-tests/components/views/elements/Pill-test.tsx +++ b/apps/web/test/unit-tests/components/views/elements/Pill-test.tsx @@ -27,9 +27,10 @@ import { import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import { Action } from "../../../../../src/dispatcher/actions"; import { type ButtonEvent } from "../../../../../src/components/views/elements/AccessibleButton"; -import { SDKContext, SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg.ts"; -import { TestSdkContext } from "../../../TestSdkContext.ts"; +import { TestSDKContext } from "../../../TestSDKContext.ts"; describe("", () => { let client: Mocked; @@ -50,7 +51,7 @@ describe("", () => { const renderPill = (props: PillProps): void => { const cli = MatrixClientPeg.safeGet(); - const mockSdkContext = new TestSdkContext(); + const mockSdkContext = new TestSDKContext(); mockSdkContext.client = cli; const withDefault = { @@ -78,7 +79,7 @@ describe("", () => { beforeEach(() => { client = mocked(stubClient()); - SdkContextClass.instance.client = client; + SDKContextClass.instance.client = client; DMRoomMap.makeShared(client); room1 = new Room(room1Id, client, user1Id); room1.name = "Room 1"; diff --git a/apps/web/test/unit-tests/components/views/messages/MVoiceMessageBody-test.tsx b/apps/web/test/unit-tests/components/views/messages/MVoiceMessageBody-test.tsx index d31c6f7390..facdd5547c 100644 --- a/apps/web/test/unit-tests/components/views/messages/MVoiceMessageBody-test.tsx +++ b/apps/web/test/unit-tests/components/views/messages/MVoiceMessageBody-test.tsx @@ -16,7 +16,7 @@ import type { MediaEventHelper } from "../../../../../src/utils/MediaEventHelper import MVoiceMessageBody from "../../../../../src/components/views/messages/MVoiceMessageBody"; import { PlaybackQueue } from "../../../../../src/audio/PlaybackQueue"; import { createTestClient } from "../../../../test-utils"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; describe("", () => { let event: MatrixEvent; @@ -26,7 +26,7 @@ describe("", () => { const matrixClient = createTestClient(); const room = new Room("!TESTROOM", matrixClient, "@alice:example.org"); - const playbackQueue = new PlaybackQueue(room, SdkContextClass.instance.roomViewStore); + const playbackQueue = new PlaybackQueue(room, SDKContextClass.instance.roomViewStore); jest.spyOn(PlaybackQueue, "forRoom").mockReturnValue(playbackQueue); jest.spyOn(playbackQueue, "unsortedEnqueue").mockReturnValue(undefined); diff --git a/apps/web/test/unit-tests/components/views/rooms/AppsDrawer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/AppsDrawer-test.tsx index 38efbc1eb8..ddb9396ce9 100644 --- a/apps/web/test/unit-tests/components/views/rooms/AppsDrawer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/AppsDrawer-test.tsx @@ -15,21 +15,22 @@ import AppsDrawer from "../../../../../src/components/views/rooms/AppsDrawer"; import SdkConfig from "../../../../../src/SdkConfig"; import { WidgetLayoutStore } from "../../../../../src/stores/widgets/WidgetLayoutStore"; import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext"; -import { SDKContext, SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; const ROOM_ID = "!room:id"; describe("AppsDrawer", () => { let client: MatrixClient; let room: Room; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; beforeEach(async () => { client = stubClient(); room = new Room(ROOM_ID, client, client.getUserId()!, { pendingEventOrdering: PendingEventOrdering.Detached, }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); }); afterEach(() => { diff --git a/apps/web/test/unit-tests/components/views/rooms/BasicMessageComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/BasicMessageComposer-test.tsx index e1b2aa00a5..848fa3ca45 100644 --- a/apps/web/test/unit-tests/components/views/rooms/BasicMessageComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/BasicMessageComposer-test.tsx @@ -18,7 +18,7 @@ import EditorModel from "../../../../../src/editor/model"; import { createPartCreator, createRenderer } from "../../../editor/mock"; import { CommandPartCreator } from "../../../../../src/editor/parts"; import DocumentOffset from "../../../../../src/editor/offset"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import SettingsStore from "../../../../../src/settings/SettingsStore"; describe("BasicMessageComposer", () => { @@ -114,7 +114,7 @@ describe("BasicMessageComposer", () => { const model = new EditorModel([commandPart], commandPc, renderer); // spy on typingStore.setSelfTyping - const spy = jest.spyOn(SdkContextClass.instance.typingStore, "setSelfTyping"); + const spy = jest.spyOn(SDKContextClass.instance.typingStore, "setSelfTyping"); render(); diff --git a/apps/web/test/unit-tests/components/views/rooms/PinnedMessageBanner-test.tsx b/apps/web/test/unit-tests/components/views/rooms/PinnedMessageBanner-test.tsx index da6ba71e90..02b5f81b58 100644 --- a/apps/web/test/unit-tests/components/views/rooms/PinnedMessageBanner-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/PinnedMessageBanner-test.tsx @@ -20,7 +20,7 @@ import RightPanelStore from "../../../../../src/stores/right-panel/RightPanelSto import { RightPanelPhases } from "../../../../../src/stores/right-panel/RightPanelStorePhases"; import { UPDATE_EVENT } from "../../../../../src/stores/AsyncStore"; import { Action } from "../../../../../src/dispatcher/actions"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; describe("", () => { const userId = "@alice:server.org"; @@ -29,12 +29,12 @@ describe("", () => { let mockClient: MatrixClient; let room: Room; let permalinkCreator: RoomPermalinkCreator; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; beforeEach(() => { mockClient = stubClient(); room = new Room(roomId, mockClient, userId); permalinkCreator = new RoomPermalinkCreator(room); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); jest.spyOn(dis, "dispatch").mockReturnValue(undefined); }); diff --git a/apps/web/test/unit-tests/components/views/rooms/RoomHeader/CallGuestLinkButton-test.tsx b/apps/web/test/unit-tests/components/views/rooms/RoomHeader/CallGuestLinkButton-test.tsx index f4c1eee74f..73da646362 100644 --- a/apps/web/test/unit-tests/components/views/rooms/RoomHeader/CallGuestLinkButton-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/RoomHeader/CallGuestLinkButton-test.tsx @@ -11,7 +11,8 @@ import { fireEvent, getByLabelText, getByText, render, screen, waitFor } from "j import { type EventTimeline, JoinRule, Room } from "matrix-js-sdk/src/matrix"; import { KnownMembership } from "matrix-js-sdk/src/types"; -import { SDKContext, SdkContextClass } from "../../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../../src/contexts/SDKContextClass"; import { getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../../../test-utils"; import { CallGuestLinkButton, @@ -25,7 +26,7 @@ import SettingsStore from "../../../../../../src/settings/SettingsStore"; describe("", () => { const roomId = "!room:server.org"; - let sdkContext!: SdkContextClass; + let sdkContext!: SDKContextClass; let modalSpy: jest.SpyInstance; let modalResolve: (value: unknown[] | PromiseLike) => void; let room: Room; @@ -77,7 +78,7 @@ describe("", () => { ...mockClientMethodsUser(), sendStateEvent: jest.fn(), }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = client; const modalPromise = new Promise((resolve) => { modalResolve = resolve; @@ -93,7 +94,7 @@ describe("", () => { return oldGet(key); }); jest.spyOn(room, "hasEncryptionStateEvent").mockReturnValue(true); - jest.spyOn(SdkContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); + jest.spyOn(SDKContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); }); afterEach(() => { jest.restoreAllMocks(); @@ -151,7 +152,7 @@ describe("", () => { it("don't show external conference button if now guest spa link is configured", () => { jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Public); - jest.spyOn(SdkContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); + jest.spyOn(SDKContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); jest.spyOn(SdkConfig, "get").mockImplementation((key) => { if (key === "element_call") { @@ -178,7 +179,7 @@ describe("", () => { it("opens the share dialog with the correct share link in an encrypted room", () => { jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Public); - jest.spyOn(SdkContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); + jest.spyOn(SDKContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); getComponent(room); const modalSpy = jest.spyOn(Modal, "createDialog"); @@ -200,7 +201,7 @@ describe("", () => { it("share dialog has correct link in an unencrypted room", () => { jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Public); jest.spyOn(room, "hasEncryptionStateEvent").mockReturnValue(false); - jest.spyOn(SdkContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); + jest.spyOn(SDKContextClass.instance.roomViewStore, "isViewingCall").mockReturnValue(true); getComponent(room); const modalSpy = jest.spyOn(Modal, "createDialog"); diff --git a/apps/web/test/unit-tests/components/views/rooms/RoomHeader/VideoRoomChatButton-test.tsx b/apps/web/test/unit-tests/components/views/rooms/RoomHeader/VideoRoomChatButton-test.tsx index 5ae6560779..abaad76150 100644 --- a/apps/web/test/unit-tests/components/views/rooms/RoomHeader/VideoRoomChatButton-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/RoomHeader/VideoRoomChatButton-test.tsx @@ -12,7 +12,8 @@ import { Room } from "matrix-js-sdk/src/matrix"; import { fireEvent, render, screen, waitFor } from "jest-matrix-react"; import { VideoRoomChatButton } from "../../../../../../src/components/views/rooms/RoomHeader/VideoRoomChatButton"; -import { SDKContext, SdkContextClass } from "../../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../../src/contexts/SDKContextClass"; import type RightPanelStore from "../../../../../../src/stores/right-panel/RightPanelStore"; import { getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../../../test-utils"; import { RoomNotificationState } from "../../../../../../src/stores/notifications/RoomNotificationState"; @@ -22,7 +23,7 @@ import { RightPanelPhases } from "../../../../../../src/stores/right-panel/Right describe("", () => { const roomId = "!room:server.org"; - let sdkContext!: SdkContextClass; + let sdkContext!: SDKContextClass; let rightPanelStore!: MockedObject; /** @@ -58,7 +59,7 @@ describe("", () => { rightPanelStore = { showOrHidePhase: jest.fn(), } as unknown as MockedObject; - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = client; jest.spyOn(sdkContext, "rightPanelStore", "get").mockReturnValue(rightPanelStore); }); diff --git a/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx b/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx index 0b583d1de2..e3b358d9b3 100644 --- a/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx @@ -38,7 +38,7 @@ import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import PlatformPeg from "../../../../../src/PlatformPeg"; import type BasePlatform from "../../../../../src/BasePlatform"; import { WidgetMessagingStore } from "../../../../../src/stores/widgets/WidgetMessagingStore"; -import { TestSdkContext } from "../../../TestSdkContext"; +import { TestSDKContext } from "../../../TestSDKContext"; import { SDKContext } from "../../../../../src/contexts/SDKContext"; import { shouldShowComponent } from "../../../../../src/customisations/helpers/UIComponents"; import { UIComponent } from "../../../../../src/settings/UIFeature"; @@ -73,7 +73,7 @@ describe("RoomTile", () => { let client: Mocked; let room: Room; - let sdkContext: TestSdkContext; + let sdkContext: TestSDKContext; let showMessagePreview = false; filterConsole( @@ -114,7 +114,7 @@ describe("RoomTile", () => { beforeEach(() => { useMockMediaDevices(); - sdkContext = new TestSdkContext(); + sdkContext = new TestSDKContext(); client = mocked(stubClient()); sdkContext.client = client; diff --git a/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx index edc22ef247..96199f5ad9 100644 --- a/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx @@ -30,7 +30,7 @@ import { mockPlatformPeg } from "../../../../test-utils/platform"; import { doMaybeLocalRoomAction } from "../../../../../src/utils/local-room"; import { addTextToComposer } from "../../../../test-utils/composer"; import { ScopedRoomContextProvider } from "../../../../../src/contexts/ScopedRoomContext.tsx"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import { RoomUploadContextProvider } from "../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; jest.mock("../../../../../src/utils/local-room", () => ({ @@ -39,7 +39,7 @@ jest.mock("../../../../../src/utils/local-room", () => ({ describe("", () => { const defaultRoomContext: RoomContextType = { - roomViewStore: SdkContextClass.instance.roomViewStore, + roomViewStore: SDKContextClass.instance.roomViewStore, roomLoading: true, peekLoading: false, shouldPeek: true, diff --git a/apps/web/test/unit-tests/components/views/rooms/memberlist/common.tsx b/apps/web/test/unit-tests/components/views/rooms/memberlist/common.tsx index af474a13d2..e0dd44b495 100644 --- a/apps/web/test/unit-tests/components/views/rooms/memberlist/common.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/memberlist/common.tsx @@ -26,7 +26,7 @@ import { KnownMembership } from "matrix-js-sdk/src/types"; import { MatrixClientPeg } from "../../../../../../src/MatrixClientPeg"; import * as TestUtils from "../../../../../test-utils"; import { SDKContext } from "../../../../../../src/contexts/SDKContext"; -import { TestSdkContext } from "../../../../TestSdkContext"; +import { TestSDKContext } from "../../../../TestSDKContext"; import MemberListView from "../../../../../../src/components/views/rooms/MemberList/MemberListView"; import MatrixClientContext from "../../../../../../src/contexts/MatrixClientContext"; @@ -121,7 +121,7 @@ export async function renderMemberList( memberListRoom.currentState.members[member.userId] = member; } - const context = new TestSdkContext(); + const context = new TestSDKContext(); context.client = client; context.memberListStore.isPresenceEnabled = jest.fn().mockReturnValue(enablePresence); const root = render( diff --git a/apps/web/test/unit-tests/components/views/settings/tabs/user/AccountUserSettingsTab-test.tsx b/apps/web/test/unit-tests/components/views/settings/tabs/user/AccountUserSettingsTab-test.tsx index 03f8679312..e1eca9e8b0 100644 --- a/apps/web/test/unit-tests/components/views/settings/tabs/user/AccountUserSettingsTab-test.tsx +++ b/apps/web/test/unit-tests/components/views/settings/tabs/user/AccountUserSettingsTab-test.tsx @@ -15,7 +15,8 @@ import { type MockedObject } from "jest-mock-vitest-adapter"; import { ToastContext, ToastRack } from "@element-hq/web-shared-components"; import AccountUserSettingsTab from "../../../../../../../src/components/views/settings/tabs/user/AccountUserSettingsTab"; -import { SdkContextClass, SDKContext } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../../../src/contexts/SDKContextClass"; import SettingsStore from "../../../../../../../src/settings/SettingsStore"; import { getMockClientWithEventEmitter, @@ -50,7 +51,7 @@ describe("", () => { const userId = "@alice:server.org"; let mockClient: MockedObject; - let stores: SdkContextClass; + let stores: SDKContextClass; const getComponent = () => ( @@ -86,7 +87,7 @@ describe("", () => { id_server_unbind_result: "success", }); - stores = new SdkContextClass(); + stores = new SDKContextClass(); stores.client = mockClient; // stub out this store completely to avoid mocking initialisation const mockOidcClientStore = {} as unknown as OidcClientStore; diff --git a/apps/web/test/unit-tests/components/views/settings/tabs/user/SecurityUserSettingsTab-test.tsx b/apps/web/test/unit-tests/components/views/settings/tabs/user/SecurityUserSettingsTab-test.tsx index 4798c48997..7ae2ccdaa4 100644 --- a/apps/web/test/unit-tests/components/views/settings/tabs/user/SecurityUserSettingsTab-test.tsx +++ b/apps/web/test/unit-tests/components/views/settings/tabs/user/SecurityUserSettingsTab-test.tsx @@ -19,7 +19,8 @@ import { mockClientMethodsDevice, mockPlatformPeg, } from "../../../../../../test-utils"; -import { SDKContext, SdkContextClass } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../../../src/contexts/SDKContextClass"; import defaultDispatcher from "../../../../../../../src/dispatcher/dispatcher"; import { UIFeature } from "../../../../../../../src/settings/UIFeature"; import SettingsStore from "../../../../../../../src/settings/SettingsStore"; @@ -41,7 +42,7 @@ describe("", () => { setIgnoredUsers, }); - const sdkContext = new SdkContextClass(); + const sdkContext = new SDKContextClass(); sdkContext.client = mockClient; const getComponent = () => ( diff --git a/apps/web/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx b/apps/web/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx index a5fa0eee22..35a4d04d3f 100644 --- a/apps/web/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx +++ b/apps/web/test/unit-tests/components/views/settings/tabs/user/SessionManagerTab-test.tsx @@ -56,7 +56,8 @@ import { import { INACTIVE_DEVICE_AGE_MS } from "../../../../../../../src/components/views/settings/devices/filter"; import SettingsStore from "../../../../../../../src/settings/SettingsStore"; import { getClientInformationEventType } from "../../../../../../../src/utils/device/clientInformation"; -import { SDKContext, SdkContextClass } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../../../src/contexts/SDKContextClass"; import { type OidcClientStore } from "../../../../../../../src/stores/oidc/OidcClientStore"; import { makeDelegatedAuthConfig } from "../../../../../../test-utils/oidc"; import MatrixClientContext from "../../../../../../../src/contexts/MatrixClientContext"; @@ -133,7 +134,7 @@ describe("", () => { } as unknown as CryptoApi); let mockClient!: MockedObject; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; const defaultProps = {}; const getComponent = (props = {}): React.ReactElement => ( @@ -249,7 +250,7 @@ describe("", () => { } }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = mockClient; // @ts-ignore allow delete of non-optional prop diff --git a/apps/web/test/unit-tests/components/views/spaces/QuickSettingsButton-test.tsx b/apps/web/test/unit-tests/components/views/spaces/QuickSettingsButton-test.tsx index 7ca3d573bb..e6ed934681 100644 --- a/apps/web/test/unit-tests/components/views/spaces/QuickSettingsButton-test.tsx +++ b/apps/web/test/unit-tests/components/views/spaces/QuickSettingsButton-test.tsx @@ -13,7 +13,7 @@ import { mocked } from "jest-mock"; import QuickSettingsButton from "../../../../../src/components/views/spaces/QuickSettingsButton"; import SettingsStore from "../../../../../src/settings/SettingsStore"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; describe("QuickSettingsButton", () => { const roomId = "!room:example.com"; @@ -72,11 +72,11 @@ describe("QuickSettingsButton", () => { describe("and a room is viewed", () => { beforeEach(() => { - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(roomId); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(roomId); }); afterEach(() => { - mocked(SdkContextClass.instance.roomViewStore.getRoomId).mockRestore(); + mocked(SDKContextClass.instance.roomViewStore.getRoomId).mockRestore(); }); describe("and the quick settings are open", () => { diff --git a/apps/web/test/unit-tests/components/views/spaces/SpacePanel-test.tsx b/apps/web/test/unit-tests/components/views/spaces/SpacePanel-test.tsx index acb38a07b3..1970e7505a 100644 --- a/apps/web/test/unit-tests/components/views/spaces/SpacePanel-test.tsx +++ b/apps/web/test/unit-tests/components/views/spaces/SpacePanel-test.tsx @@ -17,7 +17,7 @@ import { MetaSpace, type SpaceKey } from "../../../../../src/stores/spaces"; import { shouldShowComponent } from "../../../../../src/customisations/helpers/UIComponents"; import { UIComponent } from "../../../../../src/settings/UIFeature"; import { mkStubRoom, wrapInMatrixClientContext, wrapInSdkContext } from "../../../../test-utils"; -import { SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; import SpaceStore from "../../../../../src/stores/spaces/SpaceStore"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import { type SpaceNotificationState } from "../../../../../src/stores/notifications/SpaceNotificationState"; @@ -124,12 +124,12 @@ describe("", () => { isVersionSupported: jest.fn().mockResolvedValue(true), doesServerSupportUnstableFeature: jest.fn().mockResolvedValue(false), } as unknown as MatrixClient; - const SpacePanel = wrapInSdkContext(wrapInMatrixClientContext(UnwrappedSpacePanel), SdkContextClass.instance); + const SpacePanel = wrapInSdkContext(wrapInMatrixClientContext(UnwrappedSpacePanel), SDKContextClass.instance); beforeAll(() => { jest.spyOn(MatrixClientPeg, "get").mockReturnValue(mockClient); jest.spyOn(MatrixClientPeg, "safeGet").mockReturnValue(mockClient); - SdkContextClass.instance.client = mockClient; + SDKContextClass.instance.client = mockClient; }); beforeEach(() => { diff --git a/apps/web/test/unit-tests/components/views/voip/LegacyCallViewForRoom-test.tsx b/apps/web/test/unit-tests/components/views/voip/LegacyCallViewForRoom-test.tsx index 2739c31257..8284c796be 100644 --- a/apps/web/test/unit-tests/components/views/voip/LegacyCallViewForRoom-test.tsx +++ b/apps/web/test/unit-tests/components/views/voip/LegacyCallViewForRoom-test.tsx @@ -16,17 +16,18 @@ import { mkStubRoom, stubClient } from "../../../../test-utils"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg"; import LegacyCallHandler from "../../../../../src/LegacyCallHandler"; -import { SDKContext, SdkContextClass } from "../../../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../../src/contexts/SDKContextClass"; jest.mock("../../../../../src/components/views/voip/LegacyCallView", () => jest.fn(() => "LegacyCallView")); describe("LegacyCallViewForRoom", () => { const LegacyCallViewMock = LegacyCallView as unknown as jest.Mock; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; beforeEach(() => { stubClient(); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); LegacyCallViewMock.mockClear(); }); diff --git a/apps/web/test/unit-tests/contexts/SdkContext-test.ts b/apps/web/test/unit-tests/contexts/SdkContext-test.ts index edb7f92592..dc0cb3208e 100644 --- a/apps/web/test/unit-tests/contexts/SdkContext-test.ts +++ b/apps/web/test/unit-tests/contexts/SdkContext-test.ts @@ -8,13 +8,13 @@ Please see LICENSE files in the repository root for full details. import { type MatrixClient } from "matrix-js-sdk/src/matrix"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import { OidcClientStore } from "../../../src/stores/oidc/OidcClientStore"; import { UserProfilesStore } from "../../../src/stores/UserProfilesStore"; import { createTestClient } from "../../test-utils"; -describe("SdkContextClass", () => { - let sdkContext = SdkContextClass.instance; +describe("SDKContextClass", () => { + let sdkContext = SDKContextClass.instance; let client: MatrixClient; beforeAll(() => { @@ -22,12 +22,12 @@ describe("SdkContextClass", () => { }); beforeEach(() => { - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); }); it("instance should always return the same instance", () => { - const globalInstance = SdkContextClass.instance; - expect(SdkContextClass.instance).toBe(globalInstance); + const globalInstance = SDKContextClass.instance; + expect(SDKContextClass.instance).toBe(globalInstance); }); it("userProfilesStore should raise an error without a client", () => { diff --git a/apps/web/test/unit-tests/hooks/useRoomCall-test.tsx b/apps/web/test/unit-tests/hooks/useRoomCall-test.tsx index 53c7e5980f..92ef87ac28 100644 --- a/apps/web/test/unit-tests/hooks/useRoomCall-test.tsx +++ b/apps/web/test/unit-tests/hooks/useRoomCall-test.tsx @@ -22,7 +22,7 @@ import { ScopedRoomContextProvider } from "../../../src/contexts/ScopedRoomConte import RoomContext, { type RoomContextType } from "../../../src/contexts/RoomContext"; import { MatrixClientContextProvider } from "../../../src/components/structures/MatrixClientContextProvider"; import type LegacyCallHandler from "../../../src/LegacyCallHandler"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import SettingsStore from "../../../src/settings/SettingsStore"; import { CallStore } from "../../../src/stores/CallStore"; @@ -59,7 +59,7 @@ describe("useRoomCall", () => { on: jest.fn(), off: jest.fn(), }; - jest.spyOn(SdkContextClass.instance, "legacyCallHandler", "get").mockReturnValue( + jest.spyOn(SDKContextClass.instance, "legacyCallHandler", "get").mockReturnValue( callHandler as unknown as LegacyCallHandler, ); const origGetValue = SettingsStore.getValue; diff --git a/apps/web/test/unit-tests/modules/ExtrasApi-test.tsx b/apps/web/test/unit-tests/modules/ExtrasApi-test.tsx index 4b84017c8c..5edc12464c 100644 --- a/apps/web/test/unit-tests/modules/ExtrasApi-test.tsx +++ b/apps/web/test/unit-tests/modules/ExtrasApi-test.tsx @@ -12,7 +12,8 @@ import { EventEmitter } from "events"; import { stubClient } from "../../test-utils"; import DMRoomMap from "../../../src/utils/DMRoomMap"; -import { SDKContext, SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContext } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import { ScopedRoomContextProvider } from "../../../src/contexts/ScopedRoomContext"; import RoomContext, { type RoomContextType } from "../../../src/contexts/RoomContext"; import MatrixClientContext from "../../../src/contexts/MatrixClientContext"; @@ -21,7 +22,7 @@ import { ModuleApi } from "../../../src/modules/Api"; describe("ExtrasApi", () => { let client: MatrixClient; - let sdkContext: SdkContextClass; + let sdkContext: SDKContextClass; let room: Room; let roomContext: RoomContextType; @@ -30,7 +31,7 @@ describe("ExtrasApi", () => { room = new Room("!test:room", client, "@alice:example.org", { pendingEventOrdering: PendingEventOrdering.Detached, }); - sdkContext = new SdkContextClass(); + sdkContext = new SDKContextClass(); sdkContext.client = client; jest.spyOn(sdkContext.roomViewStore, "getRoomId").mockReturnValue(room.roomId); diff --git a/apps/web/test/unit-tests/slash-commands/utils.ts b/apps/web/test/unit-tests/slash-commands/utils.ts index 5654128100..08c676d1ef 100644 --- a/apps/web/test/unit-tests/slash-commands/utils.ts +++ b/apps/web/test/unit-tests/slash-commands/utils.ts @@ -11,7 +11,7 @@ import { mocked } from "jest-mock"; import { type Command } from "../../../src/slash-commands/command"; import { getCommand } from "../../../src/slash-commands/SlashCommands"; import { stubClient } from "../../test-utils"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import { LocalRoom } from "../../../src/models/LocalRoom"; export function setUpCommandTest( @@ -40,7 +40,7 @@ export function setUpCommandTest( room = new Room(roomId, client, client.getSafeUserId()); } - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(roomId); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(roomId); mocked(client.getRoom).mockImplementation((rId: string): Room | null => { if (rId === roomId) { diff --git a/apps/web/test/unit-tests/stores/MemberListStore-test.ts b/apps/web/test/unit-tests/stores/MemberListStore-test.ts index 9139dde85d..fac5f438f7 100644 --- a/apps/web/test/unit-tests/stores/MemberListStore-test.ts +++ b/apps/web/test/unit-tests/stores/MemberListStore-test.ts @@ -14,7 +14,7 @@ import SdkConfig from "../../../src/SdkConfig"; import SettingsStore from "../../../src/settings/SettingsStore"; import { MemberListStore } from "../../../src/stores/MemberListStore"; import { stubClient } from "../../test-utils"; -import { TestSdkContext } from "../TestSdkContext"; +import { TestSDKContext } from "../TestSDKContext"; describe("MemberListStore", () => { const alice = "@alice:bar"; @@ -26,7 +26,7 @@ describe("MemberListStore", () => { let room: Room; beforeEach(() => { - const context = new TestSdkContext(); + const context = new TestSDKContext(); client = stubClient(); client.baseUrl = "https://invalid.base.url.here"; context.client = client; diff --git a/apps/web/test/unit-tests/stores/MultiRoomViewStore-test.ts b/apps/web/test/unit-tests/stores/MultiRoomViewStore-test.ts index 429ec3c08a..15e769c456 100644 --- a/apps/web/test/unit-tests/stores/MultiRoomViewStore-test.ts +++ b/apps/web/test/unit-tests/stores/MultiRoomViewStore-test.ts @@ -9,14 +9,14 @@ import { MultiRoomViewStore } from "../../../src/stores/MultiRoomViewStore"; import { RoomViewStore } from "../../../src/stores/RoomViewStore"; import { Action } from "../../../src/dispatcher/actions"; import type { MatrixDispatcher } from "../../../src/dispatcher/dispatcher"; -import { TestSdkContext } from "../TestSdkContext"; +import { TestSDKContext } from "../TestSDKContext"; jest.mock("../../../src/stores/RoomViewStore"); describe("MultiRoomViewStore", () => { let multiRoomViewStore: MultiRoomViewStore; let mockDispatcher: MatrixDispatcher; - let mockSdkContext: TestSdkContext; + let mockSdkContext: TestSDKContext; let mockRoomViewStore: jest.Mocked; beforeEach(() => { @@ -30,7 +30,7 @@ describe("MultiRoomViewStore", () => { } as unknown as MatrixDispatcher; // Create mock SDK context - mockSdkContext = new TestSdkContext(); + mockSdkContext = new TestSDKContext(); // Create mock RoomViewStore instance mockRoomViewStore = { diff --git a/apps/web/test/unit-tests/stores/RoomViewStore-test.ts b/apps/web/test/unit-tests/stores/RoomViewStore-test.ts index 4e63d9c1b7..50c8393c95 100644 --- a/apps/web/test/unit-tests/stores/RoomViewStore-test.ts +++ b/apps/web/test/unit-tests/stores/RoomViewStore-test.ts @@ -35,7 +35,7 @@ import { MatrixDispatcher } from "../../../src/dispatcher/dispatcher"; import { UPDATE_EVENT } from "../../../src/stores/AsyncStore"; import { type ActiveRoomChangedPayload } from "../../../src/dispatcher/payloads/ActiveRoomChangedPayload"; import { SpaceStoreClass } from "../../../src/stores/spaces/SpaceStore"; -import { TestSdkContext } from "../TestSdkContext"; +import { TestSDKContext } from "../TestSDKContext"; import { type ViewRoomPayload } from "../../../src/dispatcher/payloads/ViewRoomPayload"; import Modal from "../../../src/Modal"; import ErrorDialog from "../../../src/components/views/dialogs/ErrorDialog"; @@ -175,7 +175,7 @@ describe("RoomViewStore", function () { let roomViewStore: RoomViewStore; let slidingSyncManager: SlidingSyncManager; let dis: MatrixDispatcher; - let stores: TestSdkContext; + let stores: TestSDKContext; beforeEach(function () { jest.clearAllMocks(); @@ -192,7 +192,7 @@ describe("RoomViewStore", function () { // Make the RVS to test dis = new MatrixDispatcher(); slidingSyncManager = new MockSlidingSyncManager(); - stores = new TestSdkContext(); + stores = new TestSDKContext(); stores.client = mockClient; stores._SlidingSyncManager = slidingSyncManager; stores._PosthogAnalytics = new MockPosthogAnalytics(); diff --git a/apps/web/test/unit-tests/stores/TypingStore-test.ts b/apps/web/test/unit-tests/stores/TypingStore-test.ts index 3cf5e17ad1..9b3710f43c 100644 --- a/apps/web/test/unit-tests/stores/TypingStore-test.ts +++ b/apps/web/test/unit-tests/stores/TypingStore-test.ts @@ -11,7 +11,7 @@ import { type MatrixClient } from "matrix-js-sdk/src/matrix"; import TypingStore from "../../../src/stores/TypingStore"; import { LOCAL_ROOM_ID_PREFIX } from "../../../src/models/LocalRoom"; import SettingsStore from "../../../src/settings/SettingsStore"; -import { TestSdkContext } from "../TestSdkContext"; +import { TestSDKContext } from "../TestSDKContext"; jest.mock("../../../src/settings/SettingsStore", () => ({ getValue: jest.fn(), @@ -29,7 +29,7 @@ describe("TypingStore", () => { mockClient = { sendTyping: jest.fn(), } as unknown as MatrixClient; - const context = new TestSdkContext(); + const context = new TestSDKContext(); context.client = mockClient; typingStore = new TypingStore(context); jest.spyOn(SettingsStore, "getValue").mockImplementation((name: string) => { diff --git a/apps/web/test/unit-tests/stores/widgets/ElementWidgetDriver-test.ts b/apps/web/test/unit-tests/stores/widgets/ElementWidgetDriver-test.ts index 2e86fd196c..e7d8af86e3 100644 --- a/apps/web/test/unit-tests/stores/widgets/ElementWidgetDriver-test.ts +++ b/apps/web/test/unit-tests/stores/widgets/ElementWidgetDriver-test.ts @@ -34,7 +34,7 @@ import { WidgetLifecycle, } from "@matrix-org/react-sdk-module-api/lib/lifecycles/WidgetLifecycle"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { MatrixClientPeg } from "../../../../src/MatrixClientPeg"; import { ElementWidgetDriver } from "../../../../src/stores/widgets/ElementWidgetDriver"; import { mkEvent, stubClient } from "../../../test-utils"; @@ -428,7 +428,7 @@ describe("ElementWidgetDriver", () => { }); it("reads related events from the current room", async () => { - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!this-room-id"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!this-room-id"); client.relations.mockResolvedValue({ originalEvent: new MatrixEvent(), diff --git a/apps/web/test/unit-tests/stores/widgets/WidgetMessaging-test.ts b/apps/web/test/unit-tests/stores/widgets/WidgetMessaging-test.ts index eb66502fda..f8662b465a 100644 --- a/apps/web/test/unit-tests/stores/widgets/WidgetMessaging-test.ts +++ b/apps/web/test/unit-tests/stores/widgets/WidgetMessaging-test.ts @@ -38,7 +38,7 @@ import ActiveWidgetStore from "../../../../src/stores/ActiveWidgetStore"; import SettingsStore from "../../../../src/settings/SettingsStore"; import defaultDispatcher from "../../../../src/dispatcher/dispatcher"; import { Action } from "../../../../src/dispatcher/actions"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { UPDATE_EVENT } from "../../../../src/stores/AsyncStore"; import { type IApp } from "../../../../src/utils/WidgetUtils-types"; import { ModalWidgetStore } from "../../../../src/stores/ModalWidgetStore"; @@ -397,7 +397,7 @@ describe("WidgetMessaging as an account widget", () => { beforeEach(() => { stubClient(); // I give up, getting the return type of spyOn right is hopeless - getRoomId = jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId") as unknown as MockedFunction< + getRoomId = jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId") as unknown as MockedFunction< () => string | null >; getRoomId.mockReturnValue("!1:example.org"); @@ -430,7 +430,7 @@ describe("WidgetMessaging as an account widget", () => { expect(messaging.setViewedRoomId).toHaveBeenCalledTimes(1); expect(messaging.setViewedRoomId).toHaveBeenLastCalledWith("!1:example.org"); getRoomId.mockReturnValue("!2:example.org"); - SdkContextClass.instance.roomViewStore.emit(UPDATE_EVENT); + SDKContextClass.instance.roomViewStore.emit(UPDATE_EVENT); expect(messaging.setViewedRoomId).toHaveBeenCalledTimes(2); expect(messaging.setViewedRoomId).toHaveBeenLastCalledWith("!2:example.org"); }); @@ -630,7 +630,7 @@ describe("WidgetMessaging action handling for stickerpicker", () => { const client = mocked(stubClient()); room = mkRoom(client, "!1:example.org"); client.getRoom.mockImplementation((roomId) => (roomId === room.roomId ? room : null)); - const getRoomId = jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId") as unknown as MockedFunction< + const getRoomId = jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId") as unknown as MockedFunction< () => string | null >; getRoomId.mockReturnValue(room.roomId); diff --git a/apps/web/test/unit-tests/stores/widgets/WidgetPermissionStore-test.ts b/apps/web/test/unit-tests/stores/widgets/WidgetPermissionStore-test.ts index b0ebf2b23b..7031e5f686 100644 --- a/apps/web/test/unit-tests/stores/widgets/WidgetPermissionStore-test.ts +++ b/apps/web/test/unit-tests/stores/widgets/WidgetPermissionStore-test.ts @@ -12,9 +12,9 @@ import { Widget, WidgetKind } from "matrix-widget-api"; import { OIDCState, WidgetPermissionStore } from "../../../../src/stores/widgets/WidgetPermissionStore"; import SettingsStore from "../../../../src/settings/SettingsStore"; -import { TestSdkContext } from "../../TestSdkContext"; +import { TestSDKContext } from "../../TestSDKContext"; import { type SettingLevel } from "../../../../src/settings/SettingLevel"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; import { stubClient } from "../../../test-utils"; import { ElementWidgetDriver } from "../../../../src/stores/widgets/ElementWidgetDriver"; import { WidgetType } from "../../../../src/widgets/WidgetType.ts"; @@ -53,7 +53,7 @@ describe("WidgetPermissionStore", () => { }, ); mockClient = stubClient(); - const context = new TestSdkContext(); + const context = new TestSDKContext(); context.client = mockClient; widgetPermissionStore = new WidgetPermissionStore(context); }); @@ -85,8 +85,8 @@ describe("WidgetPermissionStore", () => { // check this is not the case for the entire account expect(widgetPermissionStore.getOIDCState(w, WidgetKind.Account, roomId)).toEqual(OIDCState.Unknown); }); - it("is created once in SdkContextClass", () => { - const context = new SdkContextClass(); + it("is created once in SDKContextClass", () => { + const context = new SDKContextClass(); const store = context.widgetPermissionStore; expect(store).toBeDefined(); const store2 = context.widgetPermissionStore; diff --git a/apps/web/test/unit-tests/utils/exportUtils/HTMLExport-test.ts b/apps/web/test/unit-tests/utils/exportUtils/HTMLExport-test.ts index 2bb92f37c8..49656a9495 100644 --- a/apps/web/test/unit-tests/utils/exportUtils/HTMLExport-test.ts +++ b/apps/web/test/unit-tests/utils/exportUtils/HTMLExport-test.ts @@ -32,7 +32,7 @@ import HTMLExporter from "../../../../src/utils/exportUtils/HtmlExport"; import DMRoomMap from "../../../../src/utils/DMRoomMap"; import { mediaFromMxc } from "../../../../src/customisations/Media"; import SettingsStore from "../../../../src/settings/SettingsStore"; -import { SdkContextClass } from "../../../../src/contexts/SDKContext.ts"; +import { SDKContextClass } from "../../../../src/contexts/SDKContextClass"; jest.mock("jszip"); jest.mock("../../../../src/settings/SettingsStore"); @@ -111,7 +111,7 @@ describe("HTMLExport", () => { jest.setSystemTime(REPEATABLE_DATE); client = stubClient() as jest.Mocked; - SdkContextClass.instance.client = client; + SDKContextClass.instance.client = client; DMRoomMap.makeShared(client); room = new Room("!myroom:example.org", client, "@me:example.org"); diff --git a/apps/web/test/unit-tests/utils/leave-behaviour-test.ts b/apps/web/test/unit-tests/utils/leave-behaviour-test.ts index deca4c517e..334e518e5f 100644 --- a/apps/web/test/unit-tests/utils/leave-behaviour-test.ts +++ b/apps/web/test/unit-tests/utils/leave-behaviour-test.ts @@ -16,7 +16,7 @@ import defaultDispatcher from "../../../src/dispatcher/dispatcher"; import { type ViewRoomPayload } from "../../../src/dispatcher/payloads/ViewRoomPayload"; import { Action } from "../../../src/dispatcher/actions"; import { leaveRoomBehaviour } from "../../../src/utils/leave-behaviour"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import DMRoomMap from "../../../src/utils/DMRoomMap"; import SpaceStore from "../../../src/stores/spaces/SpaceStore"; import { MetaSpace } from "../../../src/stores/spaces"; @@ -27,7 +27,7 @@ import { type Call } from "../../../src/models/Call"; import LegacyCallHandler from "../../../src/LegacyCallHandler"; describe("leaveRoomBehaviour", () => { - SdkContextClass.instance.constructEagerStores(); // Initialize RoomViewStore + SDKContextClass.instance.constructEagerStores(); // Initialize RoomViewStore let client: Mocked; let room: Mocked; diff --git a/apps/web/test/viewmodels/menus/UserMenuViewModel-test.ts b/apps/web/test/viewmodels/menus/UserMenuViewModel-test.ts index bb7ca84591..0dba5425d3 100644 --- a/apps/web/test/viewmodels/menus/UserMenuViewModel-test.ts +++ b/apps/web/test/viewmodels/menus/UserMenuViewModel-test.ts @@ -11,7 +11,7 @@ import type { MockedObject } from "jest-mock-vitest-adapter"; import { UserMenuViewModel } from "../../../src/viewmodels/menus/UserMenuViewModel"; import { getMockClientWithEventEmitter, mockClientMethodsServer, mockClientMethodsUser } from "../../test-utils"; import { MatrixDispatcher } from "../../../src/dispatcher/dispatcher"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import SdkConfig from "../../../src/SdkConfig"; import { Action } from "../../../src/dispatcher/actions"; import { UserTab } from "../../../src/components/views/dialogs/UserTab"; @@ -29,13 +29,13 @@ describe("UserMenuViewModel", () => { getAuthMetadata: jest.fn().mockRejectedValue(new MatrixError({ errcode: "M_UNRECOGNIZED" }, 404)), setExtendedProfileProperty: jest.fn().mockResolvedValue(undefined), }); - SdkContextClass.instance.client = client; + SDKContextClass.instance.client = client; }); afterEach(() => { jest.resetAllMocks(); SdkConfig.reset(); - SdkContextClass.instance.onLoggedOut(); - SdkContextClass.instance.client = undefined; + SDKContextClass.instance.onLoggedOut(); + SDKContextClass.instance.client = undefined; }); it("should generate a menu options for a logged in client", () => { diff --git a/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx b/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx index 8963fa770d..2f0cdecf9e 100644 --- a/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx +++ b/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx @@ -15,7 +15,7 @@ import SpaceStore from "../../../src/stores/spaces/SpaceStore"; import { FilterEnum } from "../../../src/stores/room-list-v3/skip-list/filters"; import dispatcher from "../../../src/dispatcher/dispatcher"; import { Action } from "../../../src/dispatcher/actions"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import DMRoomMap from "../../../src/utils/DMRoomMap"; import { RoomListViewModel } from "../../../src/viewmodels/room-list/RoomListViewModel"; import { hasCreateRoomRights } from "../../../src/viewmodels/room-list/utils"; @@ -68,7 +68,7 @@ describe("RoomListViewModel", () => { jest.spyOn(RoomListStoreV3.instance, "isLoadingRooms", "get").mockReturnValue(false); jest.spyOn(SpaceStore.instance, "activeSpaceRoom", "get").mockReturnValue(null); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); mocked(hasCreateRoomRights).mockReturnValue(false); }); @@ -223,7 +223,7 @@ describe("RoomListViewModel", () => { it("should update active room index when room is selected", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, @@ -239,7 +239,7 @@ describe("RoomListViewModel", () => { it("should return undefined active room index when no room is selected", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); dispatcher.dispatch({ action: Action.ActiveRoomChanged, @@ -258,7 +258,7 @@ describe("RoomListViewModel", () => { viewModel = new RoomListViewModel({ client: matrixClient }); // Select room at index 1 - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, newRoomId: "!room2:server", @@ -284,7 +284,7 @@ describe("RoomListViewModel", () => { viewModel = new RoomListViewModel({ client: matrixClient }); // Select room at index 1 - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, newRoomId: "!room2:server", @@ -293,7 +293,7 @@ describe("RoomListViewModel", () => { await flushPromises(); // User switches to room3 - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room3:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room3:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, oldRoomId: "!room2:server", @@ -489,7 +489,7 @@ describe("RoomListViewModel", () => { it("should navigate to next room when delta is 1", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room1:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room1:server"); const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); @@ -512,7 +512,7 @@ describe("RoomListViewModel", () => { it("should navigate to previous room when delta is -1", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room2:server"); const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); @@ -535,7 +535,7 @@ describe("RoomListViewModel", () => { it("should wrap around to last room when navigating backwards from first room", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room1:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!room1:server"); const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); @@ -558,7 +558,7 @@ describe("RoomListViewModel", () => { it("should not navigate when current room is not found", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!unknown:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!unknown:server"); const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); dispatchSpy.mockClear(); @@ -582,7 +582,7 @@ describe("RoomListViewModel", () => { it("should not navigate when no room is selected", async () => { viewModel = new RoomListViewModel({ client: matrixClient }); - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue(null); const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); dispatchSpy.mockClear(); @@ -859,7 +859,7 @@ describe("RoomListViewModel", () => { expect(favHeader.isExpanded).toBe(false); // Select regularRoom1, which is the first room in the chats section - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!reg1:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!reg1:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, newRoomId: "!reg1:server", @@ -1165,7 +1165,7 @@ describe("RoomListViewModel", () => { viewModel = new RoomListViewModel({ client: matrixClient }); // Select favRoom1 (index 0 globally, index 0 in favourites section) - jest.spyOn(SdkContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!fav1:server"); + jest.spyOn(SDKContextClass.instance.roomViewStore, "getRoomId").mockReturnValue("!fav1:server"); dispatcher.dispatch({ action: Action.ActiveRoomChanged, newRoomId: "!fav1:server", diff --git a/apps/web/test/viewmodels/timeline/DateSeparatorViewModel-test.tsx b/apps/web/test/viewmodels/timeline/DateSeparatorViewModel-test.tsx index b5875a5551..224a205e47 100644 --- a/apps/web/test/viewmodels/timeline/DateSeparatorViewModel-test.tsx +++ b/apps/web/test/viewmodels/timeline/DateSeparatorViewModel-test.tsx @@ -16,13 +16,13 @@ import Modal from "../../../src/Modal"; import { MatrixClientPeg } from "../../../src/MatrixClientPeg"; import SettingsStore from "../../../src/settings/SettingsStore"; import { UIFeature } from "../../../src/settings/UIFeature"; -import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { SDKContextClass } from "../../../src/contexts/SDKContextClass"; import { DateSeparatorViewModel } from "../../../src/viewmodels/room/timeline/DateSeparatorViewModel"; import { flushPromisesWithFakeTimers } from "../../test-utils"; jest.mock("../../../src/settings/SettingsStore"); -jest.mock("../../../src/contexts/SDKContext", () => ({ - SdkContextClass: { +jest.mock("../../../src/contexts/SDKContextClass", () => ({ + SDKContextClass: { instance: { roomViewStore: { getRoomId: jest.fn(), @@ -97,7 +97,7 @@ describe("DateSeparatorViewModel", () => { jest.spyOn(dispatcher, "dispatch").mockImplementation(() => {}); jest.spyOn(Modal, "createDialog").mockImplementation(() => ({ close: jest.fn() }) as any); - mocked(SdkContextClass.instance.roomViewStore.getRoomId).mockReturnValue(roomId); + mocked(SDKContextClass.instance.roomViewStore.getRoomId).mockReturnValue(roomId); }); afterEach(() => { @@ -193,7 +193,7 @@ describe("DateSeparatorViewModel", () => { event_id: "$event", origin_server_ts: nowDate.getTime(), }); - mocked(SdkContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!other:example.org"); + mocked(SDKContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!other:example.org"); const vm = createViewModel(); await vm.pickDate(nowDate.getTime() - HOUR_MS); @@ -299,7 +299,7 @@ describe("DateSeparatorViewModel", () => { }); it("does not jump when room changed before request resolves", async () => { - mocked(SdkContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!some-other-room"); + mocked(SDKContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!some-other-room"); mockTimestampToEvent.mockResolvedValue({ event_id: "$abc", origin_server_ts: 0, @@ -313,7 +313,7 @@ describe("DateSeparatorViewModel", () => { }); it("does not show jump to date error if user switched room", async () => { - mocked(SdkContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!some-other-room"); + mocked(SDKContextClass.instance.roomViewStore.getRoomId).mockReturnValue("!some-other-room"); mockTimestampToEvent.mockRejectedValue(new Error("Fake error in test")); const vm = createViewModel();