Remove directly dependency between rocketchat:lib and emoji (#13118)

* Move rocketchat settings to specific package

* WIP: Move models from rocketchat-lib to a specific package (server)

* Move function from rocketchat:lib to rocketchat:utils to use it in rocketchat:models

* Move client models from rocketchat:lib to rocketchat:models

* Fix lint

* Move rocketchat.info from lib to utils

* Remove directly dependency between lib and migrations

* Move statistics Model to rocketchat:models

* Create rocketchat:metrics to be able to depacking rocketchat callbacks

* Move  callbacks to specific package

* Remove unused dependency

* Move rocketchat-notifications to a specific package

* Move rocketchat-promises to a specific package

* remove directly dependency from metrics and models

* Move CachedCollection from lib to models

* Move ui models/collections from ui to models

* Move authorization client/ui models to rocketchat:models to be able to remove lib dependency

* Creation of rocketchat:ui-utils to help decouple rocketchat:lib and rocketchat:authz

* Move some common functions to rocketchat:utils

* Change imports to dynamic imports to avoid directly dependency between some packages

* Move authz models to rocketchat:models

* Remove directly dependency between rocketchat:authz and rocketchat:lib

* Move some functions from rocketchat:lib to rocketchat:utils

* Add functions to settings package

* Convert rocketchat:file-upload to main module structure

* Import FileUpload where it is being used

* Remove FileUpload and fileUploadHandler from globals eslintrc

* Move some  functions to rocketchat:ui-utils

* Remove directly dependency between rocketchat:authorization and rocketchat:ui-utils

* Remove dependency between lazy-load and lib

* Change imports of renderMessageBody from ui-message to ui-utils

* Add import of main ready from ui-utils

* Convert rocketchat-ui-sidenav to main module structure

* Add imports of toolbarSearch from ui-sidenav

* Remove toolbarSearch from eslintrc globals

* Move CachedCollection to a specific package

* Change imports of CachedCollection to new package

* Move some functions to rocketchat:ui-utils

* Remove directly dependency between tooltip and lib

*  Remove directly dependency between settings and metrics

* Move some settings client function from lib to settings

* Convert rocketchat-ui-master to main module structure

* Remove directly dependency between rocketchat:e2e and rocketchat:lib

* Fix wrong import and lint

* Convert rocketchat-webrtc to main module structure

* Fix missing export

* Remove directly dependency between rocketchat:emoji and lib

* Add emoji dependencies inside RocketChat namespace

* Merge branch 'develop' into globals/move-rocketchat-callbacks

* Fix lint

* Fix import missed objects inside RocketChat namespace

* Fix lint

* Fix lint
pull/13122/head
Marcos Spessatto Defendi 6 years ago committed by Rodrigo Nascimento
parent 9f57c9d9cc
commit dff38830b6
  1. 16
      packages/rocketchat-emoji/client/emojiParser.js
  2. 101
      packages/rocketchat-emoji/client/emojiPicker.js
  3. 6
      packages/rocketchat-emoji/client/index.js
  4. 6
      packages/rocketchat-emoji/client/keyboardFix.js
  5. 23
      packages/rocketchat-emoji/client/lib/EmojiPicker.js
  6. 18
      packages/rocketchat-emoji/client/lib/emojiRenderer.js
  7. 4
      packages/rocketchat-emoji/lib/rocketchat.js
  8. 4
      packages/rocketchat-emoji/package.js
  9. 2
      packages/rocketchat-emoji/server/index.js
  10. 3
      packages/rocketchat-lib/client/lib/EmojiPicker.js
  11. 3
      packages/rocketchat-lib/lib/emoji.js
  12. 3
      packages/rocketchat-lib/package.js
  13. 1
      packages/rocketchat-ui/package.js

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { RocketChat } from 'meteor/rocketchat:lib';
import { getUserPreference } from 'meteor/rocketchat:utils';
import { callbacks } from 'meteor/rocketchat:callbacks';
import { emoji } from '../lib/rocketchat';
import { isSetNotNull } from './function-isSet';
import s from 'underscore.string';
@ -7,9 +9,9 @@ import s from 'underscore.string';
* emojiParser is a function that will replace emojis
* @param {Object} message - The message object
*/
RocketChat.callbacks.add('renderMessage', (message) => {
if (isSetNotNull(() => RocketChat.getUserPreference(Meteor.userId(), 'useEmojis')) &&
!RocketChat.getUserPreference(Meteor.userId(), 'useEmojis')) {
callbacks.add('renderMessage', (message) => {
if (isSetNotNull(() => getUserPreference(Meteor.userId(), 'useEmojis')) &&
!getUserPreference(Meteor.userId(), 'useEmojis')) {
return message;
}
@ -17,8 +19,8 @@ RocketChat.callbacks.add('renderMessage', (message) => {
// ' to apostrophe (') for emojis such as :')
message.html = message.html.replace(/'/g, '\'');
Object.keys(RocketChat.emoji.packages).forEach((emojiPackage) => {
message.html = RocketChat.emoji.packages[emojiPackage].render(message.html);
Object.keys(emoji.packages).forEach((emojiPackage) => {
message.html = emoji.packages[emojiPackage].render(message.html);
});
const checkEmojiOnly = $(`<div>${ message.html }</div>`);
@ -50,4 +52,4 @@ RocketChat.callbacks.add('renderMessage', (message) => {
}
return message;
}, RocketChat.callbacks.priority.LOW, 'emoji');
}, callbacks.priority.LOW, 'emoji');

@ -1,8 +1,9 @@
import { ReactiveVar } from 'meteor/reactive-var';
import { RocketChat } from 'meteor/rocketchat:lib';
import { emoji } from '../lib/rocketchat';
import { Template } from 'meteor/templating';
import { TAPi18n } from 'meteor/tap:i18n';
import { isSetNotNull } from './function-isSet';
import { EmojiPicker } from './lib/EmojiPicker';
const emojiCategories = {};
/**
@ -11,10 +12,10 @@ const emojiCategories = {};
* @return {string} readable and translated
*/
function categoryName(category) {
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
if (RocketChat.emoji.packages[emojiPackage].emojiCategories.hasOwnProperty(category)) {
const categoryTag = RocketChat.emoji.packages[emojiPackage].emojiCategories[category];
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
if (emoji.packages[emojiPackage].emojiCategories.hasOwnProperty(category)) {
const categoryTag = emoji.packages[emojiPackage].emojiCategories[category];
return TAPi18n.__(categoryTag);
}
}
@ -30,24 +31,24 @@ function getEmojisByCategory(category) {
const t = Template.instance();
const actualTone = t.tone;
let html = '';
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
if (RocketChat.emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(category)) {
const total = RocketChat.emoji.packages[emojiPackage].emojisByCategory[category].length;
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(category)) {
const total = emoji.packages[emojiPackage].emojisByCategory[category].length;
for (let i = 0; i < total; i++) {
const emoji = RocketChat.emoji.packages[emojiPackage].emojisByCategory[category][i];
const _emoji = emoji.packages[emojiPackage].emojisByCategory[category][i];
let tone = '';
if (actualTone > 0 && RocketChat.emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) {
if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(_emoji)) {
tone = `_tone${ actualTone }`;
}
// set correctPackage here to allow for recent emojis to work properly
if (isSetNotNull(() => RocketChat.emoji.list[`:${ emoji }:`].emojiPackage)) {
const correctPackage = RocketChat.emoji.list[`:${ emoji }:`].emojiPackage;
const image = RocketChat.emoji.packages[correctPackage].render(`:${ emoji }${ tone }:`);
if (isSetNotNull(() => emoji.list[`:${ _emoji }:`].emojiPackage)) {
const correctPackage = emoji.list[`:${ _emoji }:`].emojiPackage;
const image = emoji.packages[correctPackage].render(`:${ _emoji }${ tone }:`);
html += `<li class="emoji-${ emoji }" data-emoji="${ emoji }" title="${ emoji }">${ image }</li>`;
html += `<li class="emoji-${ _emoji }" data-emoji="${ _emoji }" title="${ _emoji }">${ image }</li>`;
}
}
}
@ -63,26 +64,26 @@ function getEmojisBySearchTerm(searchTerm) {
const searchRegExp = new RegExp(RegExp.escape(searchTerm.replace(/:/g, '')), 'i');
for (let emoji in RocketChat.emoji.list) {
if (!RocketChat.emoji.list.hasOwnProperty(emoji)) {
for (let _emoji in emoji.list) {
if (!emoji.list.hasOwnProperty(_emoji)) {
continue;
}
if (searchRegExp.test(emoji)) {
const emojiObject = RocketChat.emoji.list[emoji];
if (searchRegExp.test(_emoji)) {
const emojiObject = emoji.list[_emoji];
const { emojiPackage } = emojiObject;
let tone = '';
emoji = emoji.replace(/:/g, '');
_emoji = _emoji.replace(/:/g, '');
if (actualTone > 0 && RocketChat.emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) {
if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) {
tone = `_tone${ actualTone }`;
}
let emojiFound = false;
for (const key in RocketChat.emoji.packages[emojiPackage].emojisByCategory) {
if (RocketChat.emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) {
const contents = RocketChat.emoji.packages[emojiPackage].emojisByCategory[key];
for (const key in emoji.packages[emojiPackage].emojisByCategory) {
if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) {
const contents = emoji.packages[emojiPackage].emojisByCategory[key];
if (contents.indexOf(emoji) !== -1) {
emojiFound = true;
break;
@ -91,8 +92,8 @@ function getEmojisBySearchTerm(searchTerm) {
}
if (emojiFound) {
const image = RocketChat.emoji.packages[emojiPackage].render(`:${ emoji }${ tone }:`);
html += `<li class="emoji-${ emoji }" data-emoji="${ emoji }" title="${ emoji }">${ image }</li>`;
const image = emoji.packages[emojiPackage].render(`:${ _emoji }${ tone }:`);
html += `<li class="emoji-${ _emoji }" data-emoji="${ _emoji }" title="${ _emoji }">${ image }</li>`;
}
}
}
@ -103,10 +104,10 @@ function getEmojisBySearchTerm(searchTerm) {
Template.emojiPicker.helpers({
category() {
const categories = [];
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
for (const key in RocketChat.emoji.packages[emojiPackage].emojisByCategory) {
if (RocketChat.emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) {
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
for (const key in emoji.packages[emojiPackage].emojisByCategory) {
if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(key)) {
categories.push(key);
}
}
@ -116,10 +117,10 @@ Template.emojiPicker.helpers({
},
emojiByCategory(category) {
let emojisByCategory = [];
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
if (RocketChat.emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(category)) {
emojisByCategory = emojisByCategory.concat(RocketChat.emoji.packages[emojiPackage].emojisByCategory[category]);
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
if (emoji.packages[emojiPackage].emojisByCategory.hasOwnProperty(category)) {
emojisByCategory = emojisByCategory.concat(emoji.packages[emojiPackage].emojisByCategory[category]);
}
}
}
@ -212,19 +213,19 @@ Template.emojiPicker.events({
newTone = '';
}
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
if (RocketChat.emoji.packages[emojiPackage].hasOwnProperty('toneList')) {
for (const emoji in RocketChat.emoji.packages[emojiPackage].toneList) {
if (RocketChat.emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) {
$(`.emoji-${ emoji }`).html(RocketChat.emoji.packages[emojiPackage].render(`:${ emoji }${ newTone }:`));
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
if (emoji.packages[emojiPackage].hasOwnProperty('toneList')) {
for (const _emoji in emoji.packages[emojiPackage].toneList) {
if (emoji.packages[emojiPackage].toneList.hasOwnProperty(_emoji)) {
$(`.emoji-${ _emoji }`).html(emoji.packages[emojiPackage].render(`:${ _emoji }${ newTone }:`));
}
}
}
}
}
RocketChat.EmojiPicker.setTone(tone);
EmojiPicker.setTone(tone);
instance.setCurrentTone(tone);
@ -233,13 +234,13 @@ Template.emojiPicker.events({
'click .emoji-list li'(event, instance) {
event.stopPropagation();
const { emoji } = event.currentTarget.dataset;
const _emoji = event.currentTarget.dataset.emoji;
const actualTone = instance.tone;
let tone = '';
for (const emojiPackage in RocketChat.emoji.packages) {
if (RocketChat.emoji.packages.hasOwnProperty(emojiPackage)) {
if (actualTone > 0 && RocketChat.emoji.packages[emojiPackage].toneList.hasOwnProperty(emoji)) {
for (const emojiPackage in emoji.packages) {
if (emoji.packages.hasOwnProperty(emojiPackage)) {
if (actualTone > 0 && emoji.packages[emojiPackage].toneList.hasOwnProperty(_emoji)) {
tone = `_tone${ actualTone }`;
}
}
@ -251,7 +252,7 @@ Template.emojiPicker.events({
}
instance.currentSearchTerm.set('');
RocketChat.EmojiPicker.pickEmoji(emoji + tone);
EmojiPicker.pickEmoji(_emoji + tone);
},
'keyup .js-emojipicker-search, change .js-emojipicker-search'(event, instance) {
const value = event.target.value.trim();
@ -264,14 +265,14 @@ Template.emojiPicker.events({
});
Template.emojiPicker.onCreated(function() {
this.tone = RocketChat.EmojiPicker.getTone();
const recent = RocketChat.EmojiPicker.getRecent();
this.tone = EmojiPicker.getTone();
const recent = EmojiPicker.getRecent();
this.recentNeedsUpdate = new ReactiveVar(false);
this.currentCategory = new ReactiveVar(recent.length > 0 ? 'recent' : 'people');
this.currentSearchTerm = new ReactiveVar('');
recent.forEach((emoji) => {
RocketChat.emoji.packages.base.emojisByCategory.recent.push(emoji);
recent.forEach((_emoji) => {
emoji.packages.base.emojisByCategory.recent.push(_emoji);
});
this.setCurrentTone = (newTone) => {

@ -1,11 +1,13 @@
import '../lib/rocketchat';
import { emoji } from '../lib/rocketchat';
import './emojiParser';
import './emojiPicker.html';
import './emojiPicker';
import './lib/EmojiPicker';
import { EmojiPicker } from './lib/EmojiPicker';
import { renderEmoji } from './lib/emojiRenderer';
import './keyboardFix';
export {
renderEmoji,
emoji,
EmojiPicker,
};

@ -1,15 +1,15 @@
import { Meteor } from 'meteor/meteor';
import { RocketChat } from 'meteor/rocketchat:lib';
import { EmojiPicker } from './lib/EmojiPicker';
if (Meteor.isCordova) {
window.addEventListener('native.keyboardshow', function() {
if ((typeof device !== 'undefined' && device !== null ? device.platform.toLowerCase() : false) !== 'android') {
RocketChat.EmojiPicker.setPosition();
EmojiPicker.setPosition();
}
});
window.addEventListener('native.keyboardhide', function() {
if ((typeof device !== 'undefined' && device !== null ? device.platform.toLowerCase() : false) !== 'android') {
RocketChat.EmojiPicker.setPosition();
EmojiPicker.setPosition();
}
});
}

@ -1,10 +1,9 @@
import { RocketChat } from 'meteor/rocketchat:lib';
import { Blaze } from 'meteor/blaze';
import { Template } from 'meteor/templating';
import { emoji } from '../../lib/rocketchat';
import _ from 'underscore';
RocketChat.EmojiPicker = {
export const EmojiPicker = {
width: 365,
height: 290,
initiated: false,
@ -105,17 +104,17 @@ RocketChat.EmojiPicker = {
this.close();
this.addRecent(emoji);
},
addRecent(emoji) {
const pos = this.recent.indexOf(emoji);
addRecent(_emoji) {
const pos = this.recent.indexOf(_emoji);
if (pos !== -1) {
this.recent.splice(pos, 1);
}
this.recent.unshift(emoji);
this.recent.unshift(_emoji);
window.localStorage.setItem('emoji.recent', this.recent);
RocketChat.emoji.packages.base.emojisByCategory.recent = this.recent;
emoji.packages.base.emojisByCategory.recent = this.recent;
this.updateRecent();
},
updateRecent() {
@ -128,16 +127,16 @@ RocketChat.EmojiPicker = {
},
refreshDynamicEmojiLists() {
const dynamicEmojiLists = [
RocketChat.emoji.packages.base.emojisByCategory.recent,
RocketChat.emoji.packages.emojiCustom.emojisByCategory.rocket,
emoji.packages.base.emojisByCategory.recent,
emoji.packages.emojiCustom.emojisByCategory.rocket,
];
dynamicEmojiLists.forEach((category) => {
if (category) {
for (let i = 0; i < category.length; i++) {
const emoji = category[i];
if (!RocketChat.emoji.list[`:${ emoji }:`]) {
category = _.without(category, emoji);
const _emoji = category[i];
if (!emoji.list[`:${ _emoji }:`]) {
category = _.without(category, _emoji);
}
}
}

@ -1,13 +1,13 @@
import { Blaze } from 'meteor/blaze';
import { Template } from 'meteor/templating';
import { RocketChat } from 'meteor/rocketchat:lib';
import { emoji } from '../../lib/rocketchat';
import { isSetNotNull } from '../function-isSet';
import { HTML } from 'meteor/htmljs';
export const renderEmoji = function(emoji) {
if (isSetNotNull(() => RocketChat.emoji.list[emoji].emojiPackage)) {
const { emojiPackage } = RocketChat.emoji.list[emoji];
return RocketChat.emoji.packages[emojiPackage].render(emoji);
export const renderEmoji = function(_emoji) {
if (isSetNotNull(() => emoji.list[_emoji].emojiPackage)) {
const { emojiPackage } = emoji.list[_emoji];
return emoji.packages[emojiPackage].render(_emoji);
}
};
@ -15,11 +15,11 @@ Blaze.registerHelper('renderEmoji', renderEmoji);
Template.registerHelper('renderEmoji', new Template('renderEmoji', function() {
const view = this;
const emoji = Blaze.getData(view);
const _emoji = Blaze.getData(view);
if (isSetNotNull(() => RocketChat.emoji.list[emoji].emojiPackage)) {
const { emojiPackage } = RocketChat.emoji.list[emoji];
return new HTML.Raw(RocketChat.emoji.packages[emojiPackage].render(emoji));
if (isSetNotNull(() => emoji.list[_emoji].emojiPackage)) {
const { emojiPackage } = emoji.list[_emoji];
return new HTML.Raw(emoji.packages[emojiPackage].render(_emoji));
}
return '';

@ -1,6 +1,4 @@
import { RocketChat } from 'meteor/rocketchat:lib';
RocketChat.emoji = {
export const emoji = {
packages: {
base: {
emojiCategories: { recent: 'Frequently_Used' },

@ -9,8 +9,8 @@ Package.onUse(function(api) {
api.use([
'ecmascript',
'templating',
'rocketchat:lib',
'rocketchat:theme',
'rocketchat:callbacks',
'rocketchat:utils',
'htmljs',
]);

@ -1 +1 @@
import '../lib/rocketchat';
export { emoji } from '../lib/rocketchat';

@ -0,0 +1,3 @@
import { EmojiPicker } from 'meteor/rocketchat:emoji';
RocketChat.EmojiPicker = EmojiPicker;

@ -0,0 +1,3 @@
import { emoji } from 'meteor/rocketchat:emoji';
RocketChat.emoji = emoji;

@ -33,6 +33,7 @@ Package.onUse(function(api) {
api.use('rocketchat:promises');
api.use('rocketchat:ui-utils');
api.use('rocketchat:tooltip');
api.use('rocketchat:emoji');
api.use('rocketchat:accounts');
api.use('modules');
api.use('rocketchat:i18n');
@ -94,6 +95,7 @@ Package.onUse(function(api) {
api.addFiles('lib/getUserNotificationPreference.js');
api.addFiles('lib/getUserPreference.js');
api.addFiles('lib/emoji.js');
api.addFiles('server/lib/bugsnag.js', 'server');
api.addFiles('server/lib/metrics_import.js', 'server');
@ -237,6 +239,7 @@ Package.onUse(function(api) {
api.addFiles('client/lib/handleError.js', 'client');
api.addFiles('client/lib/authorization.js', 'client');
api.addFiles('client/lib/tooltip.js', 'client');
api.addFiles('client/lib/EmojiPicker.js', 'client');
// CLIENT LIB STARTUP
api.addFiles('client/lib/startup/commands.js', 'client');

@ -24,6 +24,7 @@ Package.onUse(function(api) {
'rocketchat:ui-master',
'rocketchat:push',
'rocketchat:utils',
'rocketchat:emoji',
'rocketchat:ui-utils',
'rocketchat:models',
'raix:ui-dropped-event',

Loading…
Cancel
Save