Regression: patch to improve emoji render (#14980)

This reverts commit b395b50398.
pull/14985/head
Guilherme Gazzo 6 years ago committed by GitHub
parent b395b50398
commit bf30d36682
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      app/emoji-emojione/lib/rocketchat.js
  2. 5
      app/emoji/client/emojiParser.js
  3. 45
      app/utils/lib/getUserAvatarURL.js

@ -230,23 +230,6 @@ emojione.emojioneList[':asterisk_symbol:'] = {
return `${ m2 }<img class="emojione" alt="${ alt }" ${ title } src="${ ePath }${ unicode }${ ns.fileExtension }"/>`;
});
ns.convert = mem(ns.convert);
const reg = (escapedFind) =>
new RegExp(
`<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(${ escapedFind })`,
'gi'
);
// callback prevents replacing anything inside of these common html tags as well as between an <object></object> tag
const replace = function(entire, m1) {
return typeof m1 === 'undefined' || m1 === '' ? entire : '';
};
ns.escapeRegExp = mem(ns.escapeRegExp);
ns.replaceAllVS16 = function(string, find) {
const escapedFind = ns.escapeRegExp(find); // sorted largest output to smallest output
const search = reg(escapedFind);
return string.replace(search, replace);
};
ns.shortnameToImage = function(str) {
// replace regular shortnames first
str = str.replace(ns.regShortNames, convertShortName);

@ -11,9 +11,6 @@ import { emoji } from '../lib/rocketchat';
* @param {Object} message - The message object
*/
const pipe = (f, x) => (e) => x(f(e));
const parser = Object.entries(emoji.packages).map(([, emojiPackage]) => emojiPackage.render.bind(emojiPackage)).reduce(pipe);
Tracker.autorun(() => {
if (!getUserPreference(Meteor.userId(), 'useEmojis')) {
return callbacks.remove('renderMessage', 'emoji');
@ -27,7 +24,7 @@ Tracker.autorun(() => {
// '<br>' to ' <br> ' for emojis such at line breaks
html = html.replace(/<br>/g, ' <br> ');
html = parser(html);
html = Object.entries(emoji.packages).reduce((value, [, emojiPackage]) => emojiPackage.render(value), html);
const checkEmojiOnly = document.createElement('div');

@ -1,40 +1,19 @@
import { Session } from 'meteor/session';
import { Meteor } from 'meteor/meteor';
import { Tracker } from 'meteor/tracker';
import { getAvatarURL } from './getAvatarURL';
import { settings } from '../../settings';
let externalSource = '';
if (Meteor.isServer) {
settings.get('Accounts_AvatarExternalProviderUrl', (key, value = '') => {
externalSource = value.trim().replace(/\/$/, '');
});
} else {
Tracker.autorun(function() {
externalSource = (settings.get('Accounts_AvatarExternalProviderUrl') || '').trim().replace(/\/$/, '');
});
}
export const getUserAvatarURL = Meteor.isServer
? function(username) {
if (username == null) {
return;
}
if (externalSource !== '') {
return externalSource.replace('{username}', username);
}
return getAvatarURL({ username });
export const getUserAvatarURL = function(username) {
const externalSource = (settings.get('Accounts_AvatarExternalProviderUrl') || '').trim().replace(/\/$/, '');
if (externalSource !== '') {
return externalSource.replace('{username}', username);
}
: function(username) {
if (username == null) {
return;
}
if (externalSource !== '') {
return externalSource.replace('{username}', username);
}
const key = `avatar_random_${ username }`;
const cache = Tracker.nonreactive(() => Session.get(key));
return getAvatarURL({ username, cache });
};
if (username == null) {
return;
}
const key = `avatar_random_${ username }`;
const cache = Tracker.nonreactive(() => Session && Session.get(key)); // there is no Session on server
return getAvatarURL({ username, cache });
};

Loading…
Cancel
Save