Remove dependency of RocketChat namespace inside rocketchat:ui (#13131)

* 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

* Move some functions to utils

* Fix lint

* Move some ui functions to ui-utils

* Fix import missed objects inside RocketChat namespace

* Fix lint

* Remove rocketchat:ui package dependency of RocketChat namespace

* Remove lib dependency in rocketchat:ui-sidenav

* Remove dependency between lib and ui-vrecord

* Add logger dependency in file-upload

* Revert commented test file
pull/13160/head
Marcos Spessatto Defendi 6 years ago committed by Rodrigo Nascimento
parent af96bd990d
commit fb54664862
  1. 1
      packages/rocketchat-file-upload/package.js
  2. 7
      packages/rocketchat-lib/client/lib/ui-buttons.js
  3. 2
      packages/rocketchat-lib/package.js
  4. 1
      packages/rocketchat-ui-sidenav/package.js
  5. 1
      packages/rocketchat-ui-utils/client/lib/RoomManager.js
  6. 3
      packages/rocketchat-ui-vrecord/package.js
  7. 4
      packages/rocketchat-ui-vrecord/server/settings.js
  8. 29
      packages/rocketchat-ui/client/components/header/header.js
  9. 3
      packages/rocketchat-ui/client/components/popupList.js
  10. 1
      packages/rocketchat-ui/client/index.js
  11. 53
      packages/rocketchat-ui/client/lib/chatMessages.js
  12. 3
      packages/rocketchat-ui/client/lib/collections.js
  13. 3
      packages/rocketchat-ui/client/lib/cordova/push.js
  14. 1
      packages/rocketchat-ui/client/lib/cordova/user-state.js
  15. 8
      packages/rocketchat-ui/client/lib/esc.js
  16. 7
      packages/rocketchat-ui/client/lib/fileUpload.js
  17. 9
      packages/rocketchat-ui/client/lib/iframeCommands.js
  18. 11
      packages/rocketchat-ui/client/lib/menu.js
  19. 110
      packages/rocketchat-ui/client/lib/modal.js
  20. 10
      packages/rocketchat-ui/client/lib/msgTyping.js
  21. 18
      packages/rocketchat-ui/client/lib/notification.js
  22. 4
      packages/rocketchat-ui/client/lib/recorderjs/recorder.js
  23. 18
      packages/rocketchat-ui/client/lib/rocket.js
  24. 3
      packages/rocketchat-ui/client/views/app/burger.js
  25. 37
      packages/rocketchat-ui/client/views/app/createChannel.js
  26. 12
      packages/rocketchat-ui/client/views/app/directory.js
  27. 5
      packages/rocketchat-ui/client/views/app/home.js
  28. 118
      packages/rocketchat-ui/client/views/app/room.js
  29. 3
      packages/rocketchat-ui/client/views/app/roomSearch.js
  30. 3
      packages/rocketchat-ui/client/views/app/secretURL.js
  31. 3
      packages/rocketchat-ui/client/views/cmsPage.js
  32. 4
      packages/rocketchat-ui/package.js

@ -20,6 +20,7 @@ Package.onUse(function(api) {
'rocketchat:settings',
'rocketchat:callbacks',
'rocketchat:authorization',
'rocketchat:logger',
'random',
'accounts-base',
'tracker',

@ -0,0 +1,7 @@
import { Login, Button, animationSupport, animeBack, preLoadImgs } from 'meteor/rocketchat:ui';
RocketChat.Login = Login;
RocketChat.Button = Button;
RocketChat.animationSupport = animationSupport;
RocketChat.animeBack = animeBack;
RocketChat.preLoadImgs = preLoadImgs;

@ -34,6 +34,7 @@ Package.onUse(function(api) {
api.use('rocketchat:ui-utils');
api.use('rocketchat:tooltip');
api.use('rocketchat:emoji');
api.use('rocketchat:ui');
api.use('rocketchat:accounts');
api.use('modules');
api.use('rocketchat:i18n');
@ -240,6 +241,7 @@ Package.onUse(function(api) {
api.addFiles('client/lib/authorization.js', 'client');
api.addFiles('client/lib/tooltip.js', 'client');
api.addFiles('client/lib/EmojiPicker.js', 'client');
api.addFiles('client/lib/ui-buttons.js', 'client');
// CLIENT LIB STARTUP
api.addFiles('client/lib/startup/commands.js', 'client');

@ -14,7 +14,6 @@ Package.onUse(function(api) {
api.use([
'ecmascript',
'templating',
'rocketchat:lib',
'rocketchat:callbacks',
'rocketchat:authorization',
'rocketchat:settings',

@ -31,7 +31,6 @@ const onDeleteMessageBulkStream = ({ rid, ts, excludePinned, users }) => {
export const RoomManager = new function() {
const openedRooms = {};
let openedRoom = undefined; //eslint-disable-line
const msgStream = new Meteor.Streamer('room-messages');
const onlineUsers = new ReactiveVar({});
const Dep = new Tracker.Dependency();

@ -11,7 +11,8 @@ Package.onUse(function(api) {
'ecmascript',
'templating',
'tracker',
'rocketchat:lib',
'rocketchat:settings',
'rocketchat:ui',
]);
api.addFiles('client/vrecord.css', 'client');
api.mainModule('server/index.js', 'server');

@ -1,6 +1,6 @@
import { RocketChat } from 'meteor/rocketchat:lib';
import { settings } from 'meteor/rocketchat:settings';
RocketChat.settings.addGroup('Message', function() {
settings.addGroup('Message', function() {
this.add('Message_VideoRecorderEnabled', true, {
type: 'boolean',
public: true,

@ -1,11 +1,14 @@
import { Meteor } from 'meteor/meteor';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { t } from 'meteor/rocketchat:utils';
import { t, roomTypes, handleError } from 'meteor/rocketchat:utils';
import { TabBar, fireGlobalEvent } from 'meteor/rocketchat:ui-utils';
import { ChatSubscription, Rooms } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
const isSubscribed = (_id) => ChatSubscription.find({ rid: _id }).count() > 0;
const favoritesEnabled = () => RocketChat.settings.get('Favorite_Rooms');
const favoritesEnabled = () => settings.get('Favorite_Rooms');
Template.header.helpers({
back() {
@ -14,15 +17,15 @@ Template.header.helpers({
avatarBackground() {
const roomData = Session.get(`roomData${ this._id }`);
if (!roomData) { return ''; }
return RocketChat.roomTypes.getSecondaryRoomName(roomData.t, roomData) || RocketChat.roomTypes.getRoomName(roomData.t, roomData);
return roomTypes.getSecondaryRoomName(roomData.t, roomData) || roomTypes.getRoomName(roomData.t, roomData);
},
buttons() {
return RocketChat.TabBar.getButtons();
return TabBar.getButtons();
},
isTranslated() {
const sub = ChatSubscription.findOne({ rid: this._id }, { fields: { autoTranslate: 1, autoTranslateLanguage: 1 } });
return RocketChat.settings.get('AutoTranslate_Enabled') && ((sub != null ? sub.autoTranslate : undefined) === true) && (sub.autoTranslateLanguage != null);
return settings.get('AutoTranslate_Enabled') && ((sub != null ? sub.autoTranslate : undefined) === true) && (sub.autoTranslateLanguage != null);
},
state() {
@ -38,21 +41,21 @@ Template.header.helpers({
},
isDirect() {
return RocketChat.models.Rooms.findOne(this._id).t === 'd';
return Rooms.findOne(this._id).t === 'd';
},
roomName() {
const roomData = Session.get(`roomData${ this._id }`);
if (!roomData) { return ''; }
return RocketChat.roomTypes.getRoomName(roomData.t, roomData);
return roomTypes.getRoomName(roomData.t, roomData);
},
secondaryName() {
const roomData = Session.get(`roomData${ this._id }`);
if (!roomData) { return ''; }
return RocketChat.roomTypes.getSecondaryRoomName(roomData.t, roomData);
return roomTypes.getSecondaryRoomName(roomData.t, roomData);
},
roomTopic() {
@ -62,7 +65,7 @@ Template.header.helpers({
},
channelIcon() {
const roomType = RocketChat.models.Rooms.findOne(this._id).t;
const roomType = Rooms.findOne(this._id).t;
switch (roomType) {
case 'd':
return 'at';
@ -73,7 +76,7 @@ Template.header.helpers({
case 'l':
return 'livechat';
default:
return RocketChat.roomTypes.getIcon(roomType);
return roomTypes.getIcon(roomType);
}
},
@ -81,7 +84,7 @@ Template.header.helpers({
const roomData = Session.get(`roomData${ this._id }`);
if (!(roomData != null ? roomData.t : undefined)) { return ''; }
return RocketChat.roomTypes.getIcon(roomData != null ? roomData.t : undefined);
return roomTypes.getIcon(roomData != null ? roomData.t : undefined);
},
encryptedChannel() {
@ -91,7 +94,7 @@ Template.header.helpers({
userStatus() {
const roomData = Session.get(`roomData${ this._id }`);
return RocketChat.roomTypes.getUserStatus(roomData.t, this._id) || t('offline');
return roomTypes.getUserStatus(roomData.t, this._id) || t('offline');
},
showToggleFavorite() {
@ -146,5 +149,5 @@ Template.header.events({
});
Template.header.onCreated(function() {
this.currentChannel = (this.data && this.data._id && RocketChat.models.Rooms.findOne(this.data._id)) || undefined;
this.currentChannel = (this.data && this.data._id && Rooms.findOne(this.data._id)) || undefined;
});

@ -1,4 +1,5 @@
import { Template } from 'meteor/templating';
import { settings } from 'meteor/rocketchat:settings';
Template.popupList.helpers({
config() {
@ -34,6 +35,6 @@ Template.popupList_default.helpers({
Template.popupList_item_default.helpers({
showRealNames() {
return RocketChat.settings.get('UI_Use_Real_Name');
return settings.get('UI_Use_Real_Name');
},
});

@ -0,0 +1 @@
export { Button, Login, animationSupport, animeBack, preLoadImgs } from './lib/rocket';

@ -5,7 +5,14 @@ import { Tracker } from 'meteor/tracker';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Session } from 'meteor/session';
import { TAPi18n } from 'meteor/tap:i18n';
import { t } from 'meteor/rocketchat:utils';
import { t, getUserPreference, slashCommands, handleError } from 'meteor/rocketchat:utils';
import { MessageAction, messageProperties, MessageTypes, readMessage, modal } from 'meteor/rocketchat:ui-utils';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
import { promises } from 'meteor/rocketchat:promises';
import { hasAtLeastOnePermission } from 'meteor/rocketchat:authorization';
import { Messages, Rooms, ChatMessage } from 'meteor/rocketchat:models';
import { emoji } from 'meteor/rocketchat:emoji';
import _ from 'underscore';
import s from 'underscore.string';
import moment from 'moment';
@ -16,7 +23,7 @@ let sendOnEnter = '';
Meteor.startup(() => {
Tracker.autorun(function() {
const user = Meteor.userId();
sendOnEnter = RocketChat.getUserPreference(user, 'sendOnEnter');
sendOnEnter = getUserPreference(user, 'sendOnEnter');
});
});
@ -32,7 +39,7 @@ ChatMessages = class ChatMessages {
init(node) {
this.editing = {};
this.records = {};
this.messageMaxSize = RocketChat.settings.get('Message_MaxAllowedSize');
this.messageMaxSize = settings.get('Message_MaxAllowedSize');
this.wrapper = $(node).find('.wrapper');
this.input = this.input || $(node).find('.js-input-message').get(0);
this.$input = $(this.input);
@ -120,14 +127,14 @@ ChatMessages = class ChatMessages {
const message = this.getMessageById(element.getAttribute('id'));
const hasPermission = RocketChat.authz.hasAtLeastOnePermission('edit-message', message.rid);
const editAllowed = RocketChat.settings.get('Message_AllowEditing');
const hasPermission = hasAtLeastOnePermission('edit-message', message.rid);
const editAllowed = settings.get('Message_AllowEditing');
const editOwn = message && message.u && message.u._id === Meteor.userId();
if (!hasPermission && (!editAllowed || !editOwn)) { return; }
if (element.classList.contains('system')) { return; }
const blockEditInMinutes = RocketChat.settings.get('Message_AllowEditing_BlockEditInMinutes');
const blockEditInMinutes = settings.get('Message_AllowEditing_BlockEditInMinutes');
if (blockEditInMinutes && blockEditInMinutes !== 0) {
let currentTsDiff;
let msgTs;
@ -211,8 +218,8 @@ ChatMessages = class ChatMessages {
const mentionUser = $(input).data('mention-user') || false;
if (reply !== undefined) {
msg = `[ ](${ await RocketChat.MessageAction.getPermaLink(reply._id) }) `;
const roomInfo = RocketChat.models.Rooms.findOne(reply.rid, { fields: { t: 1 } });
msg = `[ ](${ await MessageAction.getPermaLink(reply._id) }) `;
const roomInfo = Rooms.findOne(reply.rid, { fields: { t: 1 } });
if (roomInfo.t !== 'd' && reply.u.username !== Meteor.user().username && mentionUser) {
msg += `@${ reply.u.username } `;
}
@ -225,7 +232,7 @@ ChatMessages = class ChatMessages {
if (msg.slice(0, 2) === '+:') {
const reaction = msg.slice(1).trim();
if (RocketChat.emoji.list[reaction]) {
if (emoji.list[reaction]) {
const lastMessage = ChatMessage.findOne({ rid }, { fields: { ts: 1 }, sort: { ts: -1 } });
Meteor.call('setReaction', reaction, lastMessage._id);
input.value = '';
@ -235,7 +242,7 @@ ChatMessages = class ChatMessages {
}
// Run to allow local encryption, and maybe other client specific actions to be run before send
const msgObject = await RocketChat.promises.run('onClientBeforeSendMessage', { _id: Random.id(), rid, msg });
const msgObject = await promises.run('onClientBeforeSendMessage', { _id: Random.id(), rid, msg });
// checks for the final msgObject.msg size before actually sending the message
if (this.isMessageTooLong(msgObject.msg)) {
@ -290,12 +297,12 @@ ChatMessages = class ChatMessages {
const match = msgObject.msg.match(/^\/([^\s]+)(?:\s+(.*))?$/m);
if (match) {
let command;
if (RocketChat.slashCommands.commands[match[1]]) {
const commandOptions = RocketChat.slashCommands.commands[match[1]];
if (slashCommands.commands[match[1]]) {
const commandOptions = slashCommands.commands[match[1]];
command = match[1];
const param = match[2] || '';
if (!commandOptions.permission || RocketChat.authz.hasAtLeastOnePermission(commandOptions.permission, Session.get('openedRoom'))) {
if (!commandOptions.permission || hasAtLeastOnePermission(commandOptions.permission, Session.get('openedRoom'))) {
if (commandOptions.clientOnly) {
commandOptions.callback(command, param, msgObject);
} else {
@ -306,14 +313,14 @@ ChatMessages = class ChatMessages {
}
}
if (!RocketChat.settings.get('Message_AllowUnrecognizedSlashCommand')) {
if (!settings.get('Message_AllowUnrecognizedSlashCommand')) {
const invalidCommandMsg = {
_id: Random.id(),
rid: msgObject.rid,
ts: new Date,
msg: TAPi18n.__('No_such_command', { command: match[1] }),
u: {
username: RocketChat.settings.get('InternalHubot_Username'),
username: settings.get('InternalHubot_Username'),
},
private: true,
};
@ -328,7 +335,7 @@ ChatMessages = class ChatMessages {
}
confirmDeleteMsg(message, done = function() {}) {
if (RocketChat.MessageTypes.isSystemMessage(message)) { return; }
if (MessageTypes.isSystemMessage(message)) { return; }
modal.open({
title: t('Are_you_sure'),
text: t('You_will_not_be_able_to_recover'),
@ -358,8 +365,8 @@ ChatMessages = class ChatMessages {
}
deleteMsg(message) {
const forceDelete = RocketChat.authz.hasAtLeastOnePermission('force-delete-message', message.rid);
const blockDeleteInMinutes = RocketChat.settings.get('Message_AllowDeleting_BlockDeleteInMinutes');
const forceDelete = hasAtLeastOnePermission('force-delete-message', message.rid);
const blockDeleteInMinutes = settings.get('Message_AllowDeleting_BlockDeleteInMinutes');
if (blockDeleteInMinutes && forceDelete === false) {
let msgTs;
if (message.ts != null) { msgTs = moment(message.ts); }
@ -460,7 +467,7 @@ ChatMessages = class ChatMessages {
if (!msgId) {
return;
}
const message = RocketChat.models.Messages.findOne(msgId);
const message = Messages.findOne(msgId);
if (message) {
return this.$input.data('reply', message).trigger('dataChange');
}
@ -594,8 +601,8 @@ ChatMessages = class ChatMessages {
}
isMessageTooLong(message) {
const adjustedMessage = RocketChat.messageProperties.messageWithoutEmojiShortnames(message);
return RocketChat.messageProperties.length(adjustedMessage) > this.messageMaxSize && message;
const adjustedMessage = messageProperties.messageWithoutEmojiShortnames(message);
return messageProperties.length(adjustedMessage) > this.messageMaxSize && message;
}
isEmpty() {
@ -604,10 +611,10 @@ ChatMessages = class ChatMessages {
};
RocketChat.callbacks.add('afterLogoutCleanUp', () => {
callbacks.add('afterLogoutCleanUp', () => {
Object.keys(localStorage).forEach((item) => {
if (item.indexOf('messagebox_') === 0) {
localStorage.removeItem(item);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'chatMessages-after-logout-cleanup');
}, callbacks.priority.MEDIUM, 'chatMessages-after-logout-cleanup');

@ -1,5 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { Tracker } from 'meteor/tracker';
import { settings } from 'meteor/rocketchat:settings';
import {
ChatMessage as chatMessage,
CachedChatRoom as cachedChatRoom,
@ -27,7 +28,7 @@ this.CachedUserList = cachedUserList;
Meteor.startup(() => {
Tracker.autorun(() => {
if (!Meteor.userId() && RocketChat.settings.get('Accounts_AllowAnonymousRead') === true) {
if (!Meteor.userId() && settings.get('Accounts_AllowAnonymousRead') === true) {
CachedChatRoom.init();
CachedChatSubscription.ready.set(true);
}

@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { Tracker } from 'meteor/tracker';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Push } from 'meteor/rocketchat:push';
import { settings } from 'meteor/rocketchat:settings';
if (Meteor.isCordova) {
// Push.addListener 'token', (token) ->
@ -72,7 +73,7 @@ if (Meteor.isCordova) {
Meteor.startup(() =>
Tracker.autorun(() => {
if (RocketChat.settings.get('Push_enable') === true) {
if (settings.get('Push_enable') === true) {
Push.Configure({
android: {

@ -1,5 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { UserPresence } from 'meteor/konecty:user-presence';
import { readMessage } from 'meteor/rocketchat:ui-utils';
import _ from 'underscore';
let timer = undefined;

@ -1,3 +1,6 @@
import { SideNav } from 'meteor/rocketchat:ui-utils';
import { VideoRecorder } from './recorderjs/videoRecorder';
const escapify = {
init() {
const that = this;
@ -6,7 +9,7 @@ const escapify = {
if (keyName === 'Escape') {
that.sideNavIcon();
that.flextTabButton();
that.videoDialog();
that.videoDialog().then();
that.sweetAlerts();
}
}, false);
@ -36,7 +39,8 @@ const escapify = {
}
},
videoDialog() {
async videoDialog() {
const { VRecDialog } = await import('meteor/rocketchat:ui-vrecord');
const vrecDialog = document.querySelector('.vrec-dialog');
if (vrecDialog && Number(window.getComputedStyle(vrecDialog).opacity) === 1) {
VideoRecorder.stop();

@ -4,7 +4,8 @@ import { Session } from 'meteor/session';
import s from 'underscore.string';
import { fileUploadHandler } from 'meteor/rocketchat:file-upload';
import { Handlebars } from 'meteor/ui';
import { t } from 'meteor/rocketchat:utils';
import { t, fileUploadIsValidContentType } from 'meteor/rocketchat:utils';
import { modal } from 'meteor/rocketchat:ui-utils';
const readAsDataURL = (file, callback) => {
const reader = new FileReader();
@ -135,7 +136,7 @@ const getUploadPreview = async(file, preview) => {
return getGenericUploadPreview(file, preview);
};
fileUpload = async(files) => { //eslint-disable-line
fileUpload = async(files) => {
files = [].concat(files);
const roomId = Session.get('openedRoom');
@ -147,7 +148,7 @@ fileUpload = async(files) => { //eslint-disable-line
return;
}
if (!RocketChat.fileUploadIsValidContentType(file.file.type)) {
if (!fileUploadIsValidContentType(file.file.type)) {
modal.open({
title: t('FileUpload_MediaType_NotAccepted'),
text: file.file.type || `*.${ s.strRightBack(file.file.name, '.') }`,

@ -2,6 +2,9 @@ import { Meteor } from 'meteor/meteor';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Session } from 'meteor/session';
import { ServiceConfiguration } from 'meteor/service-configuration';
import { AccountBox } from 'meteor/rocketchat:ui-utils';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
import s from 'underscore.string';
const commands = {
@ -52,7 +55,7 @@ const commands = {
'logout'() {
const user = Meteor.user();
Meteor.logout(() => {
RocketChat.callbacks.run('afterLogoutCleanUp', user);
callbacks.run('afterLogoutCleanUp', user);
Meteor.call('logoutCleanUp', user);
return FlowRouter.go('home');
});
@ -72,7 +75,7 @@ const commands = {
};
window.addEventListener('message', (e) => {
if (RocketChat.settings.get('Iframe_Integration_receive_enable') !== true) {
if (settings.get('Iframe_Integration_receive_enable') !== true) {
return;
}
@ -80,7 +83,7 @@ window.addEventListener('message', (e) => {
return;
}
const origins = RocketChat.settings.get('Iframe_Integration_receive_origin');
const origins = settings.get('Iframe_Integration_receive_origin');
if (origins !== '*' && origins.split(',').indexOf(e.origin) === -1) {
return console.error('Origin not allowed', e.origin);

@ -1,20 +1,23 @@
import _ from 'underscore';
import { menu as _menu } from 'meteor/rocketchat:ui-utils';
import EventEmitter from 'wolfy87-eventemitter';
const emitter = new EventEmitter();
window.addEventListener('resize', _.debounce((() => {
let lastState = window.matchMedia('(min-width: 780px)').matches ? 'mini' : 'large';
RocketChat.emit('grid', lastState);
emitter.emit('grid', lastState);
return () => {
const futureState = window.matchMedia('(min-width: 780px)').matches ? 'mini' : 'large';
if (lastState !== futureState) {
lastState = futureState;
RocketChat.emit('grid', lastState);
emitter.emit('grid', lastState);
}
};
})(), 100));
this.menu = _menu;
RocketChat.on('grid', () => {
this.menu.close();
emitter.on('grid', () => {
_menu.close();
});

@ -1,110 +0,0 @@
import { Blaze } from 'meteor/blaze';
this.Modal = (function() {
const self = {};
const win = $(window);
// mistérios da vida c.483: Pq a self.$window diz ter 100% da janela via css mas na verdade ocupa menos de 100% da tela?
// isso impede que o retorno da janela ao normal quando não mais necessária a classe fluid. (comportamento dançante)
function focus() {
if (self.$modal) {
const input = self.$modal.find('input[type=\'text\']');
if (input.length) { return input.get(0).focus(); }
}
}
function check() {
if (self.$modal && self.$modal.length) {
if (win.height() < (self.$window.outerHeight() + (win.height() * 0.10))) {
if (!self.$modal.hasClass('fluid')) {
return self.$modal.addClass('fluid');
}
}
}
}
function stopListening() {
if (self.interval) { return clearInterval(self.interval); }
}
function startListening() {
stopListening();
return self.interval = setInterval(() => check(), 100);
}
function close() {
self.$modal.addClass('closed');
win.unbind('keydown.modal');
// acionar no on-complete da animação
return setTimeout(function() {
self.opened = 0;
stopListening();
return self.$modal.removeClass('opened closed');
}, 300);
}
function keydown(e) {
const k = e.which;
if (k === 27) {
e.preventDefault();
e.stopImmediatePropagation();
return close();
}
}
function checkFooter() {
if (self.$footer && self.$footer.length) {
const buttons = self.$footer.find('button');
return buttons.each(function() {
const btn = $(this);
if (btn.html().match(/fechar/ig)) {
return btn.click(function(e) {
e.preventDefault();
return close();
});
}
});
}
}
function setContent(template, data) {
self.$main.empty();
if (template) {
if (data) {
Blaze.renderWithData(template, data, self.$main.get(0));
} else {
Blaze.render(template, self.$main.get(0));
}
checkFooter();
return check();
}
}
function open(template, params) {
params = params || {};
RocketChat.animeBack(self.$modal, () => focus());
self.opened = 1;
if (params.listening) { startListening(); }
if (template != null) { setContent(template, params.data); }
self.$modal.addClass('opened');
self.$modal.removeClass('fluid');
return setTimeout(() => focus(), 200);
}
function init($modal, params) {
self.params = params || {};
self.opened = 0;
self.initialized = 0;
self.$modal = $modal.length ? $modal : $('.rocket-modal');
if (self.$modal.length) {
self.initialized = 0;
self.$window = self.$modal.find('.modal');
self.$main = self.$modal.find('main');
self.$close = self.$modal.find('header > .close');
self.$footer = self.$modal.find('footer');
self.$close.unbind('click').click(close);
win.unbind('resize.modal').bind('resize.modal', check);
return win.unbind('keydown.modal').bind('keydown.modal', (e) => keydown(e));
}
}
return { init, open, close, focus, setContent };
}());

@ -2,6 +2,8 @@ import { Meteor } from 'meteor/meteor';
import { Tracker } from 'meteor/tracker';
import { ReactiveVar } from 'meteor/reactive-var';
import { Session } from 'meteor/session';
import { settings } from 'meteor/rocketchat:settings';
import { Notifications } from 'meteor/rocketchat:notifications';
import _ from 'underscore';
export const MsgTyping = (function() {
@ -17,7 +19,7 @@ export const MsgTyping = (function() {
if (!user) {
return;
}
if (RocketChat.settings.get('UI_Use_Real_Name')) {
if (settings.get('UI_Use_Real_Name')) {
return user.name;
}
return user.username;
@ -28,7 +30,7 @@ export const MsgTyping = (function() {
return;
}
usersTyping[room] = { users: {} };
return RocketChat.Notifications.onRoom(room, 'typing', function(username, typing) {
return Notifications.onRoom(room, 'typing', function(username, typing) {
const user = Meteor.users.findOne(Meteor.userId(), { fields: { name: 1, username: 1 } });
if (username === shownName(user)) {
return;
@ -57,7 +59,7 @@ export const MsgTyping = (function() {
timeouts[room] = null;
}
const user = Meteor.user();
return RocketChat.Notifications.notifyRoom(room, 'typing', shownName(user), false);
return Notifications.notifyRoom(room, 'typing', shownName(user), false);
};
const start = function(room) {
if (!renew) { return; }
@ -67,7 +69,7 @@ export const MsgTyping = (function() {
renew = false;
selfTyping.set(true);
const user = Meteor.user();
RocketChat.Notifications.notifyRoom(room, 'typing', shownName(user), true);
Notifications.notifyRoom(room, 'typing', shownName(user), true);
clearTimeout(timeouts[room]);
return timeouts[room] = Meteor.setTimeout(() => stop(room), timeout);
};

@ -8,6 +8,10 @@ import { Session } from 'meteor/session';
import _ from 'underscore';
import s from 'underscore.string';
import { e2e } from 'meteor/rocketchat:e2e';
import { Users, ChatSubscription } from 'meteor/rocketchat:models';
import { getUserPreference } from 'meteor/rocketchat:utils';
import { getAvatarUrlFromUsername } from 'meteor/rocketchat:ui-utils';
import { promises } from 'meteor/rocketchat:promises';
import { getAvatarAsPng } from './avatar';
KonchatNotification = {
@ -28,7 +32,7 @@ KonchatNotification = {
notify(notification) {
if (window.Notification && Notification.permission === 'granted') {
const message = { rid: (notification.payload != null ? notification.payload.rid : undefined), msg: notification.text, notification: true };
return RocketChat.promises.run('onClientMessageReceived', message).then(function(message) {
return promises.run('onClientMessageReceived', message).then(function(message) {
const n = new Notification(notification.title, {
icon: notification.icon || getAvatarUrlFromUsername(notification.payload.sender.username),
body: s.stripTags(message.msg),
@ -37,7 +41,7 @@ KonchatNotification = {
canReply: true,
});
const notificationDuration = notification.duration - 0 || RocketChat.getUserPreference(Meteor.userId(), 'desktopNotificationDuration') - 0;
const notificationDuration = notification.duration - 0 || getUserPreference(Meteor.userId(), 'desktopNotificationDuration') - 0;
if (notificationDuration > 0) {
setTimeout((() => n.close()), notificationDuration * 1000);
}
@ -95,8 +99,8 @@ KonchatNotification = {
newMessage(rid) {
if (!Session.equals(`user_${ Meteor.user().username }_status`, 'busy')) {
const userId = Meteor.userId();
const newMessageNotification = RocketChat.getUserPreference(userId, 'newMessageNotification');
const audioVolume = RocketChat.getUserPreference(userId, 'notificationsSoundVolume');
const newMessageNotification = getUserPreference(userId, 'newMessageNotification');
const audioVolume = getUserPreference(userId, 'notificationsSoundVolume');
const sub = ChatSubscription.findOne({ rid }, { fields: { audioNotificationValue: 1 } });
@ -144,14 +148,14 @@ KonchatNotification = {
Meteor.startup(() => {
Tracker.autorun(function() {
const user = RocketChat.models.Users.findOne(Meteor.userId(), {
const user = Users.findOne(Meteor.userId(), {
fields: {
'settings.preferences.newRoomNotification': 1,
'settings.preferences.notificationsSoundVolume': 1,
},
});
const newRoomNotification = RocketChat.getUserPreference(user, 'newRoomNotification');
const audioVolume = RocketChat.getUserPreference(user, 'notificationsSoundVolume');
const newRoomNotification = getUserPreference(user, 'newRoomNotification');
const audioVolume = getUserPreference(user, 'notificationsSoundVolume');
if ((Session.get('newRoomSound') || []).length > 0) {
Meteor.defer(function() {

@ -1,3 +1,5 @@
import { settings } from 'meteor/rocketchat:settings';
(function(window){
var WORKER_PATH = 'mp3-realtime-worker.js';
@ -6,7 +8,7 @@
var config = cfg || {};
var bufferLen = config.bufferLen || 4096;
var numChannels = config.numChannels || 1;
var bitRate = RocketChat.settings.get('Message_Audio_bitRate');
var bitRate = settings.get('Message_Audio_bitRate');
this.context = source.context;
this.node = (this.context.createScriptProcessor ||
this.context.createJavaScriptNode).call(this.context,

@ -1,4 +1,4 @@
RocketChat.Login = (function() {
export const Login = (function() {
function onClick(el) {
const $el = $(el);
if ($el.length) {
@ -29,7 +29,7 @@ RocketChat.Login = (function() {
return { check, onClick, onBlur };
}());
RocketChat.Button = (function() {
export const Button = (function() {
let time = undefined;
const loading = function(el) {
const next = el.attr('data-loading-text');
@ -50,7 +50,7 @@ RocketChat.Button = (function() {
return { done, loading, reset };
}());
RocketChat.animationSupport = function() {
export const animationSupport = function() {
const animeEnd = {
WebkitAnimation: 'webkitAnimationEnd',
OAnimation: 'oAnimationEnd',
@ -65,9 +65,9 @@ RocketChat.animationSupport = function() {
msTransition: 'MSTransitionEnd',
transition: 'transitionend',
};
const prefixB = transEndEventNames[Modernizr.prefixed('transition')];
const prefixA = animeEnd[Modernizr.prefixed('animation')];
const support = Modernizr.cssanimations;
const prefixB = transEndEventNames[window.Modernizr.prefixed('transition')];
const prefixA = animeEnd[window.Modernizr.prefixed('animation')];
const support = window.Modernizr.cssanimations;
return {
support,
animation: prefixA,
@ -75,13 +75,13 @@ RocketChat.animationSupport = function() {
};
};
RocketChat.animeBack = function(e, callback, type) {
export const animeBack = function(e, callback, type) {
const el = $(e);
if (!el.length > 0) {
if (callback) { callback(el); }
return;
}
const s = RocketChat.animationSupport();
const s = animationSupport();
const p = ((type ? s.animation : s.transition));
el.one(p, function(e) {
@ -91,7 +91,7 @@ RocketChat.animeBack = function(e, callback, type) {
};
RocketChat.preLoadImgs = function(urls, callback) {
export const preLoadImgs = function(urls, callback) {
const preLoader = $('<div/>').attr({ id: 'perverter-preloader' });
let ended = undefined;
const l_ = function(x) {

@ -1,5 +1,6 @@
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { Layout } from 'meteor/rocketchat:ui-utils';
Template.burger.helpers({
unread() {
@ -11,6 +12,6 @@ Template.burger.helpers({
}
},
embeddedVersion() {
return RocketChat.Layout.isEmbedded();
return Layout.isEmbedded();
},
});

@ -5,7 +5,10 @@ import { Blaze } from 'meteor/blaze';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Template } from 'meteor/templating';
import { AutoComplete } from 'meteor/mizzao:autocomplete';
import { t } from 'meteor/rocketchat:utils';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
import { t, roomTypes } from 'meteor/rocketchat:utils';
import { hasAllPermission } from 'meteor/rocketchat:authorization';
import _ from 'underscore';
const acEvents = {
@ -34,20 +37,20 @@ const acEvents = {
};
const validateChannelName = (name) => {
if (RocketChat.settings.get('UI_Allow_room_names_with_special_chars')) {
if (settings.get('UI_Allow_room_names_with_special_chars')) {
return true;
}
const reg = new RegExp(`^${ RocketChat.settings.get('UTF8_Names_Validation') }$`);
const reg = new RegExp(`^${ settings.get('UTF8_Names_Validation') }$`);
return name.length === 0 || reg.test(name);
};
const filterNames = (old) => {
if (RocketChat.settings.get('UI_Allow_room_names_with_special_chars')) {
if (settings.get('UI_Allow_room_names_with_special_chars')) {
return old;
}
const reg = new RegExp(`^${ RocketChat.settings.get('UTF8_Names_Validation') }$`);
const reg = new RegExp(`^${ settings.get('UTF8_Names_Validation') }$`);
return [...old.replace(' ', '').toLocaleLowerCase()].filter((f) => reg.test(f)).join('');
};
@ -101,7 +104,7 @@ Template.createChannel.helpers({
return Template.instance().type.get() !== 'p' || Template.instance().broadcast.get();
},
e2eEnabled() {
return RocketChat.settings.get('E2E_Enable');
return settings.get('E2E_Enable');
},
readOnly() {
return Template.instance().readOnly.get();
@ -110,7 +113,7 @@ Template.createChannel.helpers({
return t(Template.instance().readOnly.get() ? t('Only_authorized_users_can_write_new_messages') : t('All_users_in_the_channel_can_write_new_messages'));
},
cantCreateBothTypes() {
return !RocketChat.authz.hasAllPermission(['create-c', 'create-p']);
return !hasAllPermission(['create-c', 'create-p']);
},
roomTypeIsP() {
return Template.instance().type.get() === 'p';
@ -131,7 +134,7 @@ Template.createChannel.helpers({
return Template.instance().type.get() === 'p' ? 'lock' : 'hashtag';
},
tokenAccessEnabled() {
return RocketChat.settings.get('API_Tokenpass_URL') !== '';
return settings.get('API_Tokenpass_URL') !== '';
},
tokenIsDisabled() {
return Template.instance().type.get() !== 'p' ? 'disabled' : null;
@ -148,19 +151,19 @@ Template.createChannel.helpers({
};
},
roomTypesBeforeStandard() {
const orderLow = RocketChat.roomTypes.roomTypesOrder.filter((roomTypeOrder) => roomTypeOrder.identifier === 'c')[0].order;
return RocketChat.roomTypes.roomTypesOrder.filter(
const orderLow = roomTypes.roomTypesOrder.filter((roomTypeOrder) => roomTypeOrder.identifier === 'c')[0].order;
return roomTypes.roomTypesOrder.filter(
(roomTypeOrder) => roomTypeOrder.order < orderLow
).map(
(roomTypeOrder) => RocketChat.roomTypes.roomTypes[roomTypeOrder.identifier]
(roomTypeOrder) => roomTypes.roomTypes[roomTypeOrder.identifier]
).filter((roomType) => roomType.creationTemplate);
},
roomTypesAfterStandard() {
const orderHigh = RocketChat.roomTypes.roomTypesOrder.filter((roomTypeOrder) => roomTypeOrder.identifier === 'd')[0].order;
return RocketChat.roomTypes.roomTypesOrder.filter(
const orderHigh = roomTypes.roomTypesOrder.filter((roomTypeOrder) => roomTypeOrder.identifier === 'd')[0].order;
return roomTypes.roomTypesOrder.filter(
(roomTypeOrder) => roomTypeOrder.order > orderHigh
).map(
(roomTypeOrder) => RocketChat.roomTypes.roomTypes[roomTypeOrder.identifier]
(roomTypeOrder) => roomTypes.roomTypes[roomTypeOrder.identifier]
).filter((roomType) => roomType.creationTemplate);
},
});
@ -247,7 +250,7 @@ Template.createChannel.events({
}
if (!isPrivate) {
RocketChat.callbacks.run('aftercreateCombined', { _id: result.rid, name: result.name });
callbacks.run('aftercreateCombined', { _id: result.rid, name: result.name });
}
return FlowRouter.go(isPrivate ? 'group' : 'channel', { name: result.name }, FlowRouter.current().queryParams);
@ -280,7 +283,7 @@ Template.createChannel.onCreated(function() {
this.extensions_validations = {};
this.extensions_submits = {};
this.name = new ReactiveVar('');
this.type = new ReactiveVar(RocketChat.authz.hasAllPermission(['create-p']) ? 'p' : 'c');
this.type = new ReactiveVar(hasAllPermission(['create-p']) ? 'p' : 'c');
this.readOnly = new ReactiveVar(false);
this.broadcast = new ReactiveVar(false);
this.encrypted = new ReactiveVar(false);
@ -355,7 +358,7 @@ Template.createChannel.onCreated(function() {
Template.tokenpass.onCreated(function() {
this.data.validations.tokenpass = (instance) => {
const result = (RocketChat.settings.get('API_Tokenpass_URL') !== '' && instance.tokensRequired.get() && instance.type.get() === 'p') && this.selectedTokens.get().length === 0;
const result = (settings.get('API_Tokenpass_URL') !== '' && instance.tokensRequired.get() && instance.type.get() === 'p') && this.selectedTokens.get().length === 0;
this.invalid.set(result);
return !result;
};

@ -4,7 +4,9 @@ import { Tracker } from 'meteor/tracker';
import { Template } from 'meteor/templating';
import _ from 'underscore';
import { timeAgo } from './helpers';
import { t } from 'meteor/rocketchat:utils';
import { t, roomTypes } from 'meteor/rocketchat:utils';
import { settings } from 'meteor/rocketchat:settings';
import { hasAtLeastOnePermission } from 'meteor/rocketchat:authorization';
function directorySearch(config, cb) {
return Meteor.call('browseChannels', config, (err, result) => {
@ -38,7 +40,7 @@ Template.directory.helpers({
return Template.instance().searchText.get();
},
showLastMessage() {
return RocketChat.settings.get('Store_Last_Message');
return settings.get('Store_Last_Message');
},
searchResults() {
return Template.instance().results.get();
@ -57,7 +59,7 @@ Template.directory.helpers({
return Template.instance().searchSortBy.get() === key;
},
createChannelOrGroup() {
return RocketChat.authz.hasAtLeastOnePermission(['create-c', 'create-p']);
return hasAtLeastOnePermission(['create-c', 'create-p']);
},
tabsData() {
const {
@ -116,7 +118,7 @@ Template.directory.helpers({
type = 'd';
routeConfig = { name: item.username };
}
RocketChat.roomTypes.openRouteLink(type, routeConfig);
roomTypes.openRouteLink(type, routeConfig);
};
},
isLoading() {
@ -203,7 +205,7 @@ Template.directory.onRendered(function() {
});
Template.directory.onCreated(function() {
const viewType = RocketChat.settings.get('Accounts_Directory_DefaultView') || 'channels';
const viewType = settings.get('Accounts_Directory_DefaultView') || 'channels';
this.searchType = new ReactiveVar(viewType);
if (viewType === 'channels') {
this.searchSortBy = new ReactiveVar('usersCount');

@ -1,10 +1,11 @@
import { Template } from 'meteor/templating';
import { settings } from 'meteor/rocketchat:settings';
Template.home.helpers({
title() {
return RocketChat.settings.get('Layout_Home_Title');
return settings.get('Layout_Home_Title');
},
body() {
return RocketChat.settings.get('Layout_Home_Body');
return settings.get('Layout_Home_Body');
},
});

@ -4,36 +4,52 @@ import { Random } from 'meteor/random';
import { Tracker } from 'meteor/tracker';
import { Blaze } from 'meteor/blaze';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { RocketChatTabBar } from 'meteor/rocketchat:lib';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { t } from 'meteor/rocketchat:utils';
import { t, roomTypes, getUserPreference, handleError } from 'meteor/rocketchat:utils';
import { WebRTC } from 'meteor/rocketchat:webrtc';
import { ChatSubscription, ChatMessage, RoomRoles, Users, Subscriptions, Rooms } from 'meteor/rocketchat:models';
import {
fireGlobalEvent,
RoomHistoryManager,
RoomManager,
readMessage,
popover,
modal,
Layout,
MessageAction,
RocketChatTabBar,
} from 'meteor/rocketchat:ui-utils';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
import { promises } from 'meteor/rocketchat:promises';
import { hasAllPermission, hasRole } from 'meteor/rocketchat:authorization';
import _ from 'underscore';
import moment from 'moment';
import mime from 'mime-type/with-db';
import Clipboard from 'clipboard';
import { lazyloadtick } from 'meteor/rocketchat:lazy-load';
import { ChatMessages } from '../../lib/chatMessages';
import { fileUpload } from '../../lib/fileUpload';
chatMessages = {};
const isSubscribed = (_id) => ChatSubscription.find({ rid: _id }).count() > 0;
const favoritesEnabled = () => RocketChat.settings.get('Favorite_Rooms');
const favoritesEnabled = () => settings.get('Favorite_Rooms');
const userCanDrop = (_id) => !RocketChat.roomTypes.readOnly(_id, Meteor.user());
const userCanDrop = (_id) => !roomTypes.readOnly(_id, Meteor.user());
const openProfileTab = (e, instance, username) => {
const roomData = Session.get(`roomData${ Session.get('openedRoom') }`);
if (RocketChat.Layout.isEmbedded()) {
if (Layout.isEmbedded()) {
fireGlobalEvent('click-user-card-message', { username });
e.preventDefault();
e.stopPropagation();
return;
}
if (RocketChat.roomTypes.roomTypes[roomData.t].enableMembersListProfile()) {
if (roomTypes.roomTypes[roomData.t].enableMembersListProfile()) {
instance.setUserDetail(username);
}
@ -42,7 +58,7 @@ const openProfileTab = (e, instance, username) => {
};
const openProfileTabOrOpenDM = (e, instance, username) => {
if (RocketChat.settings.get('UI_Click_Direct_Message')) {
if (settings.get('UI_Click_Direct_Message')) {
Meteor.call('createDirectMessage', username, (error, result) => {
if (error) {
if (error.isClientSafe) {
@ -70,7 +86,7 @@ const mountPopover = (e, i, outerContext) => {
const [, message] = outerContext._arguments;
let menuItems = RocketChat.MessageAction.getButtons(message, context, 'menu').map((item) => ({
let menuItems = MessageAction.getButtons(message, context, 'menu').map((item) => ({
icon: item.icon,
name: t(item.label),
type: 'message-action',
@ -79,7 +95,7 @@ const mountPopover = (e, i, outerContext) => {
}));
if (window.matchMedia('(max-width: 500px)').matches) {
const messageItems = RocketChat.MessageAction.getButtons(message, context, 'message').map((item) => ({
const messageItems = MessageAction.getButtons(message, context, 'message').map((item) => ({
icon: item.icon,
name: t(item.label),
type: 'message-action',
@ -136,23 +152,23 @@ const wipeFailedUploads = () => {
};
function roomHasGlobalPurge(room) {
if (!RocketChat.settings.get('RetentionPolicy_Enabled')) {
if (!settings.get('RetentionPolicy_Enabled')) {
return false;
}
switch (room.t) {
case 'c':
return RocketChat.settings.get('RetentionPolicy_AppliesToChannels');
return settings.get('RetentionPolicy_AppliesToChannels');
case 'p':
return RocketChat.settings.get('RetentionPolicy_AppliesToGroups');
return settings.get('RetentionPolicy_AppliesToGroups');
case 'd':
return RocketChat.settings.get('RetentionPolicy_AppliesToDMs');
return settings.get('RetentionPolicy_AppliesToDMs');
}
return false;
}
function roomHasPurge(room) {
if (!room || !RocketChat.settings.get('RetentionPolicy_Enabled')) {
if (!room || !settings.get('RetentionPolicy_Enabled')) {
return false;
}
@ -172,7 +188,7 @@ function roomFilesOnly(room) {
return room.retention.filesOnly;
}
return RocketChat.settings.get('RetentionPolicy_FilesOnly');
return settings.get('RetentionPolicy_FilesOnly');
}
function roomExcludePinned(room) {
@ -184,7 +200,7 @@ function roomExcludePinned(room) {
return room.retention.excludePinned;
}
return RocketChat.settings.get('RetentionPolicy_ExcludePinned');
return settings.get('RetentionPolicy_ExcludePinned');
}
function roomMaxAge(room) {
@ -200,26 +216,26 @@ function roomMaxAge(room) {
}
if (room.t === 'c') {
return RocketChat.settings.get('RetentionPolicy_MaxAge_Channels');
return settings.get('RetentionPolicy_MaxAge_Channels');
}
if (room.t === 'p') {
return RocketChat.settings.get('RetentionPolicy_MaxAge_Groups');
return settings.get('RetentionPolicy_MaxAge_Groups');
}
if (room.t === 'd') {
return RocketChat.settings.get('RetentionPolicy_MaxAge_DMs');
return settings.get('RetentionPolicy_MaxAge_DMs');
}
}
RocketChat.callbacks.add('enter-room', wipeFailedUploads);
callbacks.add('enter-room', wipeFailedUploads);
Template.room.helpers({
isTranslated() {
const sub = ChatSubscription.findOne({ rid: this._id }, { fields: { autoTranslate: 1, autoTranslateLanguage: 1 } });
RocketChat.settings.get('AutoTranslate_Enabled') && ((sub != null ? sub.autoTranslate : undefined) === true) && (sub.autoTranslateLanguage != null);
settings.get('AutoTranslate_Enabled') && ((sub != null ? sub.autoTranslate : undefined) === true) && (sub.autoTranslateLanguage != null);
},
embeddedVersion() {
return RocketChat.Layout.isEmbedded();
return Layout.isEmbedded();
},
subscribed() {
@ -228,7 +244,7 @@ Template.room.helpers({
messagesHistory() {
const hideMessagesOfType = [];
RocketChat.settings.collection.find({ _id: /Message_HideType_.+/ }).forEach(function(record) {
settings.collection.find({ _id: /Message_HideType_.+/ }).forEach(function(record) {
let types;
const type = record._id.replace('Message_HideType_', '');
switch (type) {
@ -289,10 +305,10 @@ Template.room.helpers({
roomLeader() {
const roles = RoomRoles.findOne({ rid: this._id, roles: 'leader', 'u._id': { $ne: Meteor.userId() } });
if (roles) {
const leader = RocketChat.models.Users.findOne({ _id: roles.u._id }, { fields: { status: 1 } }) || {};
const leader = Users.findOne({ _id: roles.u._id }, { fields: { status: 1 } }) || {};
return {
...roles.u,
name: RocketChat.settings.get('UI_Use_Real_Name') ? (roles.u.name || roles.u.username) : roles.u.username,
name: settings.get('UI_Use_Real_Name') ? (roles.u.name || roles.u.username) : roles.u.username,
status: leader.status || 'offline',
statusDisplay: ((status) => status.charAt(0).toUpperCase() + status.slice(1))(leader.status || 'offline'),
};
@ -300,7 +316,7 @@ Template.room.helpers({
},
chatNowLink() {
return RocketChat.roomTypes.getRouteLink('d', { name: this.username });
return roomTypes.getRouteLink('d', { name: this.username });
},
showAnnouncement() {
@ -337,7 +353,7 @@ Template.room.helpers({
const roomData = Session.get(`roomData${ this._id }`);
if (!(roomData != null ? roomData.t : undefined)) { return ''; }
const roomIcon = RocketChat.roomTypes.getIcon(roomData != null ? roomData.t : undefined);
const roomIcon = roomTypes.getIcon(roomData != null ? roomData.t : undefined);
// Remove this 'codegueira' on header redesign
if (!roomIcon) {
@ -353,11 +369,11 @@ Template.room.helpers({
userStatus() {
const roomData = Session.get(`roomData${ this._id }`);
return RocketChat.roomTypes.getUserStatus(roomData.t, this._id) || 'offline';
return roomTypes.getUserStatus(roomData.t, this._id) || 'offline';
},
maxMessageLength() {
return RocketChat.settings.get('Message_MaxAllowedSize');
return settings.get('Message_MaxAllowedSize');
},
unreadData() {
@ -401,7 +417,7 @@ Template.room.helpers({
},
adminClass() {
if (RocketChat.authz.hasRole(Meteor.userId(), 'admin')) { return 'admin'; }
if (hasRole(Meteor.userId(), 'admin')) { return 'admin'; }
},
showToggleFavorite() {
@ -409,7 +425,7 @@ Template.room.helpers({
},
messageViewMode() {
const viewMode = RocketChat.getUserPreference(Meteor.userId(), 'messageViewMode');
const viewMode = getUserPreference(Meteor.userId(), 'messageViewMode');
const modes = ['', 'cozy', 'compact'];
return modes[viewMode] || modes[0];
},
@ -419,11 +435,11 @@ Template.room.helpers({
},
hideUsername() {
return RocketChat.getUserPreference(Meteor.userId(), 'hideUsernames') ? 'hide-usernames' : undefined;
return getUserPreference(Meteor.userId(), 'hideUsernames') ? 'hide-usernames' : undefined;
},
hideAvatar() {
return RocketChat.getUserPreference(Meteor.userId(), 'hideAvatars') ? 'hide-avatars' : undefined;
return getUserPreference(Meteor.userId(), 'hideAvatars') ? 'hide-avatars' : undefined;
},
userCanDrop() {
@ -445,15 +461,15 @@ Template.room.helpers({
return true;
}
if (RocketChat.settings.get('Accounts_AllowAnonymousRead') === true) {
if (settings.get('Accounts_AllowAnonymousRead') === true) {
return true;
}
if (RocketChat.authz.hasAllPermission('preview-c-room')) {
if (hasAllPermission('preview-c-room')) {
return true;
}
return (RocketChat.models.Subscriptions.findOne({ rid: this._id }) != null);
return (Subscriptions.findOne({ rid: this._id }) != null);
},
hideLeaderHeader() {
@ -494,14 +510,14 @@ let lastScrollTop;
Template.room.events({
'click .js-reply-broadcast'() {
const message = this._arguments[1];
RocketChat.roomTypes.openRouteLink('d', { name: this._arguments[1].u.username }, { ...FlowRouter.current().queryParams, reply: message._id });
roomTypes.openRouteLink('d', { name: this._arguments[1].u.username }, { ...FlowRouter.current().queryParams, reply: message._id });
},
'click, touchend'(e, t) {
Meteor.setTimeout(() => t.sendToBottomIfNecessaryDebounced(), 100);
},
'click .messages-container-main'() {
if (Template.instance().tabBar.getState() === 'opened' && RocketChat.getUserPreference(Meteor.userId(), 'hideFlexTab')) {
if (Template.instance().tabBar.getState() === 'opened' && getUserPreference(Meteor.userId(), 'hideFlexTab')) {
Template.instance().tabBar.close();
}
},
@ -681,7 +697,7 @@ Template.room.events({
}
const [, message] = this._arguments;
const allItems = RocketChat.MessageAction.getButtons(message, context, 'menu').map((item) => ({
const allItems = MessageAction.getButtons(message, context, 'menu').map((item) => ({
icon: item.icon,
name: t(item.label),
type: 'message-action',
@ -721,7 +737,7 @@ Template.room.events({
}
const channel = $(e.currentTarget).data('channel');
if (channel != null) {
if (RocketChat.Layout.isEmbedded()) {
if (Layout.isEmbedded()) {
fireGlobalEvent('click-mention-link', { path: FlowRouter.path('channel', { name: channel }), channel });
}
@ -831,7 +847,7 @@ Template.room.events({
const roomData = Session.get(`roomData${ this._id }`);
if (!roomData) { return false; }
if (roomData.announcementDetails != null && roomData.announcementDetails.callback != null) {
return RocketChat.callbacks.run(roomData.announcementDetails.callback, this._id);
return callbacks.run(roomData.announcementDetails.callback, this._id);
} else {
modal.open({
title: t('Announcement'),
@ -853,9 +869,9 @@ Template.room.events({
if (!msg) {
return;
}
RocketChat.promises.run('onClientBeforeSendMessage', msgObject).then((msgObject) => {
const chatMessages = window.chatMessages[rid];
if (chatMessages && chatMessages.processSlashCommand(msgObject)) {
promises.run('onClientBeforeSendMessage', msgObject).then((msgObject) => {
const _chatMessages = chatMessages[rid];
if (_chatMessages && _chatMessages.processSlashCommand(msgObject)) {
return;
}
@ -941,7 +957,7 @@ Template.room.onCreated(function() {
this.hasTokenpass = new ReactiveVar(false);
if (RocketChat.settings.get('API_Tokenpass_URL') !== '') {
if (settings.get('API_Tokenpass_URL') !== '') {
Meteor.call('getChannelTokenpass', this.data._id, (error, result) => {
if (!error) {
this.hasTokenpass.set(!!(result && result.tokens && result.tokens.length > 0));
@ -990,10 +1006,10 @@ Template.room.onDestroyed(function() {
Template.room.onRendered(function() {
// $(this.find('.messages-box .wrapper')).perfectScrollbar();
const rid = Session.get('openedRoom');
if (!window.chatMessages[rid]) {
window.chatMessages[rid] = new ChatMessages;
if (!chatMessages[rid]) {
chatMessages[rid] = new ChatMessages;
}
window.chatMessages[rid].init(this.firstNode);
chatMessages[rid].init(this.firstNode);
// ScrollListener.init()
const wrapper = this.find('.wrapper');
@ -1137,7 +1153,7 @@ Template.room.onRendered(function() {
}
});
}
RocketChat.callbacks.add('streamMessage', (msg) => {
callbacks.add('streamMessage', (msg) => {
if (rid !== msg.rid || msg.editedAt) {
return;
}
@ -1146,7 +1162,7 @@ Template.room.onRendered(function() {
}
});
Tracker.autorun(function() {
const room = RocketChat.models.Rooms.findOne({ _id: template.data._id });
const room = Rooms.findOne({ _id: template.data._id });
if (!room) {
FlowRouter.go('home');
}

@ -1,4 +1,5 @@
import { Template } from 'meteor/templating';
import { roomTypes } from 'meteor/rocketchat:utils';
Template.roomSearch.helpers({
roomIcon() {
@ -6,7 +7,7 @@ Template.roomSearch.helpers({
return 'icon-at';
}
if (this.type === 'r') {
return RocketChat.roomTypes.getIcon(this.t);
return roomTypes.getIcon(this.t);
}
},
userStatus() {

@ -3,11 +3,12 @@ import { ReactiveVar } from 'meteor/reactive-var';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { settings } from 'meteor/rocketchat:settings';
Template.secretURL.helpers({
registrationAllowed() {
const { hashIsValid } = Template.instance();
return RocketChat.settings.get('Accounts_RegistrationForm') === 'Secret URL' && hashIsValid && hashIsValid.get();
return settings.get('Accounts_RegistrationForm') === 'Secret URL' && hashIsValid && hashIsValid.get();
},
ready() {
const instance = Template.instance();

@ -3,13 +3,14 @@ import { FlowRouter } from 'meteor/kadira:flow-router';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { Tracker } from 'meteor/tracker';
import { settings } from 'meteor/rocketchat:settings';
Template.cmsPage.onCreated(function() {
this.page = new ReactiveVar('');
return Tracker.autorun(() => {
const cmsPage = Session.get('cmsPage');
if (cmsPage != null) {
return this.page.set(RocketChat.settings.get(cmsPage));
return this.page.set(settings.get(cmsPage));
}
});
});

@ -20,7 +20,6 @@ Package.onUse(function(api) {
'reactive-var',
'ecmascript',
'templating',
'rocketchat:lib',
'rocketchat:ui-master',
'rocketchat:push',
'rocketchat:utils',
@ -52,7 +51,6 @@ Package.onUse(function(api) {
api.addFiles('client/lib/fireEvent.js', 'client');
api.addFiles('client/lib/iframeCommands.js', 'client');
api.addFiles('client/lib/menu.js', 'client');
api.addFiles('client/lib/modal.js', 'client');
api.addFiles('client/lib/Modernizr.js', 'client');
api.addFiles('client/lib/msgTyping.js', 'client');
api.addFiles('client/lib/notification.js', 'client');
@ -147,6 +145,8 @@ Package.onUse(function(api) {
api.addFiles('client/components/contextualBar.html', 'client');
api.addFiles('client/components/contextualBar.js', 'client');
api.mainModule('client/index.js', 'client');
api.export('fileUpload');
api.export('modal', 'client');
api.export('popover', 'client');

Loading…
Cancel
Save