Don't render OOB url if it's the same as the body
Otherwise the file gets shown/rendered twice.
This commit is contained in:
parent
5dc89fb2b3
commit
5095027a0b
|
@ -274,10 +274,6 @@ describe("XEP-0363: HTTP File Upload", function () {
|
|||
expect(img_link_el.outerHTML.replace(/<!-.*?->/g, '').trim()).toEqual(
|
||||
`<a class="chat-image__link" target="_blank" rel="noopener" href="${base_url}/logo/conversejs-filled.svg">`+
|
||||
`<img class="chat-image img-thumbnail" src="${base_url}/logo/conversejs-filled.svg"></a>`);
|
||||
|
||||
expect(view.querySelector('.chat-msg .chat-msg__media').innerHTML.replace(/<!-.*?->/g, '').trim()).toEqual(
|
||||
`<a target="_blank" rel="noopener" href="${base_url}/logo/conversejs-filled.svg">`+
|
||||
`Download file "conversejs-filled.svg"</a>`);
|
||||
XMLHttpRequest.prototype.send = send_backup;
|
||||
}));
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ describe("A Chat Message", function () {
|
|||
expect(msg.classList.length).toEqual(1);
|
||||
expect(u.hasClass('chat-msg__text', msg)).toBe(true);
|
||||
expect(msg.textContent).toEqual('Have you heard this funny audio?');
|
||||
let media = view.querySelector('.chat-msg .chat-msg__media');
|
||||
const media = view.querySelector('.chat-msg .chat-msg__media');
|
||||
expect(media.innerHTML.replace(/<!-.*?->/g, '').replace(/(\r\n|\n|\r)/gm, "").trim()).toEqual(
|
||||
`<audio controls="" src="https://montague.lit/audio.mp3"></audio>`+
|
||||
`<a target="_blank" rel="noopener" href="https://montague.lit/audio.mp3">${url}</a>`);
|
||||
|
@ -41,15 +41,21 @@ describe("A Chat Message", function () {
|
|||
<message from="${contact_jid}"
|
||||
type="chat"
|
||||
to="romeo@montague.lit/orchard">
|
||||
<body>https://montague.lit/audio.mp3</body>
|
||||
<x xmlns="jabber:x:oob"><url>https://montague.lit/audio.mp3</url></x>
|
||||
<body>${url}</body>
|
||||
<x xmlns="jabber:x:oob"><url>${url}</url></x>
|
||||
</message>`);
|
||||
_converse.connection._dataRecv(mock.createRequest(stanza));
|
||||
|
||||
await new Promise(resolve => view.model.messages.once('rendered', resolve));
|
||||
msg = view.querySelector('.chat-msg:last-child .chat-msg__text');
|
||||
msg = view.querySelector('.chat-msg .chat-msg__text');
|
||||
expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you heard this funny audio?'); // Emtpy
|
||||
media = view.querySelector('.chat-msg:last-child .chat-msg__media');
|
||||
expect(media.innerHTML.replace(/<!-.*?->/g, '').replace(/(\r\n|\n|\r)/gm, "").trim()).toEqual(
|
||||
|
||||
// We don't render the OOB data
|
||||
expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);
|
||||
|
||||
// But we do render the body
|
||||
const msg_el = view.querySelector('converse-chat-message:last-child .chat-msg__text');
|
||||
await u.waitUntil(() => msg_el.innerHTML.replace(/<!-.*?->/g, '').replace(/(\r\n|\n|\r)/gm, "").trim() ===
|
||||
`<audio controls="" src="https://montague.lit/audio.mp3"></audio>`+
|
||||
`<a target="_blank" rel="noopener" href="${url}">${url}</a>`);
|
||||
}));
|
||||
|
@ -78,7 +84,7 @@ describe("A Chat Message", function () {
|
|||
let msg = view.querySelector('.chat-msg .chat-msg__text');
|
||||
expect(msg.classList.length).toBe(1);
|
||||
expect(msg.textContent).toEqual('Have you seen this funny video?');
|
||||
let media = view.querySelector('.chat-msg .chat-msg__media');
|
||||
const media = view.querySelector('.chat-msg .chat-msg__media');
|
||||
expect(media.innerHTML.replace(/(\r\n|\n|\r)/gm, "").replace(/<!-.*?->/g, '')).toEqual(
|
||||
`<video controls="" preload="metadata" src="${Strophe.xmlescape(url)}"></video>`+
|
||||
`<a target="_blank" rel="noopener" href="${Strophe.xmlescape(url)}">${Strophe.xmlescape(url)}</a>`);
|
||||
|
@ -93,12 +99,9 @@ describe("A Chat Message", function () {
|
|||
</message>`);
|
||||
_converse.connection._dataRecv(mock.createRequest(stanza));
|
||||
await new Promise(resolve => view.model.messages.once('rendered', resolve));
|
||||
msg = view.querySelector('.chat-msg:last-child .chat-msg__text');
|
||||
msg = view.querySelector('converse-chat-message .chat-msg__text');
|
||||
expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you seen this funny video?');
|
||||
media = view.querySelector('.chat-msg:last-child .chat-msg__media');
|
||||
expect(media.innerHTML.replace(/(\r\n|\n|\r)/gm, "").replace(/<!-.*?->/g, '')).toEqual(
|
||||
`<video controls="" preload="metadata" src="${Strophe.xmlescape(url)}"></video>`+
|
||||
`<a target="_blank" rel="noopener" href="${Strophe.xmlescape(url)}">${Strophe.xmlescape(url)}</a>`);
|
||||
expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);
|
||||
}));
|
||||
|
||||
it("will render download links for files from oob URLs",
|
||||
|
|
|
@ -141,10 +141,7 @@ describe("XEP-0363: HTTP File Upload", function () {
|
|||
`<a class="chat-image__link" target="_blank" rel="noopener" href="${base_url}/logo/conversejs-filled.svg">`+
|
||||
`<img class="chat-image img-thumbnail" src="${base_url}/logo/conversejs-filled.svg"></a>`);
|
||||
|
||||
expect(view.querySelector('.chat-msg .chat-msg__media').innerHTML.replace(/<!-.*?->/g, '').trim()).toEqual(
|
||||
`<a target="_blank" rel="noopener" href="${base_url}/logo/conversejs-filled.svg">`+
|
||||
`Download file "conversejs-filled.svg"</a>`);
|
||||
|
||||
expect(view.querySelector('.chat-msg .chat-msg__media')).toBe(null);
|
||||
XMLHttpRequest.prototype.send = send_backup;
|
||||
}));
|
||||
|
||||
|
|
|
@ -142,8 +142,8 @@ describe("The OMEMO module", function() {
|
|||
`<encryption namespace="eu.siacs.conversations.axolotl" xmlns="urn:xmpp:eme:0"/>`+
|
||||
`</message>`);
|
||||
|
||||
const link_el = await u.waitUntil(() => view.querySelector('.chat-msg__media'));
|
||||
expect(link_el.textContent.trim()).toBe('Download file "secret.txt"', 1000);
|
||||
const link_el = await u.waitUntil(() => view.querySelector('.chat-msg__text'));
|
||||
expect(link_el.textContent.trim()).toBe(url);
|
||||
|
||||
const message = view.model.messages.at(0);
|
||||
expect(message.get('is_encrypted')).toBe(true);
|
||||
|
|
|
@ -25,6 +25,7 @@ export default (el) => {
|
|||
`;
|
||||
const spoiler_classes = el.model.get('is_spoiler') ? `spoiler ${el.model.get('is_spoiler_visible') ? '' : 'hidden'}` : '';
|
||||
const text = el.model.getMessageText();
|
||||
const show_oob = el.model.get('oob_url') && text !== el.model.get('oob_url');
|
||||
return html`
|
||||
${ el.model.get('is_spoiler') ? tpl_spoiler_hint : '' }
|
||||
${ el.model.get('subject') ? html`<div class="chat-msg__subject">${el.model.get('subject')}</div>` : '' }
|
||||
|
@ -41,7 +42,7 @@ export default (el) => {
|
|||
${ (el.model.get('received') && !el.model.isMeCommand() && !is_groupchat_message) ? html`<span class="fa fa-check chat-msg__receipt"></span>` : '' }
|
||||
${ (el.model.get('edited')) ? tpl_edited_icon(el) : '' }
|
||||
</span>
|
||||
${ el.model.get('oob_url') ? html`<div class="chat-msg__media">${getOOBURLMarkup(el.model.get('oob_url'))}</div>` : '' }
|
||||
${ show_oob ? html`<div class="chat-msg__media">${getOOBURLMarkup(el.model.get('oob_url'))}</div>` : '' }
|
||||
<div class="chat-msg__error">${ el.model.get('error_text') || el.model.get('error') }</div>
|
||||
`;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user