Commit 9174be8f authored by JC Brand's avatar JC Brand

Styling: Use only "local" offset for mentions

parent af2df84f
...@@ -126,11 +126,12 @@ export class MessageText extends String { ...@@ -126,11 +126,12 @@ export class MessageText extends String {
* Look for mentions included as XEP-0372 references and add templates for * Look for mentions included as XEP-0372 references and add templates for
* rendering them. * rendering them.
* @param { String } text * @param { String } text
* @param { Integer } offset - The index of the passed in text relative to * @param { Integer } local_offset - The index of the passed in text relative to
* the start of the MessageText. * the start of this MessageText instance (which is not necessarily the same as the
* offset from the start of the original message stanza's body text).
*/ */
addMentions (text, offset) { addMentions (text, local_offset) {
offset += this.offset; const full_offset = local_offset+this.offset;
if (!this.model.collection) { if (!this.model.collection) {
// This model doesn't belong to a collection anymore, so it must be // This model doesn't belong to a collection anymore, so it must be
// have been removed in the meantime and can be ignored. // have been removed in the meantime and can be ignored.
...@@ -139,16 +140,24 @@ export class MessageText extends String { ...@@ -139,16 +140,24 @@ export class MessageText extends String {
} }
const nick = this.model.collection.chatbox.get('nick'); const nick = this.model.collection.chatbox.get('nick');
this.model.get('references')?.forEach(ref => { this.model.get('references')?.forEach(ref => {
const begin = Number(ref.begin)-offset; const begin = Number(ref.begin)-full_offset;
if (begin < 0 || begin >= offset+text.length) { if (begin < 0 || begin >= full_offset+text.length) {
return; return;
} }
const end = Number(ref.end)-offset; const end = Number(ref.end)-full_offset;
const mention = text.slice(begin, end); const mention = text.slice(begin, end);
if (mention === nick) { if (mention === nick) {
this.addTemplateResult(begin+offset, end+offset, tpl_mention_with_nick({mention})); this.addTemplateResult(
begin+local_offset,
end+local_offset,
tpl_mention_with_nick({mention})
);
} else { } else {
this.addTemplateResult(begin+offset, end+offset, tpl_mention({mention})); this.addTemplateResult(
begin+local_offset,
end+local_offset,
tpl_mention({mention})
);
} }
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment