Fix React class constructor signature to not pass context

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2024-12-06 11:41:32 +00:00
parent 983db465c3
commit 62c765bfd3
No known key found for this signature in database
GPG key ID: A2B008A5F49F5D0D
41 changed files with 89 additions and 90 deletions

View file

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

View file

@ -252,8 +252,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. // 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 grouperKeyMap = new WeakMap<MatrixEvent, string>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
// previous positions the read marker has been in, so we can // 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>(); private card = React.createRef<HTMLDivElement>();
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
narrow: false, narrow: false,

View file

@ -65,8 +65,8 @@ export default class RightPanel extends React.Component<Props, IState> {
public static contextType = MatrixClientContext; public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>; declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: Props, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: Props) {
super(props, context); super(props);
this.state = { this.state = {
searchQuery: "", searchQuery: "",

View file

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

View file

@ -374,16 +374,16 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
public static contextType = SDKContext; public static contextType = SDKContext;
declare public context: React.ContextType<typeof SDKContext>; declare public context: React.ContextType<typeof SDKContext>;
public constructor(props: IRoomProps, context: React.ContextType<typeof SDKContext>) { public constructor(props: IRoomProps) {
super(props, context); super(props);
this.askToJoinEnabled = SettingsStore.getValue("feature_ask_to_join"); this.askToJoinEnabled = SettingsStore.getValue("feature_ask_to_join");
if (!context.client) { if (!this.context.client) {
throw new Error("Unable to create RoomView without MatrixClient"); throw new Error("Unable to create RoomView without MatrixClient");
} }
const llMembers = context.client.hasLazyLoadMembersEnabled(); const llMembers = this.context.client.hasLazyLoadMembersEnabled();
this.state = { this.state = {
roomId: undefined, roomId: undefined,
roomLoading: true, roomLoading: true,
@ -417,7 +417,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
showJoinLeaves: true, showJoinLeaves: true,
showAvatarChanges: true, showAvatarChanges: true,
showDisplaynameChanges: true, showDisplaynameChanges: true,
matrixClientIsReady: context.client?.isInitialSyncComplete(), matrixClientIsReady: this.context.client?.isInitialSyncComplete(),
mainSplitContentType: MainSplitContentType.Timeline, mainSplitContentType: MainSplitContentType.Timeline,
timelineRenderingType: TimelineRenderingType.Room, timelineRenderingType: TimelineRenderingType.Room,
liveTimeline: undefined, liveTimeline: undefined,

View file

@ -601,13 +601,13 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
private dispatcherRef?: string; private dispatcherRef?: string;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props, context); super(props);
let phase = Phase.Landing; let phase = Phase.Landing;
const creator = this.props.space.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); const creator = this.props.space.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender();
const showSetup = this.props.justCreatedOpts && context.getSafeUserId() === creator; const showSetup = this.props.justCreatedOpts && this.context.getSafeUserId() === creator;
if (showSetup) { if (showSetup) {
phase = phase =

View file

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

View file

@ -259,8 +259,8 @@ class TimelinePanel extends React.Component<IProps, IState> {
private callEventGroupers = new Map<string, LegacyCallEventGrouper>(); private callEventGroupers = new Map<string, LegacyCallEventGrouper>();
private initialReadMarkerId: string | null = null; private initialReadMarkerId: string | null = null;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
debuglog("mounting"); debuglog("mounting");

View file

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

View file

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

View file

@ -66,8 +66,8 @@ export default class SoftLogout extends React.Component<IProps, IState> {
public static contextType = SDKContext; public static contextType = SDKContext;
declare public context: React.ContextType<typeof SDKContext>; declare public context: React.ContextType<typeof SDKContext>;
public constructor(props: IProps, context: React.ContextType<typeof SDKContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
loginView: LoginView.Loading, 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 private reactButtonRef = createRef<any>(); // XXX Ref to a functional component
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
canRedact: false, canRedact: false,

View file

@ -145,8 +145,8 @@ export default class AppTile extends React.Component<IProps, IState> {
private dispatcherRef?: string; private dispatcherRef?: string;
private unmounted = false; private unmounted = false;
public constructor(props: IProps, context: ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props, context); super(props);
// The key used for PersistedElement // The key used for PersistedElement
this.persistKey = getPersistKey(WidgetUtils.getWidgetUid(this.props.app)); this.persistKey = getPersistKey(WidgetUtils.getWidgetUid(this.props.app));

View file

@ -28,9 +28,9 @@ export default class PersistentApp extends React.Component<IProps> {
declare public context: ContextType<typeof MatrixClientContext>; declare public context: ContextType<typeof MatrixClientContext>;
private room: Room; private room: Room;
public constructor(props: IProps, context: ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.room = context.getRoom(this.props.persistentRoomId)!; this.room = this.context.getRoom(this.props.persistentRoomId)!;
} }
public render(): JSX.Element | null { public render(): JSX.Element | null {

View file

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

View file

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

View file

@ -31,8 +31,8 @@ class ReactionPicker extends React.Component<IProps, IState> {
public static contextType = RoomContext; public static contextType = RoomContext;
declare public context: React.ContextType<typeof RoomContext>; declare public context: React.ContextType<typeof RoomContext>;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
selectedEmojis: new Set(Object.keys(this.getReactions())), 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 geolocate?: maplibregl.GeolocateControl;
private marker?: maplibregl.Marker; private marker?: maplibregl.Marker;
public constructor(props: ILocationPickerProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: ILocationPickerProps) {
super(props, context); super(props);
this.state = { this.state = {
position: undefined, position: undefined,

View file

@ -51,8 +51,8 @@ export default class EditHistoryMessage extends React.PureComponent<IProps, ISta
private pills = new ReactRootManager(); private pills = new ReactRootManager();
private tooltips = new ReactRootManager(); private tooltips = new ReactRootManager();
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props, context); super(props);
const cli = this.context; const cli = this.context;
const userId = cli.getSafeUserId(); const userId = cli.getSafeUserId();

View file

@ -36,8 +36,8 @@ export default class MLocationBody extends React.Component<IBodyProps, IState> {
private mapId: string; private mapId: string;
private reconnectedListener: ClientEventHandlerMap[ClientEvent.Sync]; private reconnectedListener: ClientEventHandlerMap[ClientEvent.Sync];
public constructor(props: IBodyProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IBodyProps) {
super(props, context); super(props);
// multiple instances of same map might be in document // multiple instances of same map might be in document
// eg thread and main timeline, reply // 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>; declare public context: React.ContextType<typeof MatrixClientContext>;
private seenEventIds: string[] = []; // Events we have already seen private seenEventIds: string[] = []; // Events we have already seen
public constructor(props: IBodyProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IBodyProps) {
super(props, context); super(props);
this.state = { this.state = {
selected: null, selected: null,

View file

@ -77,8 +77,8 @@ export default class ReactionsRow extends React.PureComponent<IProps, IState> {
public static contextType = RoomContext; public static contextType = RoomContext;
declare public context: React.ContextType<typeof RoomContext>; declare public context: React.ContextType<typeof RoomContext>;
public constructor(props: IProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = { this.state = {
myReactions: this.getMyReactions(), myReactions: this.getMyReactions(),

View file

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

View file

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

View file

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

View file

@ -99,8 +99,8 @@ class EditMessageComposer extends React.Component<IEditMessageComposerProps, ISt
private readonly replyToEvent?: MatrixEvent; private readonly replyToEvent?: MatrixEvent;
private model!: EditorModel; private model!: EditorModel;
public constructor(props: IEditMessageComposerProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: IEditMessageComposerProps) {
super(props, context); super(props);
const isRestored = this.createEditorModel(); const isRestored = this.createEditorModel();
const ev = this.props.editState.getEvent(); const ev = this.props.editState.getEvent();

View file

@ -300,8 +300,8 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
private unmounted = false; private unmounted = false;
public constructor(props: EventTileProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: EventTileProps) {
super(props, context); super(props);
const thread = this.thread; const thread = this.thread;

View file

@ -78,10 +78,10 @@ export default class MemberList extends React.Component<IProps, IState> {
declare public context: React.ContextType<typeof SDKContext>; declare public context: React.ContextType<typeof SDKContext>;
private tiles: Map<string, MemberTile> = new Map(); private tiles: Map<string, MemberTile> = new Map();
public constructor(props: IProps, context: React.ContextType<typeof SDKContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.state = this.getMembersState([], []); this.state = this.getMembersState([], []);
this.showPresence = context?.memberListStore.isPresenceEnabled() ?? true; this.showPresence = this.context?.memberListStore.isPresenceEnabled() ?? true;
} }
private listenForMembersChanges(): void { private listenForMembersChanges(): void {

View file

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

View file

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

View file

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

View file

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

View file

@ -249,8 +249,8 @@ export class SendMessageComposer extends React.Component<ISendMessageComposerPro
private dispatcherRef?: string; private dispatcherRef?: string;
private sendHistoryManager: SendHistoryManager; private sendHistoryManager: SendHistoryManager;
public constructor(props: ISendMessageComposerProps, context: React.ContextType<typeof RoomContext>) { public constructor(props: ISendMessageComposerProps) {
super(props, context); super(props);
if (this.props.mxClient.getCrypto() && this.props.mxClient.isRoomEncrypted(this.props.room.roomId)) { if (this.props.mxClient.getCrypto() && this.props.mxClient.isRoomEncrypted(this.props.room.roomId)) {
this.prepareToEncrypt = throttle( this.prepareToEncrypt = throttle(

View file

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

View file

@ -34,10 +34,10 @@ export default class CryptographyPanel extends React.Component<IProps, IState> {
public static contextType = MatrixClientContext; public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>; declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props); super(props);
if (!context.getCrypto()) { if (!this.context.getCrypto()) {
this.state = { deviceIdentityKey: null }; this.state = { deviceIdentityKey: null };
} else { } else {
this.state = { deviceIdentityKey: undefined }; this.state = { deviceIdentityKey: undefined };

View file

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

View file

@ -44,10 +44,10 @@ export default class NotificationsSettingsTab extends React.Component<IProps, IS
public static contextType = MatrixClientContext; public static contextType = MatrixClientContext;
declare public context: React.ContextType<typeof MatrixClientContext>; declare public context: React.ContextType<typeof MatrixClientContext>;
public constructor(props: IProps, context: React.ContextType<typeof MatrixClientContext>) { public constructor(props: IProps) {
super(props, context); super(props);
this.roomProps = EchoChamber.forRoom(context.getRoom(this.props.roomId)!); this.roomProps = EchoChamber.forRoom(this.context.getRoom(this.props.roomId)!);
let currentSound = "default"; let currentSound = "default";
const soundData = Notifier.getSoundForRoom(this.props.roomId); const soundData = Notifier.getSoundForRoom(this.props.roomId);

View file

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

View file

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

View file

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