add fallback reply for poll start (#10380)

This commit is contained in:
Kerry 2023-03-17 10:27:56 +13:00 committed by GitHub
parent a86a8e7f8e
commit 5211b628d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 2 deletions

View file

@ -21,7 +21,8 @@ import escapeHtml from "escape-html";
import { THREAD_RELATION_TYPE } from "matrix-js-sdk/src/models/thread"; import { THREAD_RELATION_TYPE } from "matrix-js-sdk/src/models/thread";
import { MsgType } from "matrix-js-sdk/src/@types/event"; import { MsgType } from "matrix-js-sdk/src/@types/event";
import { M_BEACON_INFO } from "matrix-js-sdk/src/@types/beacon"; import { M_BEACON_INFO } from "matrix-js-sdk/src/@types/beacon";
import { M_POLL_END } from "matrix-js-sdk/src/@types/polls"; import { M_POLL_END, M_POLL_START } from "matrix-js-sdk/src/@types/polls";
import { PollStartEvent } from "matrix-js-sdk/src/extensible_events_v1/PollStartEvent";
import { PERMITTED_URL_SCHEMES } from "../HtmlUtils"; import { PERMITTED_URL_SCHEMES } from "../HtmlUtils";
import { makeUserPermalink, RoomPermalinkCreator } from "./permalinks/Permalinks"; import { makeUserPermalink, RoomPermalinkCreator } from "./permalinks/Permalinks";
@ -112,6 +113,16 @@ export function getNestedReplyText(
}; };
} }
if (M_POLL_START.matches(ev.getType())) {
const extensibleEvent = ev.unstableExtensibleEvent as PollStartEvent;
const question = extensibleEvent?.question?.text;
return {
html:
`<mx-reply><blockquote><a href="${evLink}">In reply to</a> <a href="${userLink}">${mxid}</a>` +
`<br>Poll: ${question}</blockquote></mx-reply>`,
body: `> <${mxid}> started poll: ${question}\n\n`,
};
}
if (M_POLL_END.matches(ev.getType())) { if (M_POLL_END.matches(ev.getType())) {
return { return {
html: html:

View file

@ -26,7 +26,7 @@ import {
stripHTMLReply, stripHTMLReply,
stripPlainReply, stripPlainReply,
} from "../src/utils/Reply"; } from "../src/utils/Reply";
import { mkEvent } from "./test-utils"; import { makePollStartEvent, mkEvent } from "./test-utils";
import { RoomPermalinkCreator } from "../src/utils/permalinks/Permalinks"; import { RoomPermalinkCreator } from "../src/utils/permalinks/Permalinks";
function makeTestEvent(type: string, content: IContent): MatrixEvent { function makeTestEvent(type: string, content: IContent): MatrixEvent {
@ -160,6 +160,12 @@ But this is not
expect(getNestedReplyText(event, mockPermalinkGenerator)).toMatchSnapshot(); expect(getNestedReplyText(event, mockPermalinkGenerator)).toMatchSnapshot();
}); });
it("should create the expected fallback text for poll start events", () => {
const event = makePollStartEvent("Will this test pass?", "@user:server.org");
expect(getNestedReplyText(event, mockPermalinkGenerator)).toMatchSnapshot();
});
}); });
describe("shouldDisplayReply", () => { describe("shouldDisplayReply", () => {

View file

@ -53,3 +53,12 @@ exports[`Reply getNestedReplyText should create the expected fallback text for p
"html": "<mx-reply><blockquote><a href="$$permalink$$">In reply to</a> <a href="https://matrix.to/#/@user1:server">@user1:server</a><br>Ended poll</blockquote></mx-reply>", "html": "<mx-reply><blockquote><a href="$$permalink$$">In reply to</a> <a href="https://matrix.to/#/@user1:server">@user1:server</a><br>Ended poll</blockquote></mx-reply>",
} }
`; `;
exports[`Reply getNestedReplyText should create the expected fallback text for poll start events 1`] = `
{
"body": "> <@user:server.org> started poll: Will this test pass?
",
"html": "<mx-reply><blockquote><a href="$$permalink$$">In reply to</a> <a href="https://matrix.to/#/@user:server.org">@user:server.org</a><br>Poll: Will this test pass?</blockquote></mx-reply>",
}
`;