Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit f0446a2

Browse files
author
Germain
authored
Fix poll creation from a thread (#7706)
1 parent 75b03ca commit f0446a2

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/components/views/elements/PollCreateDialog.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import Spinner from "./Spinner";
3030

3131
interface IProps extends IDialogProps {
3232
room: Room;
33+
threadId?: string;
3334
}
3435

3536
interface IState extends IScrollableBaseState {
@@ -103,7 +104,12 @@ export default class PollCreateDialog extends ScrollableBaseModal<IProps, IState
103104
this.state.options.map(a => a.trim()).filter(a => !!a),
104105
M_POLL_KIND_DISCLOSED,
105106
).serialize();
106-
this.matrixClient.sendEvent(this.props.room.roomId, pollEvent.type, pollEvent.content).then(
107+
this.matrixClient.sendEvent(
108+
this.props.room.roomId,
109+
this.props.threadId,
110+
pollEvent.type,
111+
pollEvent.content,
112+
).then(
107113
() => this.props.onFinished(true),
108114
).catch(e => {
109115
console.error("Failed to post poll:", e);

src/components/views/rooms/MessageComposerButtons.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { M_POLL_START } from "matrix-events-sdk";
2020
import React, { createContext, ReactElement, useContext } from 'react';
2121
import { Room } from 'matrix-js-sdk/src/models/room';
2222
import { MatrixClient } from 'matrix-js-sdk/src/client';
23+
import { RelationType } from 'matrix-js-sdk/src/@types/event';
2324

2425
import { _t } from '../../../languageHandler';
2526
import AccessibleTooltipButton from "../elements/AccessibleTooltipButton";
@@ -73,7 +74,7 @@ const MessageComposerButtons: React.FC<IProps> = (props: IProps) => {
7374
uploadButton(props, roomId),
7475
showStickersButton(props),
7576
voiceRecordingButton(props),
76-
pollButton(room),
77+
pollButton(room, props.relation),
7778
showLocationButton(props, room, roomId, matrixClient),
7879
];
7980
} else {
@@ -84,7 +85,7 @@ const MessageComposerButtons: React.FC<IProps> = (props: IProps) => {
8485
moreButtons = [
8586
showStickersButton(props),
8687
voiceRecordingButton(props),
87-
pollButton(room),
88+
pollButton(room, props.relation),
8889
showLocationButton(props, room, roomId, matrixClient),
8990
];
9091
}
@@ -288,12 +289,13 @@ function voiceRecordingButton(props: IProps): ReactElement {
288289
);
289290
}
290291

291-
function pollButton(room: Room): ReactElement {
292-
return <PollButton key="polls" room={room} />;
292+
function pollButton(room: Room, relation?: IEventRelation): ReactElement {
293+
return <PollButton key="polls" room={room} relation={relation} />;
293294
}
294295

295296
interface IPollButtonProps {
296297
room: Room;
298+
relation?: IEventRelation;
297299
}
298300

299301
class PollButton extends React.PureComponent<IPollButtonProps> {
@@ -319,12 +321,17 @@ class PollButton extends React.PureComponent<IPollButtonProps> {
319321
},
320322
);
321323
} else {
324+
const threadId = this.props.relation.rel_type === RelationType.Thread
325+
? this.props.relation.event_id
326+
: null;
327+
322328
Modal.createTrackedDialog(
323329
'Polls',
324330
'create',
325331
PollCreateDialog,
326332
{
327333
room: this.props.room,
334+
threadId,
328335
},
329336
'mx_CompoundDialog',
330337
false, // isPriorityModal

0 commit comments

Comments
 (0)