{selectedChild || this.props.placeholder}
diff --git a/src/components/views/elements/EditableText.tsx b/src/components/views/elements/EditableText.tsx
index 5c11e52ecc..4e2f228a84 100644
--- a/src/components/views/elements/EditableText.tsx
+++ b/src/components/views/elements/EditableText.tsx
@@ -87,6 +87,7 @@ export default class EditableText extends React.Component
{
}
private showPlaceholder = (show: boolean): void => {
+ if (!this.editableDiv.current) return;
if (show) {
this.editableDiv.current.textContent = this.props.placeholder;
this.editableDiv.current.setAttribute(
@@ -134,7 +135,7 @@ export default class EditableText extends React.Component {
if (!(ev.target as HTMLDivElement).textContent) {
this.showPlaceholder(true);
} else if (!this.placeholder) {
- this.value = (ev.target as HTMLDivElement).textContent;
+ this.value = (ev.target as HTMLDivElement).textContent ?? "";
}
const action = getKeyBindingsManager().getAccessibilityAction(ev);
@@ -163,7 +164,7 @@ export default class EditableText extends React.Component {
range.setStart(node, 0);
range.setEnd(node, ev.target.childNodes.length);
- const sel = window.getSelection();
+ const sel = window.getSelection()!;
sel.removeAllRanges();
sel.addRange(range);
}
@@ -190,7 +191,7 @@ export default class EditableText extends React.Component {
};
private onBlur = (ev: React.FocusEvent): void => {
- const sel = window.getSelection();
+ const sel = window.getSelection()!;
sel.removeAllRanges();
if (this.props.blurToCancel) {
diff --git a/src/components/views/elements/EffectsOverlay.tsx b/src/components/views/elements/EffectsOverlay.tsx
index 604b513d30..11e11211b2 100644
--- a/src/components/views/elements/EffectsOverlay.tsx
+++ b/src/components/views/elements/EffectsOverlay.tsx
@@ -54,14 +54,14 @@ const EffectsOverlay: FunctionComponent = ({ roomWidth }) => {
};
const onAction = (payload: { action: string }): void => {
const actionPrefix = "effects.";
- if (payload.action.indexOf(actionPrefix) === 0) {
+ if (canvasRef.current && payload.action.startsWith(actionPrefix)) {
const effect = payload.action.slice(actionPrefix.length);
- lazyLoadEffectModule(effect).then((module) => module?.start(canvasRef.current));
+ lazyLoadEffectModule(effect).then((module) => module?.start(canvasRef.current!));
}
};
const dispatcherRef = dis.register(onAction);
const canvas = canvasRef.current;
- canvas.height = UIStore.instance.windowHeight;
+ if (canvas) canvas.height = UIStore.instance.windowHeight;
UIStore.instance.on(UI_EVENTS.Resize, resize);
return () => {
diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx
index 882e68c9f8..1fc44e5f90 100644
--- a/src/components/views/elements/EventListSummary.tsx
+++ b/src/components/views/elements/EventListSummary.tsx
@@ -78,7 +78,9 @@ enum TransitionType {
const SEP = ",";
-export default class EventListSummary extends React.Component {
+export default class EventListSummary extends React.Component<
+ IProps & Required>
+> {
public static contextType = RoomContext;
public context!: React.ContextType;
@@ -508,12 +510,12 @@ export default class EventListSummary extends React.Component {
const type = e.getType();
let userKey = e.getSender()!;
- if (type === EventType.RoomThirdPartyInvite) {
+ if (e.isState() && type === EventType.RoomThirdPartyInvite) {
userKey = e.getContent().display_name;
- } else if (type === EventType.RoomMember) {
- userKey = e.getStateKey();
- } else if (e.isRedacted()) {
- userKey = e.getUnsigned()?.redacted_because?.sender;
+ } else if (e.isState() && type === EventType.RoomMember) {
+ userKey = e.getStateKey()!;
+ } else if (e.isRedacted() && e.getUnsigned()?.redacted_because) {
+ userKey = e.getUnsigned().redacted_because!.sender;
}
// Initialise a user's events
diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx
index c5e531360f..96151a2e96 100644
--- a/src/components/views/elements/Field.tsx
+++ b/src/components/views/elements/Field.tsx
@@ -38,8 +38,6 @@ export interface IValidateOpts {
interface IProps {
// The field's ID, which binds the input and label together. Immutable.
id?: string;
- // id of a
);
diff --git a/test/components/views/elements/EventListSummary-test.tsx b/test/components/views/elements/EventListSummary-test.tsx
index 3fcec7d6d8..03c01c453e 100644
--- a/test/components/views/elements/EventListSummary-test.tsx
+++ b/test/components/views/elements/EventListSummary-test.tsx
@@ -118,7 +118,10 @@ describe("EventListSummary", function () {
...mockClientMethodsUser(),
});
- const defaultProps: ComponentProps