diff --git a/src/components/views/auth/EmailField.tsx b/src/components/views/auth/EmailField.tsx index 0426c08f867..849f38fea7b 100644 --- a/src/components/views/auth/EmailField.tsx +++ b/src/components/views/auth/EmailField.tsx @@ -21,7 +21,7 @@ import { _t, _td } from "../../../languageHandler"; import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; import * as Email from "../../../email"; -interface IProps extends Omit { +interface IProps extends Omit { id?: string; fieldRef?: RefCallback | RefObject; value: string; diff --git a/src/components/views/auth/PassphraseConfirmField.tsx b/src/components/views/auth/PassphraseConfirmField.tsx index 2411547912e..b314c3f838a 100644 --- a/src/components/views/auth/PassphraseConfirmField.tsx +++ b/src/components/views/auth/PassphraseConfirmField.tsx @@ -20,7 +20,7 @@ import Field, { IInputProps } from "../elements/Field"; import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; import { _t, _td } from "../../../languageHandler"; -interface IProps extends Omit { +interface IProps extends Omit { id?: string; fieldRef?: RefCallback | RefObject; autoComplete?: string; diff --git a/src/components/views/auth/PassphraseField.tsx b/src/components/views/auth/PassphraseField.tsx index 5175de6aa7a..1050e8f6e22 100644 --- a/src/components/views/auth/PassphraseField.tsx +++ b/src/components/views/auth/PassphraseField.tsx @@ -23,7 +23,7 @@ import withValidation, { IFieldState, IValidationResult } from "../elements/Vali import { _t, _td } from "../../../languageHandler"; import Field, { IInputProps } from "../elements/Field"; -interface IProps extends Omit { +interface IProps extends Omit { autoFocus?: boolean; id?: string; className?: string; diff --git a/src/components/views/context_menus/MessageContextMenu.tsx b/src/components/views/context_menus/MessageContextMenu.tsx index ad56409592c..8392e6a14fd 100644 --- a/src/components/views/context_menus/MessageContextMenu.tsx +++ b/src/components/views/context_menus/MessageContextMenu.tsx @@ -179,7 +179,7 @@ export default class MessageContextMenu extends React.Component private isPinned(): boolean { const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); - const pinnedEvent = room.currentState.getStateEvents(EventType.RoomPinnedEvents, ""); + const pinnedEvent = room?.currentState.getStateEvents(EventType.RoomPinnedEvents, ""); if (!pinnedEvent) return false; const content = pinnedEvent.getContent(); return content.pinned && Array.isArray(content.pinned) && content.pinned.includes(this.props.mxEvent.getId()); @@ -389,7 +389,7 @@ export default class MessageContextMenu extends React.Component timelineRenderingType === TimelineRenderingType.ThreadsList; const isThreadRootEvent = isThread && mxEvent?.getThread()?.rootEvent === mxEvent; - let resendReactionsButton: JSX.Element; + let resendReactionsButton: JSX.Element | undefined; if (!mxEvent.isRedacted() && unsentReactionsCount !== 0) { resendReactionsButton = ( ); } - let redactButton: JSX.Element; + let redactButton: JSX.Element | undefined; if (isSent && this.state.canRedact) { redactButton = ( ); } - let openInMapSiteButton: JSX.Element; + let openInMapSiteButton: JSX.Element | undefined; const shareableLocationEvent = getShareableLocationEvent(mxEvent, cli); if (shareableLocationEvent) { const mapSiteLink = createMapSiteLinkFromEvent(shareableLocationEvent); @@ -430,7 +430,7 @@ export default class MessageContextMenu extends React.Component ); } - let forwardButton: JSX.Element; + let forwardButton: JSX.Element | undefined; const forwardableEvent = getForwardableEvent(mxEvent, cli); if (contentActionable && forwardableEvent) { forwardButton = ( @@ -442,7 +442,7 @@ export default class MessageContextMenu extends React.Component ); } - let pinButton: JSX.Element; + let pinButton: JSX.Element | undefined; if (contentActionable && this.state.canPin) { pinButton = ( /> ); - let unhidePreviewButton: JSX.Element; + let unhidePreviewButton: JSX.Element | undefined; if (eventTileOps?.isWidgetHidden()) { unhidePreviewButton = ( ); } - let permalinkButton: JSX.Element; + let permalinkButton: JSX.Element | undefined; if (permalink) { permalinkButton = ( ); } - let endPollButton: JSX.Element; + let endPollButton: JSX.Element | undefined; if (this.canEndPoll(mxEvent)) { endPollButton = ( ); } - let quoteButton: JSX.Element; + let quoteButton: JSX.Element | undefined; if (eventTileOps && canSendMessages) { // this event is rendered using TextualBody quoteButton = ( @@ -517,7 +517,7 @@ export default class MessageContextMenu extends React.Component } // Bridges can provide a 'external_url' to link back to the source. - let externalURLButton: JSX.Element; + let externalURLButton: JSX.Element | undefined; if ( typeof mxEvent.getContent().external_url === "string" && isUrlPermitted(mxEvent.getContent().external_url) @@ -540,7 +540,7 @@ export default class MessageContextMenu extends React.Component ); } - let collapseReplyChainButton: JSX.Element; + let collapseReplyChainButton: JSX.Element | undefined; if (collapseReplyChain) { collapseReplyChainButton = ( ); } - let jumpToRelatedEventButton: JSX.Element; + let jumpToRelatedEventButton: JSX.Element | undefined; const relatedEventId = mxEvent.getWireContent()?.["m.relates_to"]?.event_id; if (relatedEventId && SettingsStore.getValue("developerMode")) { jumpToRelatedEventButton = ( @@ -563,7 +563,7 @@ export default class MessageContextMenu extends React.Component ); } - let reportEventButton: JSX.Element; + let reportEventButton: JSX.Element | undefined; if (mxEvent.getSender() !== me) { reportEventButton = ( ); } - let copyLinkButton: JSX.Element; + let copyLinkButton: JSX.Element | undefined; if (link) { copyLinkButton = ( ); } - let copyButton: JSX.Element; + let copyButton: JSX.Element | undefined; if (rightClick && getSelectedText()) { copyButton = ( ); } - let editButton: JSX.Element; + let editButton: JSX.Element | undefined; if (rightClick && canEditContent(mxEvent)) { editButton = ( ); } - let replyButton: JSX.Element; + let replyButton: JSX.Element | undefined; if (rightClick && contentActionable && canSendMessages) { replyButton = ( ); } - let replyInThreadButton: JSX.Element; + let replyInThreadButton: JSX.Element | undefined; if ( rightClick && contentActionable && @@ -639,7 +639,7 @@ export default class MessageContextMenu extends React.Component replyInThreadButton = ; } - let reactButton; + let reactButton: JSX.Element | undefined; if (rightClick && contentActionable && canReact) { reactButton = ( ); } - let viewInRoomButton: JSX.Element; + let viewInRoomButton: JSX.Element | undefined; if (isThreadRootEvent) { viewInRoomButton = ( ); } - let nativeItemsList: JSX.Element; + let nativeItemsList: JSX.Element | undefined; if (copyButton || copyLinkButton) { nativeItemsList = ( @@ -672,7 +672,7 @@ export default class MessageContextMenu extends React.Component ); } - let quickItemsList: JSX.Element; + let quickItemsList: JSX.Element | undefined; if (editButton || replyButton || reactButton) { quickItemsList = ( @@ -703,12 +703,12 @@ export default class MessageContextMenu extends React.Component ); - let redactItemList: JSX.Element; + let redactItemList: JSX.Element | undefined; if (redactButton) { redactItemList = {redactButton}; } - let reactionPicker: JSX.Element; + let reactionPicker: JSX.Element | undefined; if (this.state.reactionPickerDisplayed) { const buttonRect = (this.reactButtonRef.current as HTMLElement)?.getBoundingClientRect(); reactionPicker = ( diff --git a/src/components/views/dialogs/devtools/SettingExplorer.tsx b/src/components/views/dialogs/devtools/SettingExplorer.tsx index c0801cd062b..c3470ad030b 100644 --- a/src/components/views/dialogs/devtools/SettingExplorer.tsx +++ b/src/components/views/dialogs/devtools/SettingExplorer.tsx @@ -64,7 +64,7 @@ interface ICanEditLevelFieldProps { } const CanEditLevelField: React.FC = ({ setting, roomId, level }) => { - const canEdit = SettingsStore.canSetValue(setting, roomId, level); + const canEdit = SettingsStore.canSetValue(setting, roomId ?? null, level); const className = canEdit ? "mx_DevTools_SettingsExplorer_mutable" : "mx_DevTools_SettingsExplorer_immutable"; return ( diff --git a/src/components/views/directory/NetworkDropdown.tsx b/src/components/views/directory/NetworkDropdown.tsx index b4f5b5bc04b..c84bb4a2f18 100644 --- a/src/components/views/directory/NetworkDropdown.tsx +++ b/src/components/views/directory/NetworkDropdown.tsx @@ -44,7 +44,7 @@ const validServer = withValidation({ // check if we can successfully load this server's room directory await MatrixClientPeg.get().publicRooms({ limit: 1, - server: value, + server: value ?? undefined, }); return {}; } catch (error) { diff --git a/src/components/views/elements/AccessibleButton.tsx b/src/components/views/elements/AccessibleButton.tsx index 4bceab5ac91..10f18f1f31c 100644 --- a/src/components/views/elements/AccessibleButton.tsx +++ b/src/components/views/elements/AccessibleButton.tsx @@ -14,7 +14,7 @@ limitations under the License. */ -import React, { HTMLAttributes, InputHTMLAttributes, ReactHTML, ReactNode } from "react"; +import React, { HTMLAttributes, InputHTMLAttributes, ReactNode } from "react"; import classnames from "classnames"; import { getKeyBindingsManager } from "../../../KeyBindingsManager"; @@ -91,7 +91,7 @@ export interface IAccessibleButtonProps extends React.InputHTMLAttributes({ - element, + element = "div" as T, onClick, children, kind, @@ -169,7 +169,6 @@ export default function AccessibleButton( } AccessibleButton.defaultProps = { - element: "div" as keyof ReactHTML, role: "button", tabIndex: 0, }; diff --git a/src/components/views/elements/AppPermission.tsx b/src/components/views/elements/AppPermission.tsx index 3b1c18a692d..7adae9113b5 100644 --- a/src/components/views/elements/AppPermission.tsx +++ b/src/components/views/elements/AppPermission.tsx @@ -61,8 +61,6 @@ export default class AppPermission extends React.Component { // Set all this into the initial state this.state = { - widgetDomain: null, - isWrapped: null, roomMember, ...urlInfo, }; diff --git a/src/components/views/elements/DesktopCapturerSourcePicker.tsx b/src/components/views/elements/DesktopCapturerSourcePicker.tsx index cf8f6b018db..7be62a89998 100644 --- a/src/components/views/elements/DesktopCapturerSourcePicker.tsx +++ b/src/components/views/elements/DesktopCapturerSourcePicker.tsx @@ -33,7 +33,8 @@ export function getDesktopCapturerSources(): Promise([]); } export enum Tabs { diff --git a/src/components/views/elements/DialogButtons.tsx b/src/components/views/elements/DialogButtons.tsx index 39c943b405b..ddd5e274d0b 100644 --- a/src/components/views/elements/DialogButtons.tsx +++ b/src/components/views/elements/DialogButtons.tsx @@ -69,7 +69,7 @@ export default class DialogButtons extends React.Component { }; private onCancelClick = (event: React.MouseEvent): void => { - this.props.onCancel(event); + this.props.onCancel?.(event); }; public render(): React.ReactNode { @@ -77,9 +77,9 @@ export default class DialogButtons extends React.Component { if (this.props.primaryButtonClass) { primaryButtonClassName += " " + this.props.primaryButtonClass; } - let cancelButton; - if (this.props.cancelButton || this.props.hasCancel) { + let cancelButton: JSX.Element | undefined; + if (this.props.hasCancel) { cancelButton = (