Fix: Edit history modal crash (#10834)

* failing test

* handle nodes without children in messagediffutils
This commit is contained in:
Kerry 2023-05-11 22:21:02 +12:00 committed by GitHub
parent eac548c25a
commit 41c96877d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 2 deletions

View file

@ -104,8 +104,10 @@ function diffTreeToDOM(desc: Text | HTMLElement): Node {
for (const [key, value] of Object.entries(desc.attributes)) { for (const [key, value] of Object.entries(desc.attributes)) {
node.setAttribute(key, value.value); node.setAttribute(key, value.value);
} }
for (const childDesc of desc.childNodes) { if (desc.childNodes) {
node.appendChild(diffTreeToDOM(childDesc as Text | HTMLElement)); for (const childDesc of desc.childNodes) {
node.appendChild(diffTreeToDOM(childDesc as Text | HTMLElement));
}
} }
return node; return node;
} }

View file

@ -49,6 +49,7 @@ describe("editBodyDiffToHtml", () => {
["attribute modifications", `<a href="#hi">hi</a>`, `<a href="#bye">hi</a>`], ["attribute modifications", `<a href="#hi">hi</a>`, `<a href="#bye">hi</a>`],
["attribute deletions", `<a href="#hi">hi</a>`, `<a>hi</a>`], ["attribute deletions", `<a href="#hi">hi</a>`, `<a>hi</a>`],
["attribute additions", `<a>hi</a>`, `<a href="#/room/!123">hi</a>`], ["attribute additions", `<a>hi</a>`, `<a href="#/room/!123">hi</a>`],
["handles empty tags", `<a>hi</a>`, `<a><h1></h1></a> hi`],
])("renders %s", (_label, before, after) => { ])("renders %s", (_label, before, after) => {
const { container } = renderDiff(before, after); const { container } = renderDiff(before, after);
expect(container).toMatchSnapshot(); expect(container).toMatchSnapshot();

View file

@ -365,6 +365,37 @@ exports[`editBodyDiffToHtml renders element replacements 1`] = `
</div> </div>
`; `;
exports[`editBodyDiffToHtml renders handles empty tags 1`] = `
<div>
<span
class="mx_EventTile_body markdown-body"
dir="auto"
>
<a
rel="noreferrer noopener"
>
<span>
<span
class="mx_EditHistoryMessage_deletion"
>
hi
</span>
<div
class="mx_EditHistoryMessage_insertion"
>
<h1 />
</div>
</span>
</a>
<span
class="mx_EditHistoryMessage_insertion"
>
hi
</span>
</span>
</div>
`;
exports[`editBodyDiffToHtml renders inline element additions 1`] = ` exports[`editBodyDiffToHtml renders inline element additions 1`] = `
<div> <div>
<span <span