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(
|
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">`+
|
`<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>`);
|
`<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;
|
XMLHttpRequest.prototype.send = send_backup;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ describe("A Chat Message", function () {
|
||||||
expect(msg.classList.length).toEqual(1);
|
expect(msg.classList.length).toEqual(1);
|
||||||
expect(u.hasClass('chat-msg__text', msg)).toBe(true);
|
expect(u.hasClass('chat-msg__text', msg)).toBe(true);
|
||||||
expect(msg.textContent).toEqual('Have you heard this funny audio?');
|
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(
|
expect(media.innerHTML.replace(/<!-.*?->/g, '').replace(/(\r\n|\n|\r)/gm, "").trim()).toEqual(
|
||||||
`<audio controls="" src="https://montague.lit/audio.mp3"></audio>`+
|
`<audio controls="" src="https://montague.lit/audio.mp3"></audio>`+
|
||||||
`<a target="_blank" rel="noopener" href="https://montague.lit/audio.mp3">${url}</a>`);
|
`<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}"
|
<message from="${contact_jid}"
|
||||||
type="chat"
|
type="chat"
|
||||||
to="romeo@montague.lit/orchard">
|
to="romeo@montague.lit/orchard">
|
||||||
<body>https://montague.lit/audio.mp3</body>
|
<body>${url}</body>
|
||||||
<x xmlns="jabber:x:oob"><url>https://montague.lit/audio.mp3</url></x>
|
<x xmlns="jabber:x:oob"><url>${url}</url></x>
|
||||||
</message>`);
|
</message>`);
|
||||||
_converse.connection._dataRecv(mock.createRequest(stanza));
|
_converse.connection._dataRecv(mock.createRequest(stanza));
|
||||||
|
|
||||||
await new Promise(resolve => view.model.messages.once('rendered', resolve));
|
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
|
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>`+
|
`<audio controls="" src="https://montague.lit/audio.mp3"></audio>`+
|
||||||
`<a target="_blank" rel="noopener" href="${url}">${url}</a>`);
|
`<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');
|
let msg = view.querySelector('.chat-msg .chat-msg__text');
|
||||||
expect(msg.classList.length).toBe(1);
|
expect(msg.classList.length).toBe(1);
|
||||||
expect(msg.textContent).toEqual('Have you seen this funny video?');
|
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(
|
expect(media.innerHTML.replace(/(\r\n|\n|\r)/gm, "").replace(/<!-.*?->/g, '')).toEqual(
|
||||||
`<video controls="" preload="metadata" src="${Strophe.xmlescape(url)}"></video>`+
|
`<video controls="" preload="metadata" src="${Strophe.xmlescape(url)}"></video>`+
|
||||||
`<a target="_blank" rel="noopener" href="${Strophe.xmlescape(url)}">${Strophe.xmlescape(url)}</a>`);
|
`<a target="_blank" rel="noopener" href="${Strophe.xmlescape(url)}">${Strophe.xmlescape(url)}</a>`);
|
||||||
|
@ -93,12 +99,9 @@ describe("A Chat Message", function () {
|
||||||
</message>`);
|
</message>`);
|
||||||
_converse.connection._dataRecv(mock.createRequest(stanza));
|
_converse.connection._dataRecv(mock.createRequest(stanza));
|
||||||
await new Promise(resolve => view.model.messages.once('rendered', resolve));
|
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?');
|
expect(msg.innerHTML.replace(/<!-.*?->/g, '')).toEqual('Have you seen this funny video?');
|
||||||
media = view.querySelector('.chat-msg:last-child .chat-msg__media');
|
expect(view.querySelector('converse-chat-message:last-child .chat-msg__media')).toBe(null);
|
||||||
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>`);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it("will render download links for files from oob URLs",
|
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">`+
|
`<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>`);
|
`<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(
|
expect(view.querySelector('.chat-msg .chat-msg__media')).toBe(null);
|
||||||
`<a target="_blank" rel="noopener" href="${base_url}/logo/conversejs-filled.svg">`+
|
|
||||||
`Download file "conversejs-filled.svg"</a>`);
|
|
||||||
|
|
||||||
XMLHttpRequest.prototype.send = send_backup;
|
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"/>`+
|
`<encryption namespace="eu.siacs.conversations.axolotl" xmlns="urn:xmpp:eme:0"/>`+
|
||||||
`</message>`);
|
`</message>`);
|
||||||
|
|
||||||
const link_el = await u.waitUntil(() => view.querySelector('.chat-msg__media'));
|
const link_el = await u.waitUntil(() => view.querySelector('.chat-msg__text'));
|
||||||
expect(link_el.textContent.trim()).toBe('Download file "secret.txt"', 1000);
|
expect(link_el.textContent.trim()).toBe(url);
|
||||||
|
|
||||||
const message = view.model.messages.at(0);
|
const message = view.model.messages.at(0);
|
||||||
expect(message.get('is_encrypted')).toBe(true);
|
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 spoiler_classes = el.model.get('is_spoiler') ? `spoiler ${el.model.get('is_spoiler_visible') ? '' : 'hidden'}` : '';
|
||||||
const text = el.model.getMessageText();
|
const text = el.model.getMessageText();
|
||||||
|
const show_oob = el.model.get('oob_url') && text !== el.model.get('oob_url');
|
||||||
return html`
|
return html`
|
||||||
${ el.model.get('is_spoiler') ? tpl_spoiler_hint : '' }
|
${ el.model.get('is_spoiler') ? tpl_spoiler_hint : '' }
|
||||||
${ el.model.get('subject') ? html`<div class="chat-msg__subject">${el.model.get('subject')}</div>` : '' }
|
${ 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('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) : '' }
|
${ (el.model.get('edited')) ? tpl_edited_icon(el) : '' }
|
||||||
</span>
|
</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>
|
<div class="chat-msg__error">${ el.model.get('error_text') || el.model.get('error') }</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user