Chore: Move `callbacks` to /lib (#23456)

pull/24110/head^2
Tasso Evangelista 4 years ago committed by GitHub
parent bf6878e6c3
commit 4b408c2dde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/2fa/server/loginHandler.js
  2. 2
      app/analytics/client/trackEvents.js
  3. 2
      app/authentication/server/hooks/login.ts
  4. 2
      app/authentication/server/startup/index.js
  5. 2
      app/autotranslate/server/autotranslate.js
  6. 3
      app/callbacks/client/index.js
  7. 8
      app/callbacks/index.js
  8. 161
      app/callbacks/lib/callbacks.js
  9. 3
      app/callbacks/server/index.js
  10. 2
      app/channel-settings/server/functions/saveRoomName.js
  11. 2
      app/channel-settings/server/methods/saveRoomSettings.js
  12. 2
      app/cloud/server/functions/getWorkspaceLicense.js
  13. 2
      app/cloud/server/functions/saveRegistrationData.js
  14. 2
      app/custom-oauth/server/custom_oauth_server.js
  15. 2
      app/discussion/server/hooks/joinDiscussionOnMessage.js
  16. 2
      app/discussion/server/hooks/propagateDiscussionMetadata.js
  17. 4
      app/discussion/server/methods/createDiscussion.js
  18. 2
      app/dolphin/lib/common.js
  19. 2
      app/e2e/server/beforeCreateRoom.js
  20. 2
      app/e2e/server/index.js
  21. 2
      app/emoji-emojione/server/callbacks.js
  22. 2
      app/federation/server/lib/callbacks.js
  23. 2
      app/file-upload/server/methods/sendFileMessage.ts
  24. 2
      app/integrations/server/triggers.js
  25. 2
      app/irc/server/irc-bridge/index.js
  26. 2
      app/lib/client/methods/sendMessage.js
  27. 2
      app/lib/lib/MessageTypes.js
  28. 2
      app/lib/server/functions/addUserToDefaultChannels.js
  29. 2
      app/lib/server/functions/addUserToRoom.js
  30. 2
      app/lib/server/functions/archiveRoom.js
  31. 2
      app/lib/server/functions/createDirectRoom.js
  32. 2
      app/lib/server/functions/createRoom.js
  33. 2
      app/lib/server/functions/deleteMessage.ts
  34. 2
      app/lib/server/functions/deleteRoom.js
  35. 2
      app/lib/server/functions/notifications/email.js
  36. 2
      app/lib/server/functions/notifications/index.js
  37. 2
      app/lib/server/functions/removeUserFromRoom.js
  38. 2
      app/lib/server/functions/saveUser.js
  39. 4
      app/lib/server/functions/sendMessage.js
  40. 2
      app/lib/server/functions/setUserActiveStatus.js
  41. 2
      app/lib/server/functions/updateMessage.js
  42. 2
      app/lib/server/lib/notifyUsersOnMessage.js
  43. 2
      app/lib/server/lib/sendNotificationsOnMessage.js
  44. 2
      app/lib/server/methods/filterATAllTag.js
  45. 2
      app/lib/server/methods/filterATHereTag.js
  46. 4
      app/lib/server/methods/filterBadWords.ts
  47. 2
      app/lib/server/methods/setUsername.js
  48. 2
      app/livechat/server/api/lib/departments.ts
  49. 2
      app/livechat/server/api/lib/livechat.js
  50. 2
      app/livechat/server/business-hour/BusinessHourManager.ts
  51. 2
      app/livechat/server/business-hour/index.ts
  52. 2
      app/livechat/server/hooks/RDStation.js
  53. 2
      app/livechat/server/hooks/beforeCloseRoom.js
  54. 2
      app/livechat/server/hooks/beforeDelegateAgent.js
  55. 2
      app/livechat/server/hooks/leadCapture.js
  56. 2
      app/livechat/server/hooks/markRoomNotResponded.js
  57. 2
      app/livechat/server/hooks/markRoomResponded.js
  58. 2
      app/livechat/server/hooks/offlineMessage.js
  59. 2
      app/livechat/server/hooks/offlineMessageToChannel.js
  60. 2
      app/livechat/server/hooks/processRoomAbandonment.js
  61. 2
      app/livechat/server/hooks/saveAnalyticsData.js
  62. 2
      app/livechat/server/hooks/saveContactLastChat.js
  63. 2
      app/livechat/server/hooks/saveLastVisitorMessageTs.js
  64. 2
      app/livechat/server/hooks/sendToCRM.js
  65. 2
      app/livechat/server/hooks/sendToFacebook.js
  66. 2
      app/livechat/server/hooks/sendTranscriptOnClose.js
  67. 4
      app/livechat/server/lib/Helper.js
  68. 2
      app/livechat/server/lib/Livechat.js
  69. 2
      app/livechat/server/lib/QueueManager.js
  70. 2
      app/livechat/server/lib/RoutingManager.js
  71. 2
      app/livechat/server/lib/routing/AutoSelection.js
  72. 2
      app/livechat/server/methods/getDepartmentForwardRestrictions.js
  73. 2
      app/livechat/server/methods/getTagsList.js
  74. 2
      app/livechat/server/methods/saveInfo.js
  75. 2
      app/livechat/server/sendMessageBySMS.js
  76. 2
      app/livechat/server/startup.js
  77. 2
      app/livechat/server/statistics/LivechatAgentActivityMonitor.js
  78. 2
      app/livestream/client/views/liveStreamTab.js
  79. 2
      app/markdown/server/index.js
  80. 2
      app/mentions/server/server.js
  81. 2
      app/message-pin/server/pinMessage.js
  82. 2
      app/message-snippet/server/methods/snippetMessage.js
  83. 33
      app/metrics/server/callbacksMetrics.js
  84. 1
      app/metrics/server/index.js
  85. 2
      app/nextcloud/server/addWebdavServer.js
  86. 2
      app/oembed/server/jumpToMessage.js
  87. 2
      app/oembed/server/providers.js
  88. 2
      app/oembed/server/server.js
  89. 2
      app/push-notifications/server/lib/PushNotification.js
  90. 2
      app/reactions/client/methods/setReaction.js
  91. 2
      app/reactions/server/setReaction.js
  92. 2
      app/search/server/events/events.js
  93. 2
      app/slackbridge/server/RocketAdapter.js
  94. 2
      app/slashcommands-topic/lib/topic.js
  95. 2
      app/spotify/server/index.js
  96. 2
      app/threads/client/flextab/thread.js
  97. 2
      app/threads/server/hooks/aftersavemessage.js
  98. 2
      app/tokenpass/server/startup.js
  99. 2
      app/ui-cached-collection/client/models/CachedCollection.js
  100. 2
      app/ui-login/client/login/form.js
  101. Some files were not shown because too many files have changed in this diff Show More

@ -3,7 +3,7 @@ import { Accounts } from 'meteor/accounts-base';
import { OAuth } from 'meteor/oauth';
import { check } from 'meteor/check';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { checkCodeForUser } from './code/index';
Accounts.registerLoginHandler('totp', function (options) {

@ -3,7 +3,7 @@ import { FlowRouter } from 'meteor/kadira:flow-router';
import { Tracker } from 'meteor/tracker';
import { settings } from '../../settings';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { ChatRoom } from '../../models';
function trackEvent(category, action, label) {

@ -3,7 +3,7 @@ import { Accounts } from 'meteor/accounts-base';
import { ILoginAttempt } from '../ILoginAttempt';
import { saveFailedLoginAttempts, saveSuccessfulLogin } from '../lib/restrictLoginAttempts';
import { logFailedLoginAttempts } from '../lib/logLoginAttempts';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings/server';
Accounts.onLoginFailure((login: ILoginAttempt) => {

@ -7,7 +7,7 @@ import { escapeRegExp, escapeHTML } from '@rocket.chat/string-helpers';
import * as Mailer from '../../../mailer/server/api';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Users, Settings } from '../../../models/server';
import { Roles, Users as UsersRaw } from '../../../models/server/raw';
import { addUserRoles } from '../../../authorization/server';

@ -3,7 +3,7 @@ import _ from 'underscore';
import { escapeHTML } from '@rocket.chat/string-helpers';
import { settings } from '../../settings/server';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { Subscriptions, Messages } from '../../models';
import { Markdown } from '../../markdown/server';
import { Logger } from '../../logger';

@ -1,3 +0,0 @@
import { callbacks } from '../lib/callbacks';
export { callbacks };

@ -1,8 +0,0 @@
import { Meteor } from 'meteor/meteor';
if (Meteor.isClient) {
module.exports = require('./client/index.js');
}
if (Meteor.isServer) {
module.exports = require('./server/index.js');
}

@ -1,161 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Random } from 'meteor/random';
import _ from 'underscore';
let timed = false;
let logger = {
debug() {},
log() {},
info() {},
error() {},
};
if (Meteor.isClient) {
const { getConfig } = require('../../../client/lib/utils/getConfig');
timed = [getConfig('debug'), getConfig('timed-callbacks')].includes('true');
}
if (Meteor.isServer) {
const { Logger } = require('../../../server/lib/logger/Logger');
logger = new Logger('Callbacks');
}
/*
* Callback hooks provide an easy way to add extra steps to common operations.
* @namespace RocketChat.callbacks
*/
export const callbacks = {};
const wrapCallback =
(callback) =>
(...args) => {
const time = Date.now();
const result = callback(...args);
const currentTime = Date.now() - time;
let stack = callback.stack && typeof callback.stack.split === 'function' && callback.stack.split('\n');
stack = stack && stack[2] && (stack[2].match(/\(.+\)/) || [])[0];
console.log(String(currentTime), callback.hook, callback.id, stack);
return result;
};
const wrapRun =
(hook, fn) =>
(...args) => {
const time = Date.now();
const ret = fn(...args);
const totalTime = Date.now() - time;
console.log(`${hook}:`, totalTime);
return ret;
};
const handleResult = (fn) => (result, constant) => {
logger.debug(`Executing callback with id ${fn.id} for hook ${fn.hook}`);
const callbackResult = callbacks.runItem({ hook: fn.hook, callback: fn, result, constant });
return typeof callbackResult === 'undefined' ? result : callbackResult;
};
const identity = (e) => e;
const pipe =
(f, g) =>
(e, ...constants) =>
g(f(e, ...constants), ...constants);
const createCallback = (hook, callbacks) => callbacks.map(handleResult).reduce(pipe, identity);
const createCallbackTimed = (hook, callbacks) => wrapRun(hook, callbacks.map(wrapCallback).map(handleResult).reduce(pipe, identity));
const create = (hook, cbs) => (timed ? createCallbackTimed(hook, cbs) : createCallback(hook, cbs));
const combinedCallbacks = new Map();
/*
* Callback priorities
* @enum {CallbackPriority}
*/
callbacks.priority = {
HIGH: -1000,
MEDIUM: 0,
LOW: 1000,
};
const getHooks = (hookName) => callbacks[hookName] || [];
/*
* Add a callback function to a hook
* @param {String} hook - The name of the hook
* @param {Function} callback - The callback function
* @param {CallbackPriority} priority - The callback run priority (order)
* @param {String} id - Human friendly name for this callback
*/
callbacks.add = function (hook, callback, priority = callbacks.priority.MEDIUM, id = Random.id()) {
callbacks[hook] = getHooks(hook);
if (callbacks[hook].find((cb) => cb.id === id)) {
return;
}
callback.hook = hook;
callback.priority = priority;
callback.id = id;
callback.stack = new Error().stack;
callbacks[hook].push(callback);
callbacks[hook] = _.sortBy(callbacks[hook], (callback) => callback.priority || callbacks.priority.MEDIUM);
combinedCallbacks.set(hook, create(hook, callbacks[hook]));
};
/*
* Remove a callback from a hook
* @param {string} hook - The name of the hook
* @param {string} id - The callback's id
*/
callbacks.remove = function (hook, id) {
callbacks[hook] = getHooks(hook).filter((callback) => callback.id !== id);
combinedCallbacks.set(hook, create(hook, callbacks[hook]));
};
callbacks.runItem = ({ callback, result, constant /* , hook */ }) => callback(result, constant);
/*
* Successively run all of a hook's callbacks on an item
* @param {String} hook - The name of the hook
* @param {Object} item - The post, comment, modifier, etc. on which to run the callbacks
* @param {Object} [constant] - An optional constant that will be passed along to each callback
* @returns {Object} Returns the item after it's been through all the callbacks for this hook
*/
callbacks.run = function (hook, item, constant) {
const runner = combinedCallbacks.get(hook);
if (!runner) {
return item;
}
return runner(item, constant);
// return callbackItems.reduce(function(result, callback) {
// const callbackResult = callbacks.runItem({ hook, callback, result, constant });
// return typeof callbackResult === 'undefined' ? result : callbackResult;
// }, item);
};
/*
* Successively run all of a hook's callbacks on an item, in async mode (only works on server)
* @param {String} hook - The name of the hook
* @param {Object} item - The post, comment, modifier, etc. on which to run the callbacks
* @param {Object} [constant] - An optional constant that will be passed along to each callback
*/
callbacks.runAsync = Meteor.isServer
? function (hook, item, constant) {
const callbackItems = callbacks[hook];
if (callbackItems && callbackItems.length) {
callbackItems.forEach((callback) =>
Meteor.defer(function () {
callback(item, constant);
}),
);
}
return item;
}
: () => {
throw new Error('callbacks.runAsync on client server not allowed');
};

@ -1,3 +0,0 @@
import { callbacks } from '../lib/callbacks';
export { callbacks };

@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor';
import { Rooms, Messages, Subscriptions } from '../../../models/server';
import { Integrations } from '../../../models/server/raw';
import { roomTypes, getValidRoomName } from '../../../utils/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { checkUsernameAvailability } from '../../../lib/server/functions';
const updateRoomName = (rid, displayName, isDiscussion) => {

@ -4,7 +4,7 @@ import { Match, check } from 'meteor/check';
import { setRoomAvatar } from '../../../lib/server/functions/setRoomAvatar';
import { hasPermission } from '../../../authorization';
import { Rooms } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { saveRoomName } from '../functions/saveRoomName';
import { saveRoomTopic } from '../functions/saveRoomTopic';
import { saveRoomAnnouncement } from '../functions/saveRoomAnnouncement';

@ -3,7 +3,7 @@ import { HTTP } from 'meteor/http';
import { getWorkspaceAccessToken } from './getWorkspaceAccessToken';
import { settings } from '../../../settings';
import { Settings } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LICENSE_VERSION } from '../license';
import { SystemLogger } from '../../../../server/lib/logger/system';

@ -1,5 +1,5 @@
import { Settings } from '../../../models/server/raw';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
export function saveRegistrationData({
workspaceId,

@ -11,7 +11,7 @@ import { Logger } from '../../logger';
import { Users } from '../../models';
import { isURL } from '../../utils/lib/isURL';
import { registerAccessTokenService } from '../../lib/server/oauth/oauth';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
const logger = new Logger('CustomOAuth');

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Subscriptions } from '../../../models/server';
callbacks.add(

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Messages, Rooms } from '../../../models/server';
import { deleteRoom } from '../../../lib/server';

@ -8,7 +8,7 @@ import { Messages, Rooms } from '../../../models/server';
import { createRoom, addUserToRoom, sendMessage, attachMessage } from '../../../lib/server';
import { settings } from '../../../settings/server';
import { roomTypes } from '../../../utils/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
const getParentRoom = (rid) => {
const room = Rooms.findOne(rid);
@ -146,7 +146,7 @@ const create = ({ prid, pmid, t_name, reply, users, user, encrypted }) => {
discussionMsg = createDiscussionMessage(prid, user, discussion._id, t_name);
}
callbacks.runAsync('afterSaveMessage', discussionMsg, p_room, user._id);
callbacks.runAsync('afterSaveMessage', discussionMsg, p_room);
if (reply) {
sendMessage(user, { msg: reply }, discussion);

@ -4,7 +4,7 @@ import { ServiceConfiguration } from 'meteor/service-configuration';
import { settings } from '../../settings';
import { CustomOAuth } from '../../custom-oauth';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
const config = {
serverURL: '',

@ -1,4 +1,4 @@
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings/server';
callbacks.add('beforeCreateRoom', ({ type, extraData }) => {

@ -1,4 +1,4 @@
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { Notifications } from '../../notifications';
import './settings';

@ -1,7 +1,7 @@
import { Meteor } from 'meteor/meteor';
import emojione from 'emojione';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
Meteor.startup(function () {
callbacks.add(

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings/server';
const callbackDefinitions = [];

@ -4,7 +4,7 @@ import { Match, check } from 'meteor/check';
import _ from 'underscore';
import { Rooms, Uploads } from '../../../models/server/raw';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { FileUpload } from '../lib/FileUpload';
import { canAccessRoom } from '../../../authorization/server/functions/canAccessRoom';
import { MessageAttachment } from '../../../../definition/IMessage/MessageAttachment/MessageAttachment';

@ -1,4 +1,4 @@
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { triggerHandler } from './lib/triggerHandler';
const callbackHandler = function _callbackHandler(eventType) {

@ -5,7 +5,7 @@ import _ from 'underscore';
import * as peerCommandHandlers from './peerHandlers';
import * as localCommandHandlers from './localHandlers';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import * as servers from '../servers';
import { Settings } from '../../../models/server';
import { Logger } from '../../../logger/server';

@ -4,7 +4,7 @@ import s from 'underscore.string';
import { ChatMessage } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { t } from '../../../utils/client';
import { dispatchToastMessage } from '../../../../client/lib/toast';
import { onClientMessageReceived } from '../../../../client/lib/onClientMessageReceived';

@ -1,7 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { MessageTypes } from '../../ui-utils';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
Meteor.startup(function () {
MessageTypes.registerType({

@ -1,5 +1,5 @@
import { Rooms, Subscriptions, Messages } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
export const addUserToDefaultChannels = function (user, silenced) {
callbacks.run('beforeJoinDefaultChannels', user);

@ -2,7 +2,7 @@ import { AppsEngineException } from '@rocket.chat/apps-engine/definition/excepti
import { Meteor } from 'meteor/meteor';
import { AppEvents, Apps } from '../../../apps/server';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Messages, Rooms, Subscriptions } from '../../../models';
import { Team } from '../../../../server/sdk';
import { RoomMemberActions, roomTypes } from '../../../utils/server';

@ -1,7 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Rooms, Subscriptions } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
export const archiveRoom = function (rid) {
Rooms.archiveById(rid);

@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor';
import { Random } from 'meteor/random';
import { Apps } from '../../../apps/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Rooms } from '../../../models/server';
import { settings } from '../../../settings/server';
import { getDefaultSubscriptionPref } from '../../../utils/server';

@ -5,7 +5,7 @@ import s from 'underscore.string';
import { Apps } from '../../../apps/server';
import { addUserRoles } from '../../../authorization';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Rooms, Subscriptions, Users } from '../../../models';
import { getValidRoomName } from '../../../utils';
import { createDirectRoom } from './createDirectRoom';

@ -5,7 +5,7 @@ import { settings } from '../../../settings/server';
import { Messages, Rooms } from '../../../models/server';
import { Uploads } from '../../../models/server/raw';
import { Notifications } from '../../../notifications/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Apps } from '../../../apps/server';
import { IMessage } from '../../../../definition/IMessage';
import { IUser } from '../../../../definition/IUser';

@ -1,5 +1,5 @@
import { Messages, Subscriptions, Rooms } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { FileUpload } from '../../../file-upload/server';
export const deleteRoom = function (rid) {

@ -7,7 +7,7 @@ import * as Mailer from '../../../../mailer';
import { settings } from '../../../../settings/server';
import { roomTypes } from '../../../../utils';
import { metrics } from '../../../../metrics';
import { callbacks } from '../../../../callbacks';
import { callbacks } from '../../../../../lib/callbacks';
import { getURL } from '../../../../utils/server';
let advice = '';

@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { escapeRegExp } from '@rocket.chat/string-helpers';
import { callbacks } from '../../../../callbacks';
import { callbacks } from '../../../../../lib/callbacks';
import { settings } from '../../../../settings';
/**

@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor';
import { Rooms, Messages, Subscriptions } from '../../../models';
import { AppEvents, Apps } from '../../../apps/server';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Team } from '../../../../server/sdk';
export const removeUserFromRoom = function (rid, user, options = {}) {

@ -13,7 +13,7 @@ import { getNewUserRoles } from '../../../../server/services/user/lib/getNewUser
import { saveUserIdentity } from './saveUserIdentity';
import { checkEmailAvailability, checkUsernameAvailability, setUserAvatar, setEmail, setStatusText } from '.';
import { Users } from '../../../models/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
let html = '';
let passwordChangedHtml = '';

@ -2,7 +2,7 @@ import { Match, check } from 'meteor/check';
import { parser } from '@rocket.chat/message-parser';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Messages } from '../../../models';
import { Apps } from '../../../apps/server';
import { isURL, isRelativeURL } from '../../../utils/lib/isURL';
@ -269,7 +269,7 @@ export const sendMessage = function (user, message, room, upsert = false) {
Defer other updates as their return is not interesting to the user
*/
// Execute all callbacks
callbacks.runAsync('afterSaveMessage', message, room, user._id);
callbacks.runAsync('afterSaveMessage', message, room);
return message;
}
};

@ -5,7 +5,7 @@ import { Accounts } from 'meteor/accounts-base';
import * as Mailer from '../../../mailer';
import { Users, Subscriptions, Rooms } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { relinquishRoomOwnerships } from './relinquishRoomOwnerships';
import { closeOmnichannelConversations } from './closeOmnichannelConversations';
import { shouldRemoveOrChangeOwner, getSubscribedRoomsForUserWithDetails } from './getRoomsWithSingleOwner';

@ -3,7 +3,7 @@ import { parser } from '@rocket.chat/message-parser';
import { Messages, Rooms } from '../../../models/server';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { SystemLogger } from '../../../../server/lib/logger/system';
import { Apps } from '../../../apps/server';
import { parseUrlsInMessage } from './parseUrlsInMessage';

@ -3,7 +3,7 @@ import { escapeRegExp } from '@rocket.chat/string-helpers';
import { Rooms, Subscriptions } from '../../../models/server';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
/**
* Chechs if a messages contains a user highlight

@ -3,7 +3,7 @@ import moment from 'moment';
import { hasPermission } from '../../../authorization';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Subscriptions, Users } from '../../../models/server';
import { roomTypes } from '../../../utils';
import {

@ -4,7 +4,7 @@ import _ from 'underscore';
import moment from 'moment';
import { hasPermission } from '../../../authorization';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Users } from '../../../models';
import { api } from '../../../../server/sdk/api';

@ -4,7 +4,7 @@ import _ from 'underscore';
import moment from 'moment';
import { hasPermission } from '../../../authorization';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Users } from '../../../models';
import { api } from '../../../../server/sdk/api';

@ -3,7 +3,7 @@ import { Tracker } from 'meteor/tracker';
import Filter from 'bad-words';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { IMessage } from '../../../../definition/IMessage';
const Dep = new Tracker.Dependency();
@ -47,7 +47,7 @@ Meteor.startup(() => {
callbacks.add(
'beforeSaveMessage',
function (message: IMessage) {
(message: IMessage) => {
if (!message.msg) {
return message;
}

@ -4,7 +4,7 @@ import _ from 'underscore';
import { settings } from '../../../settings';
import { Users } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { checkUsernameAvailability } from '../functions';
import { RateLimiter } from '../lib';
import { saveUserIdentity } from '../functions/saveUserIdentity';

@ -3,7 +3,7 @@ import { escapeRegExp } from '@rocket.chat/string-helpers';
import { hasPermissionAsync } from '../../../../authorization/server/functions/hasPermission';
import { LivechatDepartment, LivechatDepartmentAgents } from '../../../../models/server/raw';
import { callbacks } from '../../../../callbacks/server';
import { callbacks } from '../../../../../lib/callbacks';
import { PaginatedResult } from '../../../../../definition/rest/helpers/PaginatedResult';
import { ILivechatDepartmentRecord } from '../../../../../definition/ILivechatDepartmentRecord';
import { ILivechatDepartmentAgents } from '../../../../../definition/ILivechatDepartmentAgents';

@ -5,7 +5,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { LivechatRooms, LivechatVisitors, LivechatDepartment } from '../../../../models/server';
import { EmojiCustom, LivechatTrigger } from '../../../../models/server/raw';
import { Livechat } from '../../lib/Livechat';
import { callbacks } from '../../../../callbacks/server';
import { callbacks } from '../../../../../lib/callbacks';
import { normalizeAgent } from '../../lib/Helper';
export function online(department, skipSettingCheck = false, skipFallbackCheck = false) {

@ -3,7 +3,7 @@ import moment from 'moment';
import { ILivechatBusinessHour, LivechatBusinessHourTypes } from '../../../../definition/ILivechatBusinessHour';
import { IBusinessHourBehavior, IBusinessHourType } from './AbstractBusinessHour';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Users } from '../../../models/server/raw';
import { ICronJobs } from '../../../../definition/ICronJobs';

@ -4,7 +4,7 @@ import { Accounts } from 'meteor/accounts-base';
import { BusinessHourManager } from './BusinessHourManager';
import { SingleBusinessHourBehavior } from './Single';
import { cronJobs } from '../../../utils/server/lib/cron/Cronjobs';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { DefaultBusinessHour } from './Default';
export const businessHourManager = new BusinessHourManager(cronJobs);

@ -1,7 +1,7 @@
import { HTTP } from 'meteor/http';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Livechat } from '../lib/Livechat';
import { SystemLogger } from '../../../../server/lib/logger/system';

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatDepartment } from '../../../models';
const concatUnique = (...arrays) => [...new Set([].concat(...arrays.filter(Array.isArray)))];

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings';
import { Users, LivechatDepartmentAgents } from '../../../models';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings';
import { LivechatVisitors } from '../../../models';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatRooms } from '../../../models';
callbacks.add(

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatRooms } from '../../../models';
callbacks.add(

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings';
import { Livechat } from '../lib/Livechat';

@ -1,6 +1,6 @@
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings';
import { sendMessage } from '../../../lib';
import { LivechatDepartment, Rooms, Users } from '../../../models';

@ -1,7 +1,7 @@
import moment from 'moment';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatRooms, Messages } from '../../../models/server';
import { businessHourManager } from '../business-hour';
import { LivechatBusinessHours, LivechatDepartment } from '../../../models/server/raw';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatRooms } from '../../../models';
import { normalizeMessageFileUpload } from '../../../utils/server/functions/normalizeMessageFileUpload';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Livechat } from '../lib/Livechat';
callbacks.add(

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatRooms } from '../../../models';
callbacks.add(

@ -1,5 +1,5 @@
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Messages, LivechatRooms } from '../../../models';
import { Livechat } from '../lib/Livechat';
import { normalizeMessageFileUpload } from '../../../utils/server/functions/normalizeMessageFileUpload';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings';
import OmniChannel from '../lib/OmniChannel';
import { normalizeMessageFileUpload } from '../../../utils/server/functions/normalizeMessageFileUpload';

@ -1,4 +1,4 @@
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Livechat } from '../lib/Livechat';
import { LivechatRooms } from '../../../models';

@ -16,7 +16,7 @@ import {
} from '../../../models/server';
import { Livechat } from './Livechat';
import { RoutingManager } from './RoutingManager';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Logger } from '../../../logger';
import { settings } from '../../../settings';
import { Apps, AppEvents } from '../../../apps/server';
@ -504,7 +504,7 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => {
return false;
}
// if a chat has a fallback department, attempt to redirect chat to there [EE]
return callbacks.run('livechat:onTransferFailure', { room, guest, transferData });
return !!callbacks.run('livechat:onTransferFailure', { room, guest, transferData });
}
Livechat.saveTransferHistory(room, transferData);

@ -15,7 +15,7 @@ import { RoutingManager } from './RoutingManager';
import { Analytics } from './Analytics';
import { settings } from '../../../settings/server';
import { getTimezone } from '../../../utils/server/lib/getTimezone';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import {
Users,
LivechatRooms,

@ -3,7 +3,7 @@ import { Match, check } from 'meteor/check';
import { LivechatRooms, LivechatInquiry, Users } from '../../../models/server';
import { checkServiceStatus, createLivechatRoom, createLivechatInquiry } from './Helper';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Logger } from '../../../logger';
import { RoutingManager } from './RoutingManager';

@ -11,7 +11,7 @@ import {
updateChatDepartment,
allowAgentSkipQueue,
} from './Helper';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { Logger } from '../../../../server/lib/logger/Logger';
import { LivechatRooms, Rooms, Messages, Users, LivechatInquiry, Subscriptions } from '../../../models/server';
import { Apps, AppEvents } from '../../../apps/server';

@ -1,6 +1,6 @@
import { RoutingManager } from '../RoutingManager';
import { LivechatDepartmentAgents, Users } from '../../../../models/server';
import { callbacks } from '../../../../callbacks';
import { callbacks } from '../../../../../lib/callbacks';
/* Auto Selection Queuing method:
*

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
Meteor.methods({
'livechat:getDepartmentForwardRestrictions'(departmentId) {

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
Meteor.methods({
'livechat:getTagsList'() {

@ -3,7 +3,7 @@ import { Match, check } from 'meteor/check';
import { hasPermission } from '../../../authorization';
import { LivechatRooms } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { Livechat } from '../lib/Livechat';
Meteor.methods({

@ -1,4 +1,4 @@
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings';
import { SMS } from '../../sms';
import { LivechatVisitors } from '../../models';

@ -4,7 +4,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { roomTypes } from '../../utils';
import { LivechatRooms } from '../../models';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings/server';
import { LivechatAgentActivityMonitor } from './statistics/LivechatAgentActivityMonitor';
import { businessHourManager } from './business-hour';

@ -2,7 +2,7 @@ import moment from 'moment';
import { Meteor } from 'meteor/meteor';
import { SyncedCron } from 'meteor/littledata:synced-cron';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { LivechatAgentActivity, Users } from '../../../models/server';
import { Sessions } from '../../../models/server/raw';

@ -10,7 +10,7 @@ import { RocketChatAnnouncement } from '../../../lib';
import { popout } from '../../../ui-utils';
import { t } from '../../../utils';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { hasAllPermission } from '../../../authorization';
import { Users, Rooms } from '../../../models';
import { handleError } from '../../../../client/lib/utils/handleError';

@ -1,7 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Tracker } from 'meteor/tracker';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings';
import { createMarkdownMessageRenderer, createMarkdownNotificationRenderer } from '../lib/markdown';
import './settings';

@ -3,7 +3,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import MentionsServer from './Mentions';
import { settings } from '../../settings';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { Users, Subscriptions, Rooms } from '../../models';
import { api } from '../../../server/sdk/api';

@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { settings } from '../../settings/server';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { isTheLastMessage } from '../../lib/server';
import { getUserAvatarURL } from '../../utils/lib/getUserAvatarURL';
import { canAccessRoom, hasPermission } from '../../authorization/server';

@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { Subscriptions, Messages, Users, Rooms } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { isTheLastMessage } from '../../../lib';
Meteor.methods({

@ -1,33 +0,0 @@
import { metrics } from './lib/metrics';
import StatsTracker from './lib/statsTracker';
import { callbacks } from '../../callbacks';
const { run: originalRun, runItem: originalRunItem } = callbacks;
callbacks.run = function (hook, item, constant) {
const rocketchatHooksEnd = metrics.rocketchatHooks.startTimer({
hook,
callbacks_length: callbacks.length,
});
const result = originalRun(hook, item, constant);
rocketchatHooksEnd();
return result;
};
callbacks.runItem = function ({ callback, result, constant, hook, time = Date.now() }) {
const rocketchatCallbacksEnd = metrics.rocketchatCallbacks.startTimer({
hook,
callback: callback.id,
});
const newResult = originalRunItem({ callback, result, constant });
StatsTracker.timing('callbacks.time', Date.now() - time, [`hook:${hook}`, `callback:${callback.id}`]);
rocketchatCallbacksEnd();
return newResult;
};

@ -2,6 +2,5 @@ import { metrics } from './lib/metrics';
import StatsTracker from './lib/statsTracker';
import './lib/collectMetrics';
import './callbacksMetrics';
export { metrics, StatsTracker };

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings/server';
import { SystemLogger } from '../../../server/lib/logger/system';

@ -6,7 +6,7 @@ import _ from 'underscore';
import { Messages, Rooms, Users } from '../../models/server';
import { settings } from '../../settings/server';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { getUserAvatarURL } from '../../utils/lib/getUserAvatarURL';
import { canAccessRoom } from '../../authorization/server/functions/canAccessRoom';

@ -4,7 +4,7 @@ import QueryString from 'querystring';
import { camelCase } from 'change-case';
import _ from 'underscore';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { SystemLogger } from '../../../server/lib/logger/system';
class Providers {

@ -12,7 +12,7 @@ import jschardet from 'jschardet';
import { Messages } from '../../models/server';
import { OEmbedCache } from '../../models/server/raw';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings';
import { isURL } from '../../utils/lib/isURL';
import { SystemLogger } from '../../../server/lib/logger/system';

@ -6,7 +6,7 @@ import { metrics } from '../../../metrics/server';
import { Users } from '../../../models/server';
import { RocketChatAssets } from '../../../assets/server';
import { replaceMentionedUsernamesWithFullNames, parseMessageTextPerUser } from '../../../lib/server/functions/notifications';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { getPushData } from '../../../lib/server/functions/notifications/mobile';
export class PushNotification {

@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
import _ from 'underscore';
import { Messages, Rooms, Subscriptions } from '../../../models';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { emoji } from '../../../emoji';
import { roomTypes } from '../../../utils/client';

@ -4,7 +4,7 @@ import _ from 'underscore';
import { Messages, Rooms } from '../../models/server';
import { EmojiCustom } from '../../models/server/raw';
import { callbacks } from '../../callbacks/server';
import { callbacks } from '../../../lib/callbacks';
import { emoji } from '../../emoji/server';
import { isTheLastMessage, msgStream } from '../../lib/server';
import { canAccessRoom, hasPermission } from '../../authorization/server';

@ -1,7 +1,7 @@
import _ from 'underscore';
import { settings } from '../../../settings/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { searchProviderService } from '../service/providerService';
import SearchLogger from '../logger/logger';

@ -6,7 +6,7 @@ import { Accounts } from 'meteor/accounts-base';
import { Random } from 'meteor/random';
import { rocketLogger } from './logger';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { settings } from '../../settings';
import { Messages, Rooms, Users } from '../../models';
import { createRoom, sendMessage, setUserAvatar } from '../../lib';

@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
import { slashCommands } from '../../utils';
import { ChatRoom } from '../../models';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { hasPermission } from '../../authorization';
function Topic(command, params, item) {

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { createSpotifyBeforeSaveMessageHandler } from '../lib/spotify';
Meteor.startup(() => {

@ -17,7 +17,7 @@ import { dropzoneEvents, dropzoneHelpers } from '../../../ui/client/views/app/ro
import './thread.html';
import { getUserPreference } from '../../../utils';
import { settings } from '../../../settings/client';
import { callbacks } from '../../../callbacks/client';
import { callbacks } from '../../../../lib/callbacks';
import './messageBoxFollow';
import { getCommonRoomEvents } from '../../../ui/client/views/app/lib/getCommonRoomEvents';
import { keyCodes } from '../../../../client/lib/utils/keyCodes';

@ -1,7 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { Messages } from '../../../models/server';
import { callbacks } from '../../../callbacks/server';
import { callbacks } from '../../../../lib/callbacks';
import { settings } from '../../../settings/server';
import { reply } from '../functions';
import { updateThreadUsersSubscriptions, getMentions } from '../../../lib/server/lib/notifyUsersOnMessage';

@ -3,7 +3,7 @@ import { Accounts } from 'meteor/accounts-base';
import { updateUserTokenpassBalances } from './functions/updateUserTokenpassBalances';
import { settingsRegistry } from '../../settings/server';
import { callbacks } from '../../callbacks';
import { callbacks } from '../../../lib/callbacks';
import { validateTokenAccess } from './roomAccessValidator.compatibility';
import './roomAccessValidator.internalService';

@ -8,7 +8,7 @@ import localforage from 'localforage';
import _ from 'underscore';
import { Emitter } from '@rocket.chat/emitter';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import Notifications from '../../../notifications/client/lib/Notifications';
import { getConfig } from '../../../../client/lib/utils/getConfig';
import { call } from '../../../../client/lib/utils/call';

@ -7,7 +7,7 @@ import { Template } from 'meteor/templating';
import _ from 'underscore';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { callbacks } from '../../../../lib/callbacks';
import { t } from '../../../utils';
import { handleError } from '../../../../client/lib/utils/handleError';
import { dispatchToastMessage } from '../../../../client/lib/toast';

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save