Avoid legacy contexts as much as possible (#29537)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2025-03-19 10:40:06 +00:00
committed by GitHub
parent a6ae04bcde
commit 5b1be70ee8
28 changed files with 54 additions and 63 deletions

View File

@@ -40,8 +40,8 @@ export default class EmbeddedPage extends React.PureComponent<IProps, IState> {
private unmounted = false;
private dispatcherRef?: string;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
page: "",

View File

@@ -259,8 +259,8 @@ export default class MessagePanel extends React.Component<IProps, IState> {
// A map to allow groupers to maintain consistent keys even if their first event is uprooted due to back-pagination.
public grouperKeyMap = new WeakMap<MatrixEvent, string>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
// previous positions the read marker has been in, so we can

View File

@@ -38,8 +38,8 @@ export default class NotificationPanel extends React.PureComponent<IProps, IStat
private card = React.createRef<HTMLDivElement>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
narrow: false,

View File

@@ -64,10 +64,6 @@ export default class RightPanel extends React.Component<Props, IState> {
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: Props, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
}
private readonly delayedUpdate = throttle(
(): void => {
this.forceUpdate();

View File

@@ -86,8 +86,8 @@ export default class ThreadView extends React.Component<IProps, IState> {
// Set by setEventId in ctor.
private eventId!: string;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.setEventId(this.props.mxEvent);
const thread = this.props.room.getThread(this.eventId) ?? undefined;

View File

@@ -83,8 +83,8 @@ export default class UserMenu extends React.Component<IProps, IState> {
private readonly dndWatcherRef?: string;
private buttonRef: React.RefObject<HTMLButtonElement> = createRef();
public constructor(props: IProps, context: React.ContextType<typeof SDKContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
contextMenuPosition: null,

View File

@@ -34,8 +34,8 @@ export default class UserView extends React.Component<IProps, IState> {
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
loading: true,
};

View File

@@ -66,8 +66,8 @@ export default class SoftLogout extends React.Component<IProps, IState> {
public static contextType = SDKContext;
declare public context: React.ContextType<typeof SDKContext>;
public constructor(props: IProps, context: React.ContextType<typeof SDKContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
loginView: LoginView.Loading,

View File

@@ -130,8 +130,8 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
private reactButtonRef = createRef<any>(); // XXX Ref to a functional component
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
canRedact: false,

View File

@@ -71,8 +71,8 @@ export default class ReplyChain extends React.Component<IProps, IState> {
private room: Room;
private blockquoteRef = React.createRef<HTMLQuoteElement>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
events: [],

View File

@@ -37,8 +37,8 @@ export default class RoomAliasField extends React.PureComponent<IProps, IState>
private fieldRef = createRef<Field>();
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
isValid: true,

View File

@@ -31,8 +31,8 @@ class ReactionPicker extends React.Component<IProps, IState> {
public static contextType = RoomContext;
declare public context: React.ContextType<typeof RoomContext>;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
selectedEmojis: new Set(Object.keys(this.getReactions())),

View File

@@ -47,8 +47,8 @@ class LocationPicker extends React.Component<ILocationPickerProps, IState> {
private geolocate?: maplibregl.GeolocateControl;
private marker?: maplibregl.Marker;
public constructor(props: ILocationPickerProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: ILocationPickerProps) {
super(props);
this.state = {
position: undefined,

View File

@@ -36,8 +36,8 @@ export default class MLocationBody extends React.Component<IBodyProps, IState> {
private mapId: string;
private reconnectedListener: ClientEventHandlerMap[ClientEvent.Sync];
public constructor(props: IBodyProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IBodyProps) {
super(props);
// multiple instances of same map might be in document
// eg thread and main timeline, reply

View File

@@ -142,8 +142,8 @@ export default class MPollBody extends React.Component<IBodyProps, IState> {
declare public context: React.ContextType<typeof MatrixClientContext>;
private seenEventIds: string[] = []; // Events we have already seen
public constructor(props: IBodyProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IBodyProps) {
super(props);
this.state = {
selected: null,

View File

@@ -27,7 +27,6 @@ import UnknownBody from "./UnknownBody";
import { type IMediaBody } from "./IMediaBody";
import { MediaEventHelper } from "../../../utils/MediaEventHelper";
import { type IBodyProps } from "./IBodyProps";
import MatrixClientContext from "../../../contexts/MatrixClientContext";
import TextualBody from "./TextualBody";
import MImageBody from "./MImageBody";
import MFileBody from "./MFileBody";
@@ -83,11 +82,8 @@ export default class MessageEvent extends React.Component<IProps> implements IMe
private bodyTypes = new Map<string, React.ComponentType<IBodyProps>>(baseBodyTypes.entries());
private evTypes = new Map<string, React.ComponentType<IBodyProps>>(baseEvTypes.entries());
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
if (MediaEventHelper.isEligible(this.props.mxEvent)) {
this.mediaHelper = new MediaEventHelper(this.props.mxEvent);

View File

@@ -77,8 +77,8 @@ export default class TimelineCard extends React.Component<IProps, IState> {
private card = React.createRef<HTMLDivElement>();
private readReceiptsSettingWatcher: string | undefined;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
showReadReceipts: SettingsStore.getValue("showReadReceipts", props.room.roomId),
layout: SettingsStore.getValue("layout"),

View File

@@ -101,8 +101,8 @@ export default class AliasSettings extends React.Component<IProps, IState> {
canSetCanonicalAlias: false,
};
public constructor(props: IProps, context: ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
const state: IState = {
altAliases: [],

View File

@@ -55,8 +55,8 @@ export default class Autocomplete extends React.PureComponent<IProps, IState> {
public static contextType = RoomContext;
declare public context: React.ContextType<typeof RoomContext>;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
// list of completionResults, each containing completions

View File

@@ -437,8 +437,8 @@ export default class LegacyRoomList extends React.PureComponent<IProps, IState>
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
sublists: {},

View File

@@ -124,9 +124,8 @@ export class MessageComposer extends React.Component<IProps, IState> {
isRichTextEnabled: true,
};
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
this.context = context; // otherwise React will only set it prior to render due to type def above
public constructor(props: IProps) {
super(props);
const isWysiwygLabEnabled = SettingsStore.getValue("feature_wysiwyg_composer");
let isRichTextEnabled = true;

View File

@@ -27,8 +27,8 @@ export default class RoomUpgradeWarningBar extends React.PureComponent<IProps, I
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
const tombstone = this.props.room.currentState.getStateEvents("m.room.tombstone", "");
this.state = {

View File

@@ -42,8 +42,8 @@ export default class SearchResultTile extends React.Component<IProps> {
// A map of <callId, LegacyCallEventGrouper>
private callEventGroupers = new Map<string, LegacyCallEventGrouper>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.buildLegacyCallEventGroupers(this.props.timeline);
}

View File

@@ -56,8 +56,8 @@ export default class VoiceRecordComposerTile extends React.PureComponent<IProps,
declare public context: React.ContextType<typeof RoomContext>;
private voiceRecordingId: string;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {};

View File

@@ -35,8 +35,8 @@ export default class GeneralRoomSettingsTab extends React.Component<IProps, ISta
public static contextType = MatrixClientContext;
declare public context: ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
this.state = {
isRoomPublished: false, // loaded async

View File

@@ -62,8 +62,8 @@ export default class SecurityRoomSettingsTab extends React.Component<IProps, ISt
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: IProps) {
super(props);
const state = this.props.room.currentState;

View File

@@ -33,8 +33,8 @@ export default class HelpUserSettingsTab extends React.Component<EmptyObject, IS
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: EmptyObject, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: EmptyObject) {
super(props);
this.state = {
appVersion: null,

View File

@@ -54,8 +54,8 @@ export default class VoiceUserSettingsTab extends React.Component<EmptyObject, I
public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: EmptyObject, context: React.ContextType<typeof MatrixClientContext>) {
super(props, context);
public constructor(props: EmptyObject) {
super(props);
this.state = {
mediaDevices: null,