Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Service Accounts Notifications and broadcast added #64

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
ecd067a
[NEW] Service Account Admin Settings and Configuration files added
bhardwajaditya May 29, 2019
b20c8c7
[NEW] Service Account Admin Settings and Configuration files added
bhardwajaditya May 29, 2019
1c86e17
[NEW] Service Account Admin Settings and Configuration files added
bhardwajaditya May 30, 2019
a4eb682
[NEW] Service Account Admin Settings and Configuration files added
bhardwajaditya May 30, 2019
d2d8c63
Merge pull request #3 from bhardwajaditya/service-account-settings
bhardwajaditya May 31, 2019
388b460
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya May 31, 2019
a7359a4
Service Account Creation dialog added
bhardwajaditya May 31, 2019
de8ec3c
[NEW] Service Account Creation method
bhardwajaditya Jun 2, 2019
285ec83
Service Account owner username update method added
bhardwajaditya Jun 3, 2019
4e2477c
Fixed CLI errors
bhardwajaditya Jun 3, 2019
e5e51dd
Fixed CLI errors
bhardwajaditya Jun 3, 2019
a68a1d3
Service Account creation heading fixed
bhardwajaditya Jun 4, 2019
7aa00ec
Service Account broadcast room callback added
bhardwajaditya Jun 4, 2019
888ea27
Service Account creation method refactored
bhardwajaditya Jun 4, 2019
39387a5
Merge branch 'service-account-creation' of https://github.com/bhardwa…
bhardwajaditya Jun 4, 2019
1c855a8
Service Account Callback completed
bhardwajaditya Jun 4, 2019
7d41db4
Typos fixed
bhardwajaditya Jun 4, 2019
f7e1781
Merge branch 'service-account-creation' of https://github.com/bhardwa…
bhardwajaditya Jun 4, 2019
e4da2a7
CLI errors fixed
bhardwajaditya Jun 4, 2019
8b5a9b5
Merge pull request #4 from bhardwajaditya/service-account-settings
bizzbyster Jun 5, 2019
96f48ab
[NEW] Service Account one-tap login complete
bhardwajaditya Jun 8, 2019
04d1a12
Callbacks modified
bhardwajaditya Jun 8, 2019
3e11eba
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 8, 2019
483cc95
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 8, 2019
963fdd5
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 11, 2019
2bbcae7
Service Accounts directory tab added
bhardwajaditya Jun 12, 2019
b5871ed
Refactored creation method and added tests
bhardwajaditya Jun 15, 2019
574268f
CLI errors fixed
bhardwajaditya Jun 15, 2019
93d7b4b
CLI errors fixed
bhardwajaditya Jun 15, 2019
22a5b9c
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 15, 2019
7b10eb5
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 15, 2019
6111b49
Bugs fixed
bhardwajaditya Jun 17, 2019
99a43d3
Synchronized with other branches
bhardwajaditya Jun 17, 2019
db08336
Merge branch 'service-account-callbacks' of https://github.com/bhardw…
bhardwajaditya Jun 17, 2019
ea7398a
[NEW] Service Accounts Login method
bhardwajaditya Jun 17, 2019
8a02753
Typo fixed
bhardwajaditya Jun 17, 2019
b8ab554
CLI errors fixed
bhardwajaditya Jun 17, 2019
c245094
CLI errors fixed
bhardwajaditya Jun 17, 2019
7c27c8b
Merge branch 'service-account-login' of https://github.com/bhardwajad…
bhardwajaditya Jun 18, 2019
d904e45
[New] Service Account directory feature
bhardwajaditya Jun 18, 2019
8ba618a
CLI errors fixed
bhardwajaditya Jun 18, 2019
0fe5546
UsernameExists meteor method fixed
bhardwajaditya Jun 18, 2019
c768083
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 18, 2019
fb48d5f
Merge pull request #5 from bhardwajaditya/service-account-creation
bhardwajaditya Jun 18, 2019
1a33894
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 18, 2019
356ca5d
Sync commit
bhardwajaditya Jun 18, 2019
6211ab6
Sync commit
bhardwajaditya Jun 18, 2019
fac8adf
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 18, 2019
f21ad96
Sync commit
bhardwajaditya Jun 18, 2019
57c28fc
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 19, 2019
db76fa9
[NEW] Service Account subscription method added
bhardwajaditya Jun 19, 2019
645b6be
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 19, 2019
6f06d65
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 19, 2019
6809fdd
[NEW] Service Account Broadcast Feature Added
bhardwajaditya Jun 19, 2019
62d6237
[NEW] Service Account Broadcast Feature Added
bhardwajaditya Jun 19, 2019
f3e8ef8
[NEW] Service account subscription sidenav type
bhardwajaditya Jun 19, 2019
46b87f2
Broadcast Room name change handled
bhardwajaditya Jun 26, 2019
0562355
Lint errors fixed
bhardwajaditya Jun 26, 2019
6aa19d3
Merge pull request #6 from bhardwajaditya/service-account-callbacks
bhardwajaditya Jun 27, 2019
c43c3d7
Merged service-accounts branch
bhardwajaditya Jun 27, 2019
c603a51
getLoginToken method refactored
bhardwajaditya Jun 27, 2019
bf05a2d
Console statements removed
bhardwajaditya Jun 27, 2019
73eedd8
Sidebar header permission modified
bhardwajaditya Jun 27, 2019
e6e2229
Merged with upstream develop
bhardwajaditya Jun 27, 2019
e752336
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 27, 2019
ab05883
Merge branch service-accounts
bhardwajaditya Jun 27, 2019
68bed0a
Merge branch service-accounts
bhardwajaditya Jun 27, 2019
1dc5d2a
Added service account directory search translation key
bhardwajaditya Jun 27, 2019
fdac5d2
Merge pull request #7 from bhardwajaditya/service-account-login
kb0304 Jun 27, 2019
1b42205
Subscribers count added
bhardwajaditya Jun 27, 2019
bd2811d
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jun 27, 2019
117d725
Merge pull request #8 from bhardwajaditya/service-account-discovery
kb0304 Jun 27, 2019
6ee5e78
Merged service accounts branch
bhardwajaditya Jun 28, 2019
e893a18
[NEW] Service Account sidenav type
bhardwajaditya Jun 28, 2019
ce1f470
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jun 28, 2019
8e87c83
Unread counter added in popver
bhardwajaditya Jun 29, 2019
5a28d41
Get linked service account method added
bhardwajaditya Jul 1, 2019
61bfee3
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jul 1, 2019
b3fc0e4
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jul 1, 2019
e2b41d1
Merged with service-accounts branch
bhardwajaditya Jul 3, 2019
eb1da40
Partial rate limiter added
bhardwajaditya Jul 6, 2019
b6f67a7
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jul 6, 2019
5898d4a
Merge branch 'service-account-sidenav' of https://github.com/bhardwaj…
bhardwajaditya Jul 6, 2019
ae78b30
Merged with service accounts base branch
bhardwajaditya Jul 6, 2019
a0ca489
Added unread counter
bhardwajaditya Jul 8, 2019
38c2630
Fixed CLI errors
bhardwajaditya Jul 10, 2019
6d1144a
Broadcast feature added
bhardwajaditya Jul 10, 2019
edea473
[FIX] Custom status displayed on room leader panel (#14958)
Hudell Jul 11, 2019
7762aaa
[FIX] LDAP login with customField sync (#14808)
magicbelette Jul 11, 2019
d0763c6
[FIX] Prevent error on trying insert message with duplicated id (#14945)
MarcosSpessatto Jul 11, 2019
0e023ee
[FIX] OTR key icon missing on messages (#14953)
ggazzo Jul 11, 2019
ea1c99f
[FIX] Method `getUsersOfRoom` not returning offline users if limit is…
MarcosSpessatto Jul 11, 2019
8397e2d
[IMPROVE] Remove too specific helpers isFirefox() and isChrome() (#14…
tassoevan Jul 11, 2019
ef62371
[FIX] Jump to message missing in Starred Messages (#14949)
ggazzo Jul 11, 2019
564d5d5
[IMPROVE] Update tabs markup (#14964)
tassoevan Jul 11, 2019
183bd02
[FIX] Loading indicator positioning (#14968)
tassoevan Jul 11, 2019
df6f4a4
[FIX] load more messages (#14967)
ggazzo Jul 11, 2019
4efc8b0
[FIX] eternal loading file list (#14952)
ggazzo Jul 11, 2019
d5b1de5
[FIX] 50 custom emoji limit (#14951)
ggazzo Jul 11, 2019
7f88780
Bump jquery from 3.3.1 to 3.4.0 in /packages/rocketchat-livech… (#14922)
dependabot[bot] Jul 11, 2019
f63c9e6
[FIX] Allow storing the navigation history of unregistered Livechat v…
renatobecker Jul 11, 2019
98e5c92
Update GPG key
engelgabriel Jul 11, 2019
e52ddea
Merge branch 'develop' of github.com:RocketChat/Rocket.Chat into develop
engelgabriel Jul 11, 2019
de83336
[FIX] Wrong label order on room settings (#14960)
Hudell Jul 11, 2019
7adfeca
[FIX] Chrome doesn't load additional search results when botto… (#14965)
ggazzo Jul 12, 2019
fef5a69
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jul 12, 2019
b395b50
[IMPROVEMENT] patch to improve emoji render (#14722)
ggazzo Jul 12, 2019
bf30d36
Regression: patch to improve emoji render (#14980)
ggazzo Jul 12, 2019
df31cc0
[FIX] Users staying online after logout (#14966)
MarcosSpessatto Jul 12, 2019
7304098
Remove unused dependency (lokijs) (#14973)
tassoevan Jul 12, 2019
443f42f
Bump juice version to 5.2.0 (#14974)
tassoevan Jul 12, 2019
fa13e3c
Bump node-rsa version to 1.0.5 (#14976)
tassoevan Jul 12, 2019
463d7ce
Bump photoswipe version to 4.1.3 (#14977)
tassoevan Jul 12, 2019
052f4ba
Remove unused Meteor dependency (yasinuslu:blaze-meta) (#14971)
tassoevan Jul 12, 2019
95388fe
Bump marked from 0.5.2 to 0.6.1 (#14969)
dependabot[bot] Jul 12, 2019
9ed9f4a
[IMPROVE] Federation routes #14972
d-gubert Jul 12, 2019
9d08dbd
[IMPROVE] Extract federation config to its own file (#14992)
d-gubert Jul 12, 2019
3b98695
Service account configurable approval process
bhardwajaditya Jul 13, 2019
9c2d4ae
Improve Docker compose readability (#14457)
NateScarlet Jul 15, 2019
2e69929
[FIX] Not being able to mention users with "all" and "here" usernames…
hamidrezabstn Jul 15, 2019
cab7c89
[FIX] Custom User Status throttled by rate limiter (#15001)
Hudell Jul 16, 2019
aaae20c
[FIX] CustomOauth Identity Step errors displayed in HTML format (#15000)
Hudell Jul 16, 2019
fab9cb0
Service account message alert added
bhardwajaditya Jul 17, 2019
6b7082c
Lint errors fixed
bhardwajaditya Jul 17, 2019
43374e2
Merge branch 'develop' of https://github.com/RocketChat/Rocket.Chat i…
bhardwajaditya Jul 17, 2019
2ae96a1
Merge branch 'social_features_prototype' of https://github.com/WideCh…
bhardwajaditya Jul 17, 2019
869df4c
Merge branch 'service-accounts' of https://github.com/bhardwajaditya/…
bhardwajaditya Jul 17, 2019
93883fc
Merge branch 'service-account-broadcast' of https://github.com/bhardw…
bhardwajaditya Jul 17, 2019
a56fde3
Merge branch 'service-account-approval' of https://github.com/bhardwa…
bhardwajaditya Jul 17, 2019
fb1fbe1
Merged base branch
bhardwajaditya Jul 17, 2019
56616e7
fixed browseChannels method
bhardwajaditya Jul 17, 2019
07469cb
fixed browseChannels method
bhardwajaditya Jul 17, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .circleci/sign.key.gpg
Binary file not shown.
1 change: 0 additions & 1 deletion .meteor/packages
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ raix:handlebar-helpers
rocketchat:push
raix:ui-dropped-event
todda00:friendly-slugs
yasinuslu:blaze-meta

tap:i18n
underscore@1.0.10
Expand Down
3 changes: 1 addition & 2 deletions .meteor/versions
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ konecty:change-case@2.3.0
konecty:delayed-task@1.0.0
konecty:mongo-counter@0.0.5_3
konecty:multiple-instances-status@1.1.0
konecty:user-presence@2.4.0
konecty:user-presence@2.5.0
launch-screen@1.1.1
less@2.8.0
littledata:synced-cron@1.5.1
Expand Down Expand Up @@ -159,4 +159,3 @@ underscore@1.0.10
url@1.2.0
webapp@1.7.2
webapp-hashing@1.0.9
yasinuslu:blaze-meta@0.3.3
8 changes: 4 additions & 4 deletions app/channel-settings/client/views/channelSettings.html
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,9 @@
<div class="rc-user-info__row rc-user-info__row--separator">
<div class="rc-switch-double">
<div class="rc-switch-double__label {{equal false value 'disabled'}}">
{{_ "React_when_read_only"}}
{{_ "Disallow_reacting"}}
<div class="rc-switch-double__description">
{{_ "React_when_read_only"}}
{{_ "Disallow_reacting_Description"}}
</div>
</div>
<div class="rc-switch rc-switch--blue">
Expand All @@ -136,9 +136,9 @@
</label>
</div>
<div class="rc-switch-double__label {{equal true value 'disabled'}}">
{{_ "Disallow_reacting"}}
{{_ "React_when_read_only"}}
<div class="rc-switch-double__description">
{{_ "Disallow_reacting_Description"}}
{{_ "React_when_read_only"}}
</div>
</div>
</div>
Expand Down
1 change: 1 addition & 0 deletions app/custom-oauth/server/custom_oauth_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ export class CustomOAuth {
const params = {};
const headers = {
'User-Agent': this.userAgent, // http://doc.gitlab.com/ce/api/users.html#Current-user
Accept: 'application/json',
};

if (this.identityTokenSentVia === 'header') {
Expand Down
12 changes: 12 additions & 0 deletions app/emoji-custom/client/admin/adminEmoji.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,18 @@ Template.adminEmoji.helpers({
data: Template.instance().tabBarData.get(),
};
},
onTableScroll() {
const instance = Template.instance();
return function(currentTarget) {
if ((currentTarget.offsetHeight + currentTarget.scrollTop) < (currentTarget.scrollHeight - 100)) {
return;
}
if (Template.instance().limit.get() > Template.instance().customemoji().length) {
return false;
}
instance.limit.set(instance.limit.get() + 50);
};
},
onTableItemClick() {
const instance = Template.instance();
return function({ _id }) {
Expand Down
74 changes: 74 additions & 0 deletions app/federation/server/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import mem from 'mem';

import { getWorkspaceAccessToken } from '../../cloud/server';
import { FederationKeys } from '../../models/server';
import { settings } from '../../settings/server';
import * as SettingsUpdater from './settingsUpdater';
import { logger } from './logger';

const defaultConfig = {
hub: {
active: null,
url: null,
},
peer: {
uniqueId: null,
domain: null,
url: null,
public_key: null,
},
cloud: {
token: null,
},
};

const getConfigLocal = () => {
const _enabled = settings.get('FEDERATION_Enabled');

if (!_enabled) { return defaultConfig; }

// If it is enabled, check if the settings are there
const _uniqueId = settings.get('FEDERATION_Unique_Id');
const _domain = settings.get('FEDERATION_Domain');
const _discoveryMethod = settings.get('FEDERATION_Discovery_Method');
const _hubUrl = settings.get('FEDERATION_Hub_URL');
const _peerUrl = settings.get('Site_Url');

if (!_domain || !_discoveryMethod || !_hubUrl || !_peerUrl) {
SettingsUpdater.updateStatus('Could not enable, settings are not fully set');

logger.setup.error('Could not enable Federation, settings are not fully set');

return defaultConfig;
}

logger.setup.info('Updating settings...');

// Normalize the config values
return {
hub: {
active: _discoveryMethod === 'hub',
url: _hubUrl.replace(/\/+$/, ''),
},
peer: {
uniqueId: _uniqueId,
domain: _domain.replace('@', '').trim(),
url: _peerUrl.replace(/\/+$/, ''),
public_key: FederationKeys.getPublicKeyString(),
},
cloud: {
token: getWorkspaceAccessToken(),
},
};
};

export const getConfig = mem(getConfigLocal);

const updateValue = () => mem.clear(getConfig);

settings.get('FEDERATION_Enabled', updateValue);
settings.get('FEDERATION_Unique_Id', updateValue);
settings.get('FEDERATION_Domain', updateValue);
settings.get('FEDERATION_Status', updateValue);
settings.get('FEDERATION_Discovery_Method', updateValue);
settings.get('FEDERATION_Hub_URL', updateValue);
36 changes: 2 additions & 34 deletions app/federation/server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import './methods/dashboard';
import { addUser } from './methods/addUser';
import { searchUsers } from './methods/searchUsers';
import { ping } from './methods/ping';
import { getWorkspaceAccessToken } from '../../cloud/server';
import { FederationKeys } from '../../models';
import { settings } from '../../settings';
import { getConfig } from './config';

const peerClient = new PeerClient();
const peerDNS = new PeerDNS();
Expand Down Expand Up @@ -73,39 +73,7 @@ const updateSettings = _.debounce(Meteor.bindEnvironment(function() {

if (!_enabled) { return; }

// If it is enabled, check if the settings are there
const _uniqueId = settings.get('FEDERATION_Unique_Id');
const _domain = settings.get('FEDERATION_Domain');
const _discoveryMethod = settings.get('FEDERATION_Discovery_Method');
const _hubUrl = settings.get('FEDERATION_Hub_URL');
const _peerUrl = settings.get('Site_Url');

if (!_domain || !_discoveryMethod || !_hubUrl || !_peerUrl) {
SettingsUpdater.updateStatus('Could not enable, settings are not fully set');

logger.setup.error('Could not enable Federation, settings are not fully set');

return;
}

logger.setup.info('Updating settings...');

// Normalize the config values
const config = {
hub: {
active: _discoveryMethod === 'hub',
url: _hubUrl.replace(/\/+$/, ''),
},
peer: {
uniqueId: _uniqueId,
domain: _domain.replace('@', '').trim(),
url: _peerUrl.replace(/\/+$/, ''),
public_key: FederationKeys.getPublicKeyString(),
},
cloud: {
token: getWorkspaceAccessToken(),
},
};
const config = getConfig();

// If the settings are correctly set, let's update the configuration

Expand Down
2 changes: 1 addition & 1 deletion app/ldap/server/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ export function getDataToSyncUserData(ldapUser, user) {
if (currKey === lastKey) {
obj[currKey] = tmpLdapField;
} else {
obj[currKey] = obj[currKey];
obj[currKey] = obj[currKey] || {};
}
return obj[currKey];
}, userData);
Expand Down
6 changes: 6 additions & 0 deletions app/lib/client/methods/sendMessage.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
import { Meteor } from 'meteor/meteor';
import { TimeSync } from 'meteor/mizzao:timesync';
import s from 'underscore.string';
import toastr from 'toastr';

import { ChatMessage } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { promises } from '../../../promises/client';
import { t } from '../../../utils/client';

Meteor.methods({
sendMessage(message) {
if (!Meteor.userId() || s.trim(message.msg) === '') {
return false;
}
const messageAlreadyExists = message._id && ChatMessage.findOne({ _id: message._id });
if (messageAlreadyExists) {
return toastr.error(t('Message_Already_Sent'));
}
const user = Meteor.user();
message.ts = isNaN(TimeSync.serverOffset()) ? new Date() : new Date(Date.now() + TimeSync.serverOffset());
message.u = {
Expand Down
2 changes: 1 addition & 1 deletion app/lib/server/functions/checkUsernameAvailability.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ let usernameBlackList = [];
const toRegExp = (username) => new RegExp(`^${ s.escapeRegExp(username).trim() }$`, 'i');

settings.get('Accounts_BlockedUsernameList', (key, value) => {
usernameBlackList = value.split(',').map(toRegExp);
usernameBlackList = ['all', 'here'].concat(value.split(',')).map(toRegExp);
});

const usernameIsBlocked = (username, usernameBlackList) => usernameBlackList.length
Expand Down
31 changes: 31 additions & 0 deletions app/lib/server/functions/notifications/serviceAccount.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { metrics } from '../../../../metrics';
import { Notifications } from '../../../../notifications';

export function shouldNotifyServiceAccountOwner({
statusConnection,
hasMentionToAll,
hasMentionToHere,
isHighlighted,
hasMentionToUser,
hasReplyToThread,
roomType,
}) {
if (statusConnection === 'online') {
return false;
}
return roomType === 'd' || hasMentionToAll || hasMentionToHere || isHighlighted || hasMentionToUser || hasReplyToThread;
}

export function notifyServiceAccountOwner(receiver, ownerId, message, room) {
metrics.notificationsSent.inc({ notification_type: 'sa' });
Notifications.notifyUser(ownerId, 'sa-notification', {
payload: {
_id: message._id,
rid: message.rid,
sender: message.u,
receiver: receiver.username,
type: room.t,
name: room.name,
},
});
}
4 changes: 4 additions & 0 deletions app/lib/server/functions/sendMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ export const sendMessage = function(user, message, room, upsert = false) {
}, message);
message._id = _id;
} else {
const messageAlreadyExists = message._id && Messages.findOneById(message._id, { fields: { _id: 1 } });
if (messageAlreadyExists) {
return;
}
message._id = Messages.insert(message);
}

Expand Down
2 changes: 1 addition & 1 deletion app/lib/server/functions/setStatusText.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const _setStatusText = function(userId, statusText) {
return true;
};

export const setStatusText = RateLimiter.limitFunction(_setStatusText, 1, 60000, {
export const setStatusText = RateLimiter.limitFunction(_setStatusText, 5, 60000, {
0() {
// Administrators have permission to change others status, so don't limit those
return !Meteor.userId() || !hasPermission(Meteor.userId(), 'edit-other-user-info');
Expand Down
15 changes: 15 additions & 0 deletions app/lib/server/lib/sendNotificationsOnMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { sendEmail, shouldNotifyEmail } from '../functions/notifications/email';
import { sendSinglePush, shouldNotifyMobile } from '../functions/notifications/mobile';
import { notifyDesktopUser, shouldNotifyDesktop } from '../functions/notifications/desktop';
import { notifyAudioUser, shouldNotifyAudio } from '../functions/notifications/audio';
import { notifyServiceAccountOwner, shouldNotifyServiceAccountOwner } from '../functions/notifications/serviceAccount';

export const sendNotification = async ({
subscription,
Expand Down Expand Up @@ -46,6 +47,7 @@ export const sendNotification = async ({
status: 1,
statusConnection: 1,
username: 1,
u: 1,
},
}),
];
Expand Down Expand Up @@ -149,6 +151,18 @@ export const sendNotification = async ({
return false;
});
}

if (receiver.u && shouldNotifyServiceAccountOwner({
statusConnection: receiver.statusConnection,
hasMentionToAll,
hasMentionToHere,
isHighlighted,
hasMentionToUser,
hasReplyToThread,
roomType,
})) {
notifyServiceAccountOwner(receiver, receiver.u._id, message, room);
}
};

const project = {
Expand All @@ -168,6 +182,7 @@ const project = {
'receiver.status': 1,
'receiver.statusConnection': 1,
'receiver.username': 1,
'receiver.u': 1,
},
};

Expand Down
15 changes: 1 addition & 14 deletions app/livechat/server/api/v1/pageVisited.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check';
import _ from 'underscore';

import { API } from '../../../../api';
import { findGuest, findRoom } from '../lib/livechat';
import { Livechat } from '../../lib/Livechat';

API.v1.addRoute('livechat/page.visited', {
post() {
try {
check(this.bodyParams, {
token: String,
rid: String,
rid: Match.Maybe(String),
pageInfo: Match.ObjectIncluding({
change: String,
title: String,
Expand All @@ -22,17 +20,6 @@ API.v1.addRoute('livechat/page.visited', {
});

const { token, rid, pageInfo } = this.bodyParams;

const guest = findGuest(token);
if (!guest) {
throw new Meteor.Error('invalid-token');
}

const room = findRoom(token, rid);
if (!room) {
throw new Meteor.Error('invalid-room');
}

const obj = Livechat.savePageHistory(token, rid, pageInfo);
if (obj) {
const page = _.pick(obj, 'msg', 'navigation');
Expand Down
2 changes: 1 addition & 1 deletion app/message-pin/client/actionButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ Meteor.startup(function() {
id: 'jump-to-pin-message',
icon: 'jump',
label: 'Jump_to_message',
context: ['pinned'],
context: ['pinned', 'message', 'message-mobile'],
action() {
const { msg: message } = messageArgs(this);
if (window.matchMedia('(max-width: 500px)').matches) {
Expand Down
2 changes: 1 addition & 1 deletion app/message-star/client/actionButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Meteor.startup(function() {
id: 'jump-to-star-message',
icon: 'jump',
label: 'Jump_to_message',
context: ['starred', 'threads'],
context: ['starred', 'threads', 'message', 'message-mobile'],
action() {
const { msg: message } = messageArgs(this);
if (window.matchMedia('(max-width: 500px)').matches) {
Expand Down
Loading