fixing conflicts

pull/9457/head
Joaquin GT 7 years ago
commit 58d744f0a1
  1. 32
      .meteor/packages
  2. 2
      .meteor/release
  3. 77
      .meteor/versions
  4. 13
      client/notifications/notification.js
  5. 26075
      package-lock.json
  6. 108
      package.json
  7. 44
      packages/autoupdate/autoupdate_client.js
  8. 8
      packages/autoupdate/package.js
  9. 2
      packages/rocketchat-api/package.js
  10. 20
      packages/rocketchat-api/server/v1/chat.js
  11. 14
      packages/rocketchat-api/server/v1/permissions.js
  12. 27
      packages/rocketchat-api/server/v1/spotlight.js
  13. 657
      packages/rocketchat-api/server/v1/users.js
  14. 1
      packages/rocketchat-i18n/i18n/en.i18n.json
  15. 3
      packages/rocketchat-katex/package-lock.json
  16. 5
      packages/rocketchat-lib/server/startup/settings.js
  17. 22
      packages/rocketchat-livechat/.app/.meteor/packages
  18. 2
      packages/rocketchat-livechat/.app/.meteor/release
  19. 75
      packages/rocketchat-livechat/.app/.meteor/versions
  20. 6
      packages/rocketchat-livechat/.app/package.json
  21. 4
      packages/rocketchat-livechat/app/i18n/af.i18n.json
  22. 3
      packages/rocketchat-livechat/app/i18n/mn.i18n.json
  23. 4
      packages/rocketchat-livechat/app/i18n/sl-SI.i18n.json
  24. 46
      packages/rocketchat-livechat/app/i18n/th-TH.i18n.json
  25. 46
      packages/rocketchat-livechat/app/i18n/vi-VN.i18n.json
  26. 879
      packages/rocketchat-livechat/app/package-lock.json
  27. 7
      packages/rocketchat-ui-account/client/accountPreferences.html
  28. 6
      packages/rocketchat-ui-account/client/accountPreferences.js
  29. 4
      server/methods/saveUserPreferences.js
  30. 17
      tests/end-to-end/api/01-users.js
  31. 15
      tests/end-to-end/api/05-chat.js
  32. 33
      tests/end-to-end/api/11-permissions.js
  33. 40
      tests/end-to-end/api/11-spotlight.js
  34. 4
      tests/pageobjects/administration.page.js

@ -5,37 +5,37 @@
rocketchat:cors
accounts-facebook@1.3.0
accounts-github@1.4.0
accounts-google@1.3.0
accounts-meteor-developer@1.4.0
accounts-facebook@1.3.1
accounts-github@1.4.1
accounts-google@1.3.1
accounts-meteor-developer@1.4.1
accounts-password@1.5.0
accounts-twitter@1.4.0
accounts-twitter@1.4.1
blaze-html-templates
check@1.2.5
check@1.3.0
ddp-rate-limiter@1.0.7
ddp-common@1.3.0
dynamic-import@0.2.0
ecmascript@0.9.0
ddp-common@1.4.0
dynamic-import@0.3.0
ecmascript@0.10.0
ejson@1.1.0
email@1.2.3
fastclick@1.0.13
http@1.3.0
http@1.4.0
jquery@1.11.10
logging@1.1.19
meteor-base@1.2.0
meteor-base@1.3.0
mobile-experience@1.0.5
mongo@1.3.1
random@1.0.10
mongo@1.4.2
random@1.1.0
rate-limit@1.0.8
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
reload@1.2.0
service-configuration@1.0.11
session@1.1.7
shell-server@0.3.0
shell-server@0.3.1
spacebars
standard-minifier-js@2.2.0
standard-minifier-js@2.3.1
tracker@1.1.3
rocketchat:2fa

@ -1 +1 @@
METEOR@1.6.0.1
METEOR@1.6.1

@ -8,41 +8,41 @@ accounts-password@1.5.0
accounts-twitter@1.4.1
aldeed:simple-schema@1.5.3
allow-deny@1.1.0
autoupdate@1.3.12
babel-compiler@6.24.7
babel-runtime@1.1.1
base64@1.0.10
autoupdate@1.4.0
babel-compiler@7.0.4
babel-runtime@1.2.2
base64@1.0.11
binary-heap@1.0.10
blaze@2.3.2
blaze-html-templates@1.1.2
blaze-tools@1.0.10
boilerplate-generator@1.3.1
caching-compiler@1.1.9
boilerplate-generator@1.4.0
caching-compiler@1.1.11
caching-html-compiler@1.1.2
callback-hook@1.0.10
callback-hook@1.1.0
cfs:http-methods@0.0.32
check@1.2.5
coffeescript@1.12.7_3
coffeescript-compiler@1.12.7_3
check@1.3.0
coffeescript@1.0.17
dandv:caret-position@2.1.1
ddp@1.4.0
ddp-client@2.2.0
ddp-common@1.3.0
ddp-client@2.3.1
ddp-common@1.4.0
ddp-rate-limiter@1.0.7
ddp-server@2.1.1
ddp-server@2.1.2
deepwell:bootstrap-datepicker2@1.3.0
deps@1.0.12
diff-sequence@1.0.7
diff-sequence@1.1.0
dispatch:run-as-user@1.1.1
dynamic-import@0.2.1
ecmascript@0.9.0
dynamic-import@0.3.0
ecmascript@0.10.4
ecmascript-runtime@0.5.0
ecmascript-runtime-client@0.5.0
ecmascript-runtime-client@0.6.2
ecmascript-runtime-server@0.5.0
edgee:slingshot@0.7.1
ejson@1.1.0
email@1.2.3
emojione:emojione@2.2.6
es5-shim@4.7.3
facebook-oauth@1.4.0
fastclick@1.0.13
francocatena:status@1.5.3
@ -52,15 +52,15 @@ google-oauth@1.2.5
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.3.0
id-map@1.0.9
http@1.4.0
id-map@1.1.0
jalik:ufs@0.7.4_1
jalik:ufs-gridfs@0.2.1
jalik:ufs-local@0.2.9
jparker:crypto-core@0.1.0
jparker:crypto-md5@0.1.1
jparker:gravatar@0.5.1
jquery@1.11.10
jquery@1.11.11
kadira:blaze-layout@2.3.0
kadira:flow-router@2.12.1
keepnox:perfect-scrollbar@0.6.8
@ -72,28 +72,28 @@ konecty:multiple-instances-status@1.1.0
konecty:nrr@2.0.2
konecty:user-presence@2.0.1
launch-screen@1.1.1
less@2.7.11
less@2.7.12
livedata@1.0.18
localstorage@1.2.0
logging@1.1.19
matb33:collection-hooks@0.8.4
mdg:validation-error@0.5.1
meteor@1.8.2
meteor-base@1.2.0
meteor-base@1.3.0
meteor-developer-oauth@1.2.0
meteorhacks:inject-initial@1.0.4
meteorhacks:meteorx@1.4.1
meteorspark:util@0.2.0
minifier-css@1.2.16
minifier-js@2.2.2
minifier-css@1.3.1
minifier-js@2.3.2
minimongo@1.4.3
mizzao:autocomplete@0.5.1
mizzao:timesync@0.3.4
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modules@0.11.2
modules-runtime@0.9.1
mongo@1.3.1
modules@0.11.4
modules-runtime@0.9.2
mongo@1.4.3
mongo-dev-server@1.1.0
mongo-id@1.0.6
mongo-livedata@1.0.12
@ -102,28 +102,28 @@ mystor:device-detection@0.2.0
nimble:restivus@0.8.12
nooitaf:colors@1.1.2_1
npm-bcrypt@0.9.3
npm-mongo@2.2.33
npm-mongo@2.2.34
oauth@1.2.1
oauth1@1.2.0
oauth2@1.2.0
observe-sequence@1.0.16
ordered-dict@1.0.9
ordered-dict@1.1.0
ostrio:cookies@2.2.4
pauli:accounts-linkedin@2.1.5
pauli:linkedin-oauth@1.2.0
percolate:synced-cron@1.3.2
promise@0.10.1
promise@0.10.2
raix:eventemitter@0.1.3
raix:eventstate@0.0.4
raix:handlebar-helpers@0.2.5
raix:push@3.3.0
raix:ui-dropped-event@0.0.7
random@1.0.10
rate-limit@1.0.8
random@1.1.0
rate-limit@1.0.9
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
reload@1.2.0
retry@1.1.0
rocketchat:2fa@0.0.1
rocketchat:accounts@0.0.1
rocketchat:action-links@0.0.1
@ -239,15 +239,18 @@ rocketchat:videobridge@0.2.0
rocketchat:webrtc@0.0.1
rocketchat:wordpress@0.0.1
routepolicy@1.0.12
server-render@0.3.0
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.3.1
shim-common@0.1.0
simple:json-routes@2.1.0
socket-stream-client@0.1.0
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.10
standard-minifier-js@2.2.3
standard-minifier-js@2.3.2
steffo:meteor-accounts-saml@0.0.1
swydo:graphql@0.0.3
tap:i18n@1.8.2
@ -260,8 +263,8 @@ tracker@1.1.3
twitter-oauth@1.2.0
ui@1.0.13
underscore@1.0.10
url@1.1.0
webapp@1.4.0
url@1.2.0
webapp@1.5.0
webapp-hashing@1.0.9
yasaricli:slugify@0.0.7
yasinuslu:blaze-meta@0.3.3

@ -29,6 +29,7 @@ Meteor.startup(function() {
// This logic is duplicated in /client/startup/unread.coffee.
const hasFocus = readMessage.isEnable();
const messageIsInOpenedRoom = openedRoomId === notification.payload.rid;
const muteFocusedConversations = RocketChat.getUserPreference(Meteor.user(), 'muteFocusedConversations');
fireGlobalEvent('notification', {
notification,
@ -42,10 +43,13 @@ Meteor.startup(function() {
KonchatNotification.newMessage(notification.payload.rid);
KonchatNotification.showDesktop(notification);
}
} else if (!(hasFocus && messageIsInOpenedRoom)) {
} else if (!hasFocus || !messageIsInOpenedRoom) {
// Play a sound and show a notification.
KonchatNotification.newMessage(notification.payload.rid);
KonchatNotification.showDesktop(notification);
} else if (!muteFocusedConversations) {
// Play a notification sound
KonchatNotification.newMessage(notification.payload.rid);
}
});
@ -56,14 +60,15 @@ Meteor.startup(function() {
// This logic is duplicated in /client/startup/unread.coffee.
const hasFocus = readMessage.isEnable();
const messageIsInOpenedRoom = openedRoomId === notification.payload.rid;
const muteFocusedConversations = RocketChat.getUserPreference(Meteor.user(), 'muteFocusedConversations');
if (RocketChat.Layout.isEmbedded()) {
if (!hasFocus && messageIsInOpenedRoom) {
// Play a sound and show a notification.
// Play a notification sound
KonchatNotification.newMessage(notification.payload.rid);
}
} else if (!(hasFocus && messageIsInOpenedRoom)) {
// Play a sound and show a notification.
} else if (!hasFocus || !messageIsInOpenedRoom || !muteFocusedConversations) {
// Play a notification sound
KonchatNotification.newMessage(notification.payload.rid);
}
});

26075
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -86,94 +86,94 @@
"email": "support@rocket.chat"
},
"devDependencies": {
"autoprefixer": "^7.2.5",
"autoprefixer": "^8.0.0",
"babel-mocha-es6-compiler": "^0.1.0",
"babel-plugin-array-includes": "^2.0.3",
"chimp": "^0.51.0",
"conventional-changelog-cli": "^1.3.5",
"eslint": "^4.15.0",
"mocha": "^4.1.0",
"conventional-changelog-cli": "^1.3.13",
"eslint": "^4.17.0",
"mocha": "^5.0.1",
"mock-require": "^3.0.1",
"postcss-custom-properties": "^6.2.0",
"postcss-import": "^11.0.0",
"postcss-import": "^11.1.0",
"postcss-media-minmax": "^3.0.0",
"postcss-nested": "^3.0.0",
"postcss-selector-not": "^3.0.1",
"proxyquire": "^1.8.0",
"simple-git": "^1.85.0",
"simple-git": "^1.89.0",
"stylelint": "^8.4.0",
"stylelint-order": "^0.8.0",
"supertest": "^3.0.0"
},
"dependencies": {
"@google-cloud/language": "0.8.0",
"@google-cloud/storage": "1.4.0",
"@google-cloud/vision": "0.11.5",
"adm-zip": "0.4.7",
"atlassian-crowd": "0.5.0",
"autolinker": "1.6.0",
"aws-sdk": "^2.180.0",
"babel-runtime": "^6.26.0",
"bad-words": "1.3.1",
"@babel/runtime": "^7.0.0-beta.40",
"@google-cloud/language": "^1.1.0",
"@google-cloud/storage": "^1.6.0",
"@google-cloud/vision": "^0.15.2",
"adm-zip": "^0.4.7",
"atlassian-crowd": "^0.5.0",
"autolinker": "^1.6.2",
"aws-sdk": "^2.195.0",
"bad-words": "^1.6.1",
"bcrypt": "^1.0.3",
"bson": "0.5.5",
"bugsnag": "1.8.0",
"bson": "^1.0.4",
"bugsnag": "^2.1.3",
"bunyan": "^1.8.12",
"busboy": "0.2.14",
"busboy": "^0.2.14",
"cas": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62",
"clipboard": "1.7.1",
"codemirror": "^5.33.0",
"coffeescript": "1.12.7",
"connect": "2.7.10",
"clipboard": "^1.7.1",
"codemirror": "^5.34.0",
"coffeescript": "^1.12.7",
"connect": "^2.7.10",
"core-js": "^2.5.3",
"csv-parse": "1.2.0",
"csv-parse": "^1.3.3",
"emailreplyparser": "^0.0.5",
"file-type": "^7.4.0",
"filesize": "3.5.11",
"gridfs-stream": "1.1.1",
"he": "1.1.1",
"file-type": "^7.5.0",
"filesize": "^3.6.0",
"gridfs-stream": "^1.1.1",
"he": "^1.1.1",
"highlight.js": "^9.12.0",
"iconv-lite": "0.4.19",
"image-size": "0.6.2",
"iconv-lite": "^0.4.19",
"image-size": "^0.6.2",
"imap": "^0.8.19",
"ip-range-check": "0.0.2",
"jquery": "^3.2.1",
"jschardet": "1.6.0",
"ip-range-check": "^0.0.2",
"jquery": "^3.3.1",
"jschardet": "^1.6.0",
"ldapjs": "^1.0.2",
"less": "https://github.com/meteor/less.js/tarball/8130849eb3d7f0ecf0ca8d0af7c4207b0442e3f6",
"less-plugin-autoprefix": "1.5.1",
"localforage": "1.5.5",
"lokijs": "1.4.1",
"lru-cache": "2.6.5",
"mailparser": "^2.1.0",
"marked": "0.3.12",
"less-plugin-autoprefix": "^1.5.1",
"localforage": "^1.5.6",
"lokijs": "^1.5.2",
"lru-cache": "^2.6.5",
"mailparser": "^2.2.0",
"marked": "^0.3.12",
"mime-db": "^1.32.0",
"mime-type": "^3.0.5",
"mkdirp": "0.5.1",
"mkdirp": "^0.5.1",
"moment": "^2.20.1",
"moment-timezone": "^0.5.14",
"node-dogstatsd": "0.0.7",
"object-path": "0.11.4",
"node-dogstatsd": "^0.0.7",
"object-path": "^0.11.4",
"photoswipe": "^4.1.2",
"poplib": "^0.1.7",
"prom-client": "^10.2.2",
"querystring": "0.2.0",
"redis": "2.2.5",
"semver": "^5.4.1",
"querystring": "^0.2.0",
"redis": "^2.8.0",
"semver": "^5.5.0",
"sharp": "^0.19.0",
"slack-client": "2.0.6",
"speakeasy": "2.0.0",
"tar-stream": "1.5.5",
"slack-client": "^2.0.6",
"speakeasy": "^2.0.0",
"tar-stream": "^1.5.5",
"toastr": "^2.1.4",
"twilio": "2.9.1",
"ua-parser-js": "0.7.17",
"twilio": "^2.9.1",
"ua-parser-js": "^0.7.17",
"underscore": "^1.8.3",
"underscore.string": "^3.3.4",
"wolfy87-eventemitter": "^5.2.4",
"xml-crypto": "0.6.0",
"xml2js": "0.2.0",
"xmlbuilder": "2.6.4",
"xmldom": "0.1.27",
"yaqrcode": "0.2.1"
"xml-crypto": "^0.10.1",
"xml2js": "^0.4.19",
"xmlbuilder": "^2.6.4",
"xmldom": "^0.1.27",
"yaqrcode": "^0.2.1"
}
}

@ -59,6 +59,14 @@ var retry = new Retry({
});
var failures = 0;
function after(times, func) {
return function() {
if (--times < 1) {
return func.apply(this, arguments);
}
};
};
Autoupdate._retrySubscription = function () {
Meteor.subscribe("meteor_autoupdate_clientVersions", {
onError: function (error) {
@ -86,18 +94,30 @@ Autoupdate._retrySubscription = function () {
// https://github.com/guard/guard-livereload/blob/master/js/livereload.js#L710
var newCss = (doc.assets && doc.assets.allCss) || [];
var oldLinks = [];
_.each(document.getElementsByTagName('link'), function (link) {
if (link.className === '__meteor-css__') {
oldLinks.push(link);
Array.prototype.forEach.call(
document.getElementsByTagName('link'),
function (link) {
if (link.className === '__meteor-css__') {
oldLinks.push(link);
}
}
);
function waitUntilCssLoads(link, callback) {
var called;
function executeCallback(...args) {
if (! called) {
called = true;
return callback(...args);
}
}
});
var waitUntilCssLoads = function (link, callback) {
var executeCallback = _.once(callback);
link.onload = function () {
knownToSupportCssOnLoad = true;
executeCallback();
};
if (! knownToSupportCssOnLoad) {
var id = Meteor.setInterval(function () {
if (link.sheet) {
@ -106,11 +126,11 @@ Autoupdate._retrySubscription = function () {
}
}, 50);
}
};
}
var removeOldLinks = _.after(newCss.length, function () {
_.each(oldLinks, function (oldLink) {
oldLink.parentNode.removeChild(oldLink);
var removeOldLinks = after(newCss.length, function () {
oldLinks.forEach(function (link) {
link.parentNode.removeChild(link);
});
});
@ -123,7 +143,7 @@ Autoupdate._retrySubscription = function () {
};
if (newCss.length !== 0) {
_.each(newCss, function (css) {
newCss.forEach(function (css) {
var newLink = document.createElement("link");
newLink.setAttribute("rel", "stylesheet");
newLink.setAttribute("type", "text/css");
@ -153,4 +173,4 @@ Autoupdate._retrySubscription = function () {
}
});
};
Autoupdate._retrySubscription();
Autoupdate._retrySubscription();

@ -1,6 +1,6 @@
Package.describe({
summary: "Update the client when new client code is available",
version: '1.3.12'
version: '1.4.0'
});
Package.onUse(function (api) {
@ -15,9 +15,9 @@ Package.onUse(function (api) {
], 'client');
api.use([
'ecmascript',
'ddp',
'mongo',
'ecmascript'
'mongo'
], ['client', 'server']);
api.use(['http', 'random'], 'web.cordova');
@ -27,4 +27,4 @@ Package.onUse(function (api) {
api.addFiles('autoupdate_cordova.js', 'web.cordova');
api.export('Autoupdate');
});
});

@ -37,8 +37,10 @@ Package.onUse(function(api) {
api.addFiles('server/v1/im.js', 'server');
api.addFiles('server/v1/integrations.js', 'server');
api.addFiles('server/v1/misc.js', 'server');
api.addFiles('server/v1/permissions.js', 'server');
api.addFiles('server/v1/push.js', 'server');
api.addFiles('server/v1/settings.js', 'server');
api.addFiles('server/v1/stats.js', 'server');
api.addFiles('server/v1/users.js', 'server');
api.addFiles('server/v1/spotlight.js', 'server');
});

@ -255,3 +255,23 @@ RocketChat.API.v1.addRoute('chat.update', { authRequired: true }, {
});
}
});
RocketChat.API.v1.addRoute('chat.react', { authRequired: true }, {
post() {
if (!this.bodyParams.messageId || !this.bodyParams.messageId.trim()) {
throw new Meteor.Error('error-messageid-param-not-provided', 'The required "messageId" param is missing.');
}
const msg = RocketChat.models.Messages.findOneById(this.bodyParams.messageId);
if (!msg) {
throw new Meteor.Error('error-message-not-found', 'The provided "messageId" does not match any existing message.');
}
const emoji = this.bodyParams.emoji;
Meteor.runAsUser(this.userId, () => Meteor.call('setReaction', emoji, msg._id));
return RocketChat.API.v1.success();
}
});

@ -0,0 +1,14 @@
/**
This API returns all permissions that exists
on the server, with respective roles.
Method: GET
Route: api/v1/permissions
*/
RocketChat.API.v1.addRoute('permissions', { authRequired: true }, {
get() {
const result = Meteor.runAsUser(this.userId, () => Meteor.call('permissions/get'));
return RocketChat.API.v1.success(result);
}
});

@ -0,0 +1,27 @@
/**
This API returns the result of a query of rooms
and users, using Meteor's Spotlight method.
Method: GET
Route: api/v1/spotlight
Query params:
- query: The term to be searched.
*/
RocketChat.API.v1.addRoute('spotlight', { authRequired: true }, {
get() {
check(this.queryParams, {
query: String
});
const { query } = this.queryParams;
const result = Meteor.runAsUser(this.userId, () =>
Meteor.call('spotlight', query, null, {
rooms: true,
users: true
})
);
return RocketChat.API.v1.success(result);
}
});

@ -1,335 +1,430 @@
import _ from 'underscore';
import Busboy from 'busboy';
RocketChat.API.v1.addRoute('users.create', { authRequired: true }, {
post() {
check(this.bodyParams, {
email: String,
name: String,
password: String,
username: String,
active: Match.Maybe(Boolean),
roles: Match.Maybe(Array),
joinDefaultChannels: Match.Maybe(Boolean),
requirePasswordChange: Match.Maybe(Boolean),
sendWelcomeEmail: Match.Maybe(Boolean),
verified: Match.Maybe(Boolean),
customFields: Match.Maybe(Object)
});
//New change made by pull request #5152
if (typeof this.bodyParams.joinDefaultChannels === 'undefined') {
this.bodyParams.joinDefaultChannels = true;
}
import _ from "underscore";
import Busboy from "busboy";
RocketChat.API.v1.addRoute(
"users.create",
{ authRequired: true },
{
post() {
check(this.bodyParams, {
email: String,
name: String,
password: String,
username: String,
active: Match.Maybe(Boolean),
roles: Match.Maybe(Array),
joinDefaultChannels: Match.Maybe(Boolean),
requirePasswordChange: Match.Maybe(Boolean),
sendWelcomeEmail: Match.Maybe(Boolean),
verified: Match.Maybe(Boolean),
customFields: Match.Maybe(Object)
});
if (this.bodyParams.customFields) {
RocketChat.validateCustomFields(this.bodyParams.customFields);
}
//New change made by pull request #5152
if (typeof this.bodyParams.joinDefaultChannels === "undefined") {
this.bodyParams.joinDefaultChannels = true;
}
const newUserId = RocketChat.saveUser(this.userId, this.bodyParams);
if (this.bodyParams.customFields) {
RocketChat.validateCustomFields(this.bodyParams.customFields);
}
if (this.bodyParams.customFields) {
RocketChat.saveCustomFieldsWithoutValidation(newUserId, this.bodyParams.customFields);
}
const newUserId = RocketChat.saveUser(this.userId, this.bodyParams);
if (this.bodyParams.customFields) {
RocketChat.saveCustomFieldsWithoutValidation(newUserId, this.bodyParams.customFields);
}
if (typeof this.bodyParams.active !== 'undefined') {
Meteor.runAsUser(this.userId, () => {
Meteor.call('setUserActiveStatus', newUserId, this.bodyParams.active);
if (typeof this.bodyParams.active !== "undefined") {
Meteor.runAsUser(this.userId, () => {
Meteor.call("setUserActiveStatus", newUserId, this.bodyParams.active);
});
}
return RocketChat.API.v1.success({
user: RocketChat.models.Users.findOneById(newUserId, { fields: RocketChat.API.v1.defaultFieldsToExclude })
});
}
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(newUserId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) });
}
});
RocketChat.API.v1.addRoute('users.delete', { authRequired: true }, {
post() {
if (!RocketChat.authz.hasPermission(this.userId, 'delete-user')) {
return RocketChat.API.v1.unauthorized();
}
);
RocketChat.API.v1.addRoute(
"users.delete",
{ authRequired: true },
{
post() {
if (!RocketChat.authz.hasPermission(this.userId, "delete-user")) {
return RocketChat.API.v1.unauthorized();
}
const user = this.getUserFromParams();
const user = this.getUserFromParams();
Meteor.runAsUser(this.userId, () => {
Meteor.call('deleteUser', user._id);
});
Meteor.runAsUser(this.userId, () => {
Meteor.call("deleteUser", user._id);
});
return RocketChat.API.v1.success();
return RocketChat.API.v1.success();
}
}
});
RocketChat.API.v1.addRoute('users.getAvatar', { authRequired: false }, {
get() {
const user = this.getUserFromParams();
const url = RocketChat.getURL(`/avatar/${ user.username }`, { cdn: false, full: true });
this.response.setHeader('Location', url);
return {
statusCode: 307,
body: url
};
);
RocketChat.API.v1.addRoute(
"users.getAvatar",
{ authRequired: false },
{
get() {
const user = this.getUserFromParams();
const url = RocketChat.getURL(`/avatar/${user.username}`, { cdn: false, full: true });
this.response.setHeader("Location", url);
return {
statusCode: 307,
body: url
};
}
}
});
);
RocketChat.API.v1.addRoute(
"users.getPresence",
{ authRequired: true },
{
get() {
if (this.isUserFromParams()) {
const user = RocketChat.models.Users.findOneById(this.userId);
return RocketChat.API.v1.success({
presence: user.status,
connectionStatus: user.statusConnection,
lastLogin: user.lastLogin
});
}
const user = this.getUserFromParams();
RocketChat.API.v1.addRoute('users.getPresence', { authRequired: true }, {
get() {
if (this.isUserFromParams()) {
const user = RocketChat.models.Users.findOneById(this.userId);
return RocketChat.API.v1.success({
presence: user.status,
connectionStatus: user.statusConnection,
lastLogin: user.lastLogin
presence: user.status
});
}
const user = this.getUserFromParams();
return RocketChat.API.v1.success({
presence: user.status
});
}
});
);
RocketChat.API.v1.addRoute('users.info', { authRequired: true }, {
get() {
const user = this.getUserFromParams();
RocketChat.API.v1.addRoute(
"users.info",
{ authRequired: true },
{
get() {
const user = this.getUserFromParams();
let result;
Meteor.runAsUser(this.userId, () => {
result = Meteor.call('getFullUserData', { filter: user.username, limit: 1 });
});
let result;
Meteor.runAsUser(this.userId, () => {
result = Meteor.call("getFullUserData", { filter: user.username, limit: 1 });
});
if (!result || result.length !== 1) {
return RocketChat.API.v1.failure(`Failed to get the user data for the userId of "${ user._id }".`);
}
if (!result || result.length !== 1) {
return RocketChat.API.v1.failure(`Failed to get the user data for the userId of "${user._id}".`);
}
return RocketChat.API.v1.success({
user: result[0]
});
return RocketChat.API.v1.success({
user: result[0]
});
}
}
});
);
RocketChat.API.v1.addRoute(
"users.list",
{ authRequired: true },
{
get() {
if (!RocketChat.authz.hasPermission(this.userId, "view-d-room")) {
return RocketChat.API.v1.unauthorized();
}
RocketChat.API.v1.addRoute('users.list', { authRequired: true }, {
get() {
if (!RocketChat.authz.hasPermission(this.userId, 'view-d-room')) {
return RocketChat.API.v1.unauthorized();
}
const { offset, count } = this.getPaginationItems();
const { sort, fields, query } = this.parseJsonQuery();
const { offset, count } = this.getPaginationItems();
const { sort, fields, query } = this.parseJsonQuery();
const users = RocketChat.models.Users.find(query, {
sort: sort ? sort : { username: 1 },
skip: offset,
limit: count,
fields
}).fetch();
return RocketChat.API.v1.success({
users,
count: users.length,
offset,
total: RocketChat.models.Users.find(query).count()
});
}
});
const users = RocketChat.models.Users.find(query, {
sort: sort ? sort : { username: 1 },
skip: offset,
limit: count,
fields
}).fetch();
RocketChat.API.v1.addRoute('users.register', { authRequired: false }, {
post() {
if (this.userId) {
return RocketChat.API.v1.failure('Logged in users can not register again.');
return RocketChat.API.v1.success({
users,
count: users.length,
offset,
total: RocketChat.models.Users.find(query).count()
});
}
}
);
RocketChat.API.v1.addRoute(
"users.register",
{ authRequired: false },
{
post() {
if (this.userId) {
return RocketChat.API.v1.failure("Logged in users can not register again.");
}
//We set their username here, so require it
//The `registerUser` checks for the other requirements
check(this.bodyParams, Match.ObjectIncluding({
username: String
}));
//We set their username here, so require it
//The `registerUser` checks for the other requirements
check(
this.bodyParams,
Match.ObjectIncluding({
username: String
})
);
//Register the user
const userId = Meteor.call('registerUser', this.bodyParams);
//Register the user
const userId = Meteor.call("registerUser", this.bodyParams);
//Now set their username
Meteor.runAsUser(userId, () => Meteor.call('setUsername', this.bodyParams.username));
//Now set their username
Meteor.runAsUser(userId, () => Meteor.call("setUsername", this.bodyParams.username));
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) });
}
});
RocketChat.API.v1.addRoute('users.resetAvatar', { authRequired: true }, {
post() {
const user = this.getUserFromParams();
if (user._id === this.userId) {
Meteor.runAsUser(this.userId, () => Meteor.call('resetAvatar'));
} else if (RocketChat.authz.hasPermission(this.userId, 'edit-other-user-info')) {
Meteor.runAsUser(user._id, () => Meteor.call('resetAvatar'));
} else {
return RocketChat.API.v1.unauthorized();
return RocketChat.API.v1.success({
user: RocketChat.models.Users.findOneById(userId, { fields: RocketChat.API.v1.defaultFieldsToExclude })
});
}
return RocketChat.API.v1.success();
}
});
RocketChat.API.v1.addRoute('users.setAvatar', { authRequired: true }, {
post() {
check(this.bodyParams, Match.ObjectIncluding({
avatarUrl: Match.Maybe(String),
userId: Match.Maybe(String),
username: Match.Maybe(String)
}));
let user;
if (this.isUserFromParams()) {
user = Meteor.users.findOne(this.userId);
} else if (RocketChat.authz.hasPermission(this.userId, 'edit-other-user-info')) {
user = this.getUserFromParams();
} else {
return RocketChat.API.v1.unauthorized();
}
);
RocketChat.API.v1.addRoute(
"users.resetAvatar",
{ authRequired: true },
{
post() {
const user = this.getUserFromParams();
if (user._id === this.userId) {
Meteor.runAsUser(this.userId, () => Meteor.call("resetAvatar"));
} else if (RocketChat.authz.hasPermission(this.userId, "edit-other-user-info")) {
Meteor.runAsUser(user._id, () => Meteor.call("resetAvatar"));
} else {
return RocketChat.API.v1.unauthorized();
}
Meteor.runAsUser(user._id, () => {
if (this.bodyParams.avatarUrl) {
RocketChat.setUserAvatar(user, this.bodyParams.avatarUrl, '', 'url');
return RocketChat.API.v1.success();
}
}
);
RocketChat.API.v1.addRoute(
"users.setAvatar",
{ authRequired: true },
{
post() {
check(
this.bodyParams,
Match.ObjectIncluding({
avatarUrl: Match.Maybe(String),
userId: Match.Maybe(String),
username: Match.Maybe(String)
})
);
let user;
if (this.isUserFromParams()) {
user = Meteor.users.findOne(this.userId);
} else if (RocketChat.authz.hasPermission(this.userId, "edit-other-user-info")) {
user = this.getUserFromParams();
} else {
const busboy = new Busboy({ headers: this.request.headers });
Meteor.wrapAsync((callback) => {
busboy.on('file', Meteor.bindEnvironment((fieldname, file, filename, encoding, mimetype) => {
if (fieldname !== 'image') {
return callback(new Meteor.Error('invalid-field'));
}
const imageData = [];
file.on('data', Meteor.bindEnvironment((data) => {
imageData.push(data);
}));
file.on('end', Meteor.bindEnvironment(() => {
RocketChat.setUserAvatar(user, Buffer.concat(imageData), mimetype, 'rest');
callback();
}));
}));
this.request.pipe(busboy);
})();
return RocketChat.API.v1.unauthorized();
}
});
return RocketChat.API.v1.success();
Meteor.runAsUser(user._id, () => {
if (this.bodyParams.avatarUrl) {
RocketChat.setUserAvatar(user, this.bodyParams.avatarUrl, "", "url");
} else {
const busboy = new Busboy({ headers: this.request.headers });
Meteor.wrapAsync(callback => {
busboy.on(
"file",
Meteor.bindEnvironment((fieldname, file, filename, encoding, mimetype) => {
if (fieldname !== "image") {
return callback(new Meteor.Error("invalid-field"));
}
const imageData = [];
file.on(
"data",
Meteor.bindEnvironment(data => {
imageData.push(data);
})
);
file.on(
"end",
Meteor.bindEnvironment(() => {
RocketChat.setUserAvatar(user, Buffer.concat(imageData), mimetype, "rest");
callback();
})
);
})
);
this.request.pipe(busboy);
})();
}
});
return RocketChat.API.v1.success();
}
}
});
RocketChat.API.v1.addRoute('users.update', { authRequired: true }, {
post() {
check(this.bodyParams, {
userId: String,
data: Match.ObjectIncluding({
email: Match.Maybe(String),
name: Match.Maybe(String),
password: Match.Maybe(String),
username: Match.Maybe(String),
active: Match.Maybe(Boolean),
roles: Match.Maybe(Array),
joinDefaultChannels: Match.Maybe(Boolean),
requirePasswordChange: Match.Maybe(Boolean),
sendWelcomeEmail: Match.Maybe(Boolean),
verified: Match.Maybe(Boolean),
customFields: Match.Maybe(Object)
})
});
);
RocketChat.API.v1.addRoute(
"users.update",
{ authRequired: true },
{
post() {
check(this.bodyParams, {
userId: String,
data: Match.ObjectIncluding({
email: Match.Maybe(String),
name: Match.Maybe(String),
password: Match.Maybe(String),
username: Match.Maybe(String),
active: Match.Maybe(Boolean),
roles: Match.Maybe(Array),
joinDefaultChannels: Match.Maybe(Boolean),
requirePasswordChange: Match.Maybe(Boolean),
sendWelcomeEmail: Match.Maybe(Boolean),
verified: Match.Maybe(Boolean),
customFields: Match.Maybe(Object)
})
});
const userData = _.extend({ _id: this.bodyParams.userId }, this.bodyParams.data);
const userData = _.extend({ _id: this.bodyParams.userId }, this.bodyParams.data);
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, userData));
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, userData));
if (this.bodyParams.data.customFields) {
RocketChat.saveCustomFields(this.bodyParams.userId, this.bodyParams.data.customFields);
}
if (this.bodyParams.data.customFields) {
RocketChat.saveCustomFields(this.bodyParams.userId, this.bodyParams.data.customFields);
}
if (typeof this.bodyParams.data.active !== 'undefined') {
if (typeof this.bodyParams.data.active !== "undefined") {
Meteor.runAsUser(this.userId, () => {
Meteor.call("setUserActiveStatus", this.bodyParams.userId, this.bodyParams.data.active);
});
}
return RocketChat.API.v1.success({
user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: RocketChat.API.v1.defaultFieldsToExclude })
});
}
}
);
RocketChat.API.v1.addRoute(
"users.createToken",
{ authRequired: true },
{
post() {
const user = this.getUserFromParams();
let data;
Meteor.runAsUser(this.userId, () => {
Meteor.call('setUserActiveStatus', this.bodyParams.userId, this.bodyParams.data.active);
data = Meteor.call("createToken", user._id);
});
return data ? RocketChat.API.v1.success({ data }) : RocketChat.API.v1.unauthorized();
}
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) });
}
});
RocketChat.API.v1.addRoute('users.createToken', { authRequired: true }, {
post() {
const user = this.getUserFromParams();
let data;
Meteor.runAsUser(this.userId, () => {
data = Meteor.call('createToken', user._id);
});
return data ? RocketChat.API.v1.success({data}) : RocketChat.API.v1.unauthorized();
);
RocketChat.API.v1.addRoute(
"users.getPreferences",
{ authRequired: true },
{
get() {
const user = this.isUserFromParams() ? RocketChat.models.Users.findOneById(this.userId) : this.getUserFromParams();
if (user.settings) {
const preferences = user.settings.preferences;
preferences["language"] = user.language;
return RocketChat.API.v1.success({
preferences
});
} else {
return RocketChat.API.v1.failure(TAPi18n.__("Accounts_Default_User_Preferences").toUpperCase());
}
}
}
});
);
RocketChat.API.v1.addRoute(
"users.setPreferences",
{ authRequired: true },
{
post() {
check(this.bodyParams, {
userId: String,
data: Match.ObjectIncluding({
newRoomNotification: Match.Maybe(String),
newMessageNotification: Match.Maybe(String),
useEmojis: Match.Maybe(Boolean),
convertAsciiEmoji: Match.Maybe(Boolean),
saveMobileBandwidth: Match.Maybe(Boolean),
collapseMediaByDefault: Match.Maybe(Boolean),
autoImageLoad: Match.Maybe(Boolean),
emailNotificationMode: Match.Maybe(String),
roomsListExhibitionMode: Match.Maybe(String),
unreadAlert: Match.Maybe(Boolean),
notificationsSoundVolume: Match.Maybe(Number),
desktopNotifications: Match.Maybe(String),
mobileNotifications: Match.Maybe(String),
enableAutoAway: Match.Maybe(Boolean),
highlights: Match.Maybe(Array),
desktopNotificationDuration: Match.Maybe(Number),
viewMode: Match.Maybe(Number),
hideUsernames: Match.Maybe(Boolean),
hideRoles: Match.Maybe(Boolean),
hideAvatars: Match.Maybe(Boolean),
hideFlexTab: Match.Maybe(Boolean),
sendOnEnter: Match.Maybe(String),
roomCounterSidebar: Match.Maybe(Boolean),
language: Match.Maybe(String)
})
});
RocketChat.API.v1.addRoute('users.getPreferences', { authRequired: true }, {
get() {
const user = this.isUserFromParams() ? RocketChat.models.Users.findOneById(this.userId) : this.getUserFromParams();
if (user.settings) {
const preferences = user.settings.preferences;
preferences['language'] = user.language;
let preferences;
if (this.bodyParams.data.language) {
const language = this.bodyParams.data.language;
delete this.bodyParams.data.language;
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }, language });
} else {
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data } });
}
return RocketChat.API.v1.success({
preferences
});
} else {
return RocketChat.API.v1.failure(TAPi18n.__('Accounts_Default_User_Preferences').toUpperCase());
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, preferences));
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: preferences }) });
}
}
});
RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, {
post() {
check(this.bodyParams, {
userId: String,
data: Match.ObjectIncluding({
newRoomNotification: Match.Maybe(String),
newMessageNotification: Match.Maybe(String),
useEmojis: Match.Maybe(Boolean),
convertAsciiEmoji: Match.Maybe(Boolean),
saveMobileBandwidth: Match.Maybe(Boolean),
collapseMediaByDefault: Match.Maybe(Boolean),
autoImageLoad: Match.Maybe(Boolean),
emailNotificationMode: Match.Maybe(String),
roomsListExhibitionMode: Match.Maybe(String),
unreadAlert: Match.Maybe(Boolean),
notificationsSoundVolume: Match.Maybe(Number),
desktopNotifications: Match.Maybe(String),
mobileNotifications: Match.Maybe(String),
enableAutoAway: Match.Maybe(Boolean),
highlights: Match.Maybe(Array),
desktopNotificationDuration: Match.Maybe(Number),
viewMode: Match.Maybe(Number),
hideUsernames: Match.Maybe(Boolean),
hideRoles: Match.Maybe(Boolean),
hideAvatars: Match.Maybe(Boolean),
hideFlexTab: Match.Maybe(Boolean),
sendOnEnter: Match.Maybe(String),
roomCounterSidebar: Match.Maybe(Boolean),
language: Match.Maybe(String)
})
});
let preferences;
if (this.bodyParams.data.language) {
const language = this.bodyParams.data.language;
delete this.bodyParams.data.language;
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }, language });
} else {
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }});
}
);
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, preferences));
/**
This API returns the logged user roles.
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: preferences }) });
Method: GET
Route: api/v1/user.roles
*/
RocketChat.API.v1.addRoute(
"user.roles",
{ authRequired: true },
{
get() {
let currentUserRoles = {};
const result = Meteor.runAsUser(this.userId, () => Meteor.call("getUserRoles"));
if (Array.isArray(result) && result.length > 0) {
currentUserRoles = result[0];
}
return RocketChat.API.v1.success(currentUserRoles);
}
}
});
);

@ -1300,6 +1300,7 @@
"Mute_all_notifications": "Mute all notifications",
"mute-user": "Mute User",
"mute-user_description": "Permission to mute other users in the same channel",
"Mute_Focused_Conversations": "Mute Focused Conversations",
"Mute_someone_in_room": "Mute someone in the room",
"Mute_user": "Mute user",
"Muted": "Muted",

@ -5,8 +5,7 @@
"requires": true,
"dependencies": {
"katex": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz",
"version": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz",
"integrity": "sha1-BrtSmO+tBeHnIoA1uo4VkfMGG48=",
"requires": {
"match-at": "0.1.1"

@ -402,6 +402,11 @@ RocketChat.settings.addGroup('Accounts', function() {
'public': true,
i18nLabel: 'New_Message_Notification'
});
this.add('Accounts_Default_User_Preferences_muteFocusedConversations', true, {
type: 'boolean',
'public': true,
i18nLabel: 'Mute_Focused_Conversations'
});
this.add('Accounts_Default_User_Preferences_notificationsSoundVolume', 100, {
type: 'int',
'public': true,

@ -4,22 +4,22 @@
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor@1.8.0
webapp@1.4.0
meteor@1.8.2
webapp@1.5.0
logging@1.1.19
tracker@1.1.3
deps@1.0.12
session@1.1.7
ddp@1.4.0
livedata@1.0.18
mongo@1.3.1
mongo@1.4.2
blaze
ui
spacebars
templating
check@1.2.5
check@1.3.0
jquery@1.11.10
random@1.0.10
random@1.1.0
ejson@1.1.0
rocketchat:streamer
kadira:flow-router
@ -32,11 +32,11 @@ reactive-var@1.0.11
accounts-password@1.5.0
tap:i18n
smoral:sweetalert
ecmascript@0.9.0
es5-shim@4.6.15
standard-minifier-css@1.3.5
standard-minifier-js@2.2.0
shell-server@0.3.0
dynamic-import@0.2.0
ecmascript@0.10.0
es5-shim@4.7.0
standard-minifier-css@1.4.0
standard-minifier-js@2.3.1
shell-server@0.3.1
dynamic-import@0.3.0
konecty:user-presence

@ -2,86 +2,89 @@ accounts-base@1.4.2
accounts-password@1.5.0
aldeed:simple-schema@1.5.3
allow-deny@1.1.0
babel-compiler@6.24.7
babel-runtime@1.1.1
base64@1.0.10
babel-compiler@7.0.4
babel-runtime@1.2.2
base64@1.0.11
binary-heap@1.0.10
blaze@2.3.2
blaze-tools@1.0.10
boilerplate-generator@1.3.1
caching-compiler@1.1.9
boilerplate-generator@1.4.0
caching-compiler@1.1.11
caching-html-compiler@1.1.2
callback-hook@1.0.10
callback-hook@1.1.0
cfs:http-methods@0.0.32
check@1.2.5
coffeescript@1.12.7_3
coffeescript-compiler@1.12.7_3
check@1.3.0
coffeescript@1.0.17
ddp@1.4.0
ddp-client@2.2.0
ddp-common@1.3.0
ddp-client@2.3.1
ddp-common@1.4.0
ddp-rate-limiter@1.0.7
ddp-server@2.1.1
ddp-server@2.1.2
deps@1.0.12
diff-sequence@1.0.7
dynamic-import@0.2.1
ecmascript@0.9.0
diff-sequence@1.1.0
dynamic-import@0.3.0
ecmascript@0.10.4
ecmascript-runtime@0.5.0
ecmascript-runtime-client@0.5.0
ecmascript-runtime-client@0.6.2
ecmascript-runtime-server@0.5.0
ejson@1.1.0
email@1.2.3
es5-shim@4.6.15
es5-shim@4.7.3
geojson-utils@1.0.10
html-tools@1.0.11
htmljs@1.0.11
http@1.3.0
id-map@1.0.9
jquery@1.11.10
http@1.4.0
id-map@1.1.0
jquery@1.11.11
kadira:blaze-layout@2.3.0
kadira:flow-router@2.12.1
konecty:nrr@2.0.2
konecty:user-presence@2.0.1
less@2.7.11
less@2.7.12
livedata@1.0.18
localstorage@1.2.0
logging@1.1.19
mdg:validation-error@0.5.1
meteor@1.8.2
meteorspark:util@0.2.0
minifier-css@1.2.16
minifier-js@2.2.2
minifier-css@1.3.1
minifier-js@2.3.2
minimongo@1.4.3
mizzao:timesync@0.5.0
modules@0.11.2
modules-runtime@0.9.1
modules@0.11.4
modules-runtime@0.9.2
momentjs:moment@2.20.1
mongo@1.3.1
mongo@1.4.3
mongo-dev-server@1.1.0
mongo-id@1.0.6
nooitaf:colors@1.1.2_1
npm-bcrypt@0.9.3
npm-mongo@2.2.33
npm-mongo@2.2.34
observe-sequence@1.0.16
ordered-dict@1.0.9
promise@0.10.1
ordered-dict@1.1.0
promise@0.10.2
raix:eventemitter@0.1.3
random@1.0.10
rate-limit@1.0.8
random@1.1.0
rate-limit@1.0.9
reactive-dict@1.2.0
reactive-var@1.0.11
retry@1.0.9
reload@1.2.0
retry@1.1.0
rocketchat:streamer@0.6.1
routepolicy@1.0.12
server-render@0.3.0
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.3.1
shim-common@0.1.0
smoral:sweetalert@1.1.1
socket-stream-client@0.1.0
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.10
standard-minifier-css@1.3.5
standard-minifier-js@2.2.3
standard-minifier-css@1.4.1
standard-minifier-js@2.3.2
tap:i18n@1.8.2
templating@1.3.2
templating-compiler@1.3.3
@ -90,6 +93,6 @@ templating-tools@1.1.2
tracker@1.1.3
ui@1.0.13
underscore@1.0.10
url@1.1.0
webapp@1.4.0
url@1.2.0
webapp@1.5.0
webapp-hashing@1.0.9

@ -20,11 +20,11 @@
"email": "support@rocket.chat"
},
"dependencies": {
"autolinker": "^1.6.0",
"jquery": "^3.2.1",
"babel-runtime": "^6.26.0",
"@babel/runtime": "^7.0.0-beta.40",
"autolinker": "^1.6.2",
"bcrypt": "^1.0.3",
"core-js": "^2.5.3",
"jquery": "^3.3.1",
"moment": "^2.20.1",
"toastr": "^2.1.4",
"underscore": "^1.8.3",

@ -1,4 +0,0 @@
{
"Additional_Feedback": "Bykomende terugvoer",
"No": "Nee"
}

@ -1,3 +0,0 @@
{
"Additional_Feedback": "Нэмэлт санал хүсэлт"
}

@ -1,4 +0,0 @@
{
"Additional_Feedback": "Dodatne povratne informacije",
"Appearance": "Videz"
}

@ -1,46 +0,0 @@
{
"Additional_Feedback": "ความคดเหนเพมเตม",
"Appearance": "ลกษณะภายนอก",
"Are_you_sure_do_you_want_end_this_chat": "คณตองการทจะจบการสนทนาไชหรอไม",
"Are_you_sure_do_you_want_end_this_chat_and_switch_department": "คณตองการทจะจบการสนทนาและเปลยนแผนกไชหรอไม",
"Cancel": "ยกเลก",
"Change": "เปลยน",
"Chat_ended": "การสนทนาจบสนแลว!",
"Choose_a_new_department": "เลอกแผนกใหม",
"Close_menu": "ปดตวเลอก",
"Conversation_finished": "การสนทนาเสรจสนแลว",
"End_chat": "จบการสนทนา",
"How_friendly_was_the_chat_agent": "Chat agent เปนมตรแคไหน?",
"How_knowledgeable_was_the_chat_agent": "Chat agent มความฉลาดแคไหน?",
"How_responsive_was_the_chat_agent": "Chat agent ตอบสนองดแคไหน?",
"How_satisfied_were_you_with_this_chat": "คณพงพอใจใน Chat นแคไหน?",
"Installation": "การตดตง",
"New_messages": "ขอความใหม",
"No": "ไม",
"Options": "ตวเลอก",
"Please_answer_survey": "กรณาสละเวลาตอบแบบสอบถามเกยวกบ Chat น",
"Please_choose_a_department": "กรณาเลอกแผนก",
"Please_fill_name_and_email": "กรณากรอกชอและอเมล",
"Powered_by": "ถกสรางโดย",
"Request_video_chat": "รองขอการสนทนาแบบวโอ",
"Select_a_department": "เลอกแผนก",
"Switch_department": "เปลยนแผนก",
"Department_switched": "แผนกถกเปลยนแลว",
"Send": "สง",
"Skip": "ขาม",
"Start_Chat": "เรมการสนทนา",
"Survey": "แบบสอบถาม",
"Survey_instructions": "ใหคะแนนคำถามตามความพอใจ, 1 แปลวาไมพอใจอยางมากและ 5 แปลวาพอใจอยางทด",
"Thank_you_for_your_feedback": "ขอบคณสำหรบความคดเหน",
"Thanks_We_ll_get_back_to_you_soon": "ขอบคณ! เราจะตดตอกลบโดยเรว",
"transcript_sent": "สำเนาถกสงแลว",
"Type_your_email": "พมอเมลของคณ",
"Type_your_message": "พมขอความของคณ",
"Type_your_name": "พมชอของคณ",
"User_joined": "ผใชงานเขารวมแลว",
"User_left": "ผใชงานออกแลว",
"We_are_offline_Sorry_for_the_inconvenience": "เรากำลงออฟไลน ขออภยในความไมสะดวก",
"Yes": "ไช",
"You": "คณ",
"You_must_complete_all_fields": "คณตองกรอกขอมลทกชอง"
}

@ -1,46 +0,0 @@
{
"Additional_Feedback": "Phản hồi bổ sung",
"Appearance": "Kiểu hiển thị",
"Are_you_sure_do_you_want_end_this_chat": "Bạn có chắc muốn kết thúc cuộc nói chuyện này?",
"Are_you_sure_do_you_want_end_this_chat_and_switch_department": "Bạn muốn kết thúc cuộc nói chuyện này và chuyển sang bộ phận khác?",
"Cancel": "Hủy",
"Change": "Thay đổi",
"Chat_ended": "Cuộc nói chuyện đã kết thúc!",
"Choose_a_new_department": "Chọn bộ phận mới",
"Close_menu": "Đóng",
"Conversation_finished": "Cuộc hội thoại đã kết thúc",
"End_chat": "Kết thúc nói chuyện",
"How_friendly_was_the_chat_agent": "Độ thân thiện của nhân viên hỗ trợ như thế nào?",
"How_knowledgeable_was_the_chat_agent": "Độ hiểu biết của nhân viên hỗ trợ như thế nào?",
"How_responsive_was_the_chat_agent": "Phản hồi của nhân viên tư vấn như thế nào?",
"How_satisfied_were_you_with_this_chat": "Mức độ thỏa mãn của bạn với cuộc nói chuyện vừa xong?",
"Installation": "Cài đặt",
"New_messages": "Tin nhắn mới",
"No": "Không",
"Options": "Tùy chọn",
"Please_answer_survey": "Vui lòng dành ít thời gian để trả lời một khảo sát ngắn về cuộc nói chuyện vừa xong",
"Please_choose_a_department": "Vui lòng chọn bộ phận",
"Please_fill_name_and_email": "Vui lòng nhập tên và email",
"Powered_by": "Được hỗ trợ bởi",
"Request_video_chat": "Yêu cầu đàm thoại video",
"Select_a_department": "Chọn một bộ phận",
"Switch_department": "Chuyển bộ phận",
"Department_switched": "Bộ phận đã chuyển",
"Send": "Gửi",
"Skip": "Bỏ qua",
"Start_Chat": "Bắt đầu trò chuyện",
"Survey": "Khảo sát",
"Survey_instructions": "Đánh giá mức độ hài lòng cho mỗi câu hỏi, 1 tức là hoàn toàn thất vọng và 5 tức là tuyệt đối hài lòng",
"Thank_you_for_your_feedback": "Cảm ơn sự phản hồi của bạn",
"Thanks_We_ll_get_back_to_you_soon": "Xin cảm ơn! Chúng tôi sẽ phản hồi bạn sớm.",
"transcript_sent": "Bản dịch đã được gửi",
"Type_your_email": "Gõ email của bạn",
"Type_your_message": "Gõ tin nhắn của bạn",
"Type_your_name": "Gõ tên của bạn",
"User_joined": "Người dùng đã tham gia",
"User_left": "Người dùng rời đi",
"We_are_offline_Sorry_for_the_inconvenience": "Chúng tôi đang offline. Rất tiếc vì sự bất tiện này.",
"Yes": "Có",
"You": "Bạn",
"You_must_complete_all_fields": "Bạn phải điền hết các ô"
}

@ -1,879 +0,0 @@
{
"name": "rocketchat-livechat",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"ajv": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
"integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
"requires": {
"co": "4.6.0",
"fast-deep-equal": "1.0.0",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo="
},
"are-we-there-yet": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
"integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
"requires": {
"delegates": "1.0.0",
"readable-stream": "2.3.3"
}
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"autolinker": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-1.6.0.tgz",
"integrity": "sha1-utN2t62OQV8i8QL8Dzf2QOZPHL8="
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"core-js": "2.5.1",
"regenerator-runtime": "0.11.0"
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"bcrypt": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-1.0.3.tgz",
"integrity": "sha1-sC3cbAtS6ha40883XVoy54DatUg=",
"requires": {
"nan": "2.6.2",
"node-pre-gyp": "0.6.36"
}
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"optional": true,
"requires": {
"tweetnacl": "0.14.5"
}
},
"block-stream": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"requires": {
"inherits": "2.0.3"
}
},
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
"requires": {
"hoek": "4.2.0"
}
},
"brace-expansion": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
"integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"requires": {
"delayed-stream": "1.0.0"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"core-js": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
"integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"requires": {
"boom": "5.2.0"
},
"dependencies": {
"boom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=",
"requires": {
"hoek": "4.2.0"
}
}
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "1.0.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"deep-extend": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
"integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"ecc-jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
"jsbn": "0.1.1"
}
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
"integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.5",
"mime-types": "2.1.17"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"requires": {
"graceful-fs": "4.1.11",
"inherits": "2.0.3",
"mkdirp": "0.5.1",
"rimraf": "2.6.2"
}
},
"fstream-ignore": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
"integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
"requires": {
"fstream": "1.0.11",
"inherits": "2.0.3",
"minimatch": "3.0.4"
}
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
"aproba": "1.2.0",
"console-control-strings": "1.1.0",
"has-unicode": "2.0.1",
"object-assign": "4.1.1",
"signal-exit": "3.0.2",
"string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"strip-ansi": "3.0.1",
"wide-align": "1.1.2"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "1.0.0"
}
},
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"requires": {
"ajv": "5.3.0",
"har-schema": "2.0.0"
}
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"hawk": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
"integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=",
"requires": {
"boom": "4.3.1",
"cryptiles": "3.1.2",
"hoek": "4.2.0",
"sntp": "2.1.0"
}
},
"hoek": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
"integrity": "sha1-ctnQdU9/4lyi0BrY+PmpRJqJUm0="
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.13.1"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ini": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
"integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4="
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "1.0.1"
}
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"jquery": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz",
"integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c="
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"optional": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
},
"mime-types": {
"version": "2.1.17",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
"requires": {
"mime-db": "1.30.0"
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"requires": {
"brace-expansion": "1.1.8"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"moment": {
"version": "2.20.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz",
"integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg=="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"nan": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
"integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U="
},
"node-pre-gyp": {
"version": "0.6.36",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz",
"integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=",
"requires": {
"mkdirp": "0.5.1",
"nopt": "4.0.1",
"npmlog": "4.1.2",
"rc": "1.2.2",
"request": "2.83.0",
"rimraf": "2.6.2",
"semver": "5.4.1",
"tar": "2.2.1",
"tar-pack": "3.4.1"
}
},
"nopt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"requires": {
"abbrev": "1.1.1",
"osenv": "0.1.4"
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
"requires": {
"are-we-there-yet": "1.1.4",
"console-control-strings": "1.1.0",
"gauge": "2.7.4",
"set-blocking": "2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1.0.2"
}
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
"integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
"requires": {
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"process-nextick-args": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg="
},
"rc": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
"integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
"requires": {
"deep-extend": "0.4.2",
"ini": "1.3.4",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
}
}
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=",
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"util-deprecate": "1.0.2"
}
},
"regenerator-runtime": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
"integrity": "sha1-flT+W1zNXWYk6mJVw0c74JC4AuE="
},
"request": {
"version": "2.83.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.3.1",
"har-validator": "5.0.3",
"hawk": "6.0.2",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"performance-now": "2.1.0",
"qs": "6.5.1",
"safe-buffer": "5.1.1",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.1.0"
}
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
"requires": {
"glob": "7.1.2"
}
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
},
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
"integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4="
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"sntp": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
"requires": {
"hoek": "4.2.0"
}
},
"sprintf-js": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz",
"integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw="
},
"sshpk": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
"requires": {
"asn1": "0.2.3",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.1",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.1",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"tweetnacl": "0.14.5"
}
},
"string-width": {
"version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
"requires": {
"safe-buffer": "5.1.1"
}
},
"string_decoder": {
"version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
"requires": {
"safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"requires": {
"block-stream": "0.0.9",
"fstream": "1.0.11",
"inherits": "2.0.3"
}
},
"tar-pack": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz",
"integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==",
"requires": {
"debug": "2.6.9",
"fstream": "1.0.11",
"fstream-ignore": "1.0.5",
"once": "1.4.0",
"readable-stream": "2.3.3",
"rimraf": "2.6.2",
"tar": "2.2.1",
"uid-number": "0.0.6"
}
},
"toastr": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz",
"integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=",
"requires": {
"jquery": "3.2.1"
}
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
"requires": {
"punycode": "1.4.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "5.1.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"optional": true
},
"uid-number": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
"integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE="
},
"underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
},
"underscore.string": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
"integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
"requires": {
"sprintf-js": "1.1.1",
"util-deprecate": "1.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
"integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ="
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
}
},
"wide-align": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
"integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=",
"requires": {
"string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}

@ -276,6 +276,13 @@
</select>
</div>
</div>
<div class="input-line double-col" id="muteFocusedConversations">
<label>{{_ "Mute_Focused_Conversations"}}</label>
<div>
<label><input type="radio" name="muteFocusedConversations" value="1" checked="{{checked 'muteFocusedConversations' true}}"/> {{_ "True"}}</label>
<label><input type="radio" name="muteFocusedConversations" value="0" checked="{{checked 'muteFocusedConversations' false}}"/> {{_ "False"}}</label>
</div>
</div>
<div class="input-line double-col">
<label>{{_ "Notifications_Sound_Volume"}}</label>
<div>

@ -29,6 +29,9 @@ Template.accountPreferences.helpers({
newRoomNotification() {
return RocketChat.getUserPreference(Meteor.user(), 'newRoomNotification');
},
muteFocusedConversations() {
return RocketChat.getUserPreference(Meteor.user(), 'muteFocusedConversations');
},
languages() {
const languages = TAPi18n.getLanguages();
@ -129,6 +132,7 @@ Template.accountPreferences.onCreated(function() {
data.newRoomNotification = $('select[name=newRoomNotification]').val();
data.newMessageNotification = $('select[name=newMessageNotification]').val();
data.muteFocusedConversations = $('#muteFocusedConversations').find('input:checked').val();
data.useEmojis = $('input[name=useEmojis]:checked').val();
data.convertAsciiEmoji = $('input[name=convertAsciiEmoji]:checked').val();
data.saveMobileBandwidth = $('input[name=saveMobileBandwidth]:checked').val();
@ -239,7 +243,7 @@ Template.accountPreferences.events({
}
if (audio) {
const $audio = $(`audio#${ audio }`);
return $audio && $audio[0] && $audio.play();
return $audio && $audio[0] && $audio[0].play();
}
}
});

@ -17,6 +17,10 @@ Meteor.methods({
preferences.newMessageNotification = settings.newMessageNotification;
}
if (settings.muteFocusedConversations) {
preferences.muteFocusedConversations = settings.muteFocusedConversations === '1' ? true : false;
}
if (settings.useEmojis) {
preferences.useEmojis = settings.useEmojis === '1' ? true : false;
}

@ -360,4 +360,21 @@ describe('[Users]', function() {
});
});
});
describe('[/user.roles]', () => {
it('should return id and name of user, and an array of roles', (done) => {
request.get(api('user.roles'))
.set(credentials)
.expect(200)
.expect('Content-Type', 'application/json')
.expect((res) => {
expect(res.body).to.have.property('username');
expect(res.body).to.have.property('roles').and.to.be.a('array');
expect(res.body).to.have.property('_id');
expect(res.body).to.have.property('success', true);
})
.end(done);
});
});
});

@ -168,4 +168,19 @@ describe('[Chat]', function() {
})
.end(done);
});
it('/chat.react', (done) => {
request.post(api('chat.react'))
.set(credentials)
.send({
emoji: 'smile',
messageId: message._id
})
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('success', true);
})
.end(done);
});
});

@ -0,0 +1,33 @@
/* eslint-env mocha */
/* globals expect */
import { getCredentials, api, request, credentials } from '../../data/api-data.js';
describe('[Permissions]', function() {
this.retries(0);
before(done => getCredentials(done));
describe('[/permissions]', () => {
it('should return all permissions that exists on the server, with respective roles', (done) => {
request.get(api('permissions'))
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.be.a('array');
const firstElement = res.body[0];
expect(firstElement).to.have.property('_id');
expect(firstElement).to.have.property('roles').and.to.be.a('array');
expect(firstElement).to.have.property('_updatedAt');
expect(firstElement).to.have.property('meta');
expect(firstElement.meta).to.have.property('revision');
expect(firstElement.meta).to.have.property('created');
expect(firstElement.meta).to.have.property('version');
expect(firstElement).to.have.property('$loki');
})
.end(done);
});
});
});

@ -0,0 +1,40 @@
/* eslint-env mocha */
/* globals expect */
import {getCredentials, api, request, credentials } from '../../data/api-data.js';
describe('[Spotlight]', function() {
this.retries(0);
before(done => getCredentials(done));
describe('[/spotlight]', () => {
it('should fail when does not have query param', (done) => {
request.get(api('spotlight'))
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(400)
.expect((res) => {
expect(res.body).to.have.property('success', false);
expect(res.body).to.have.property('error');
})
.end(done);
});
it('should return objects for a valid query param', (done) => {
request.get(api('spotlight'))
.query({
query: 'foobar'
})
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('success', true);
expect(res.body).to.have.property('users').that.have.lengthOf(0);
expect(res.body).to.have.property('rooms').that.have.lengthOf(0);
})
.end(done);
});
});
});

@ -211,6 +211,10 @@ class Administration extends Page {
get accountsNewMessageNotification() { return browser.element('[name="Accounts_Default_User_Preferences_newMessageNotification"]'); }
get accountsNewMessageNotificationReset() { return browser.element('.reset-setting[data-setting="Accounts_Default_User_Preferences_newMessageNotification"]'); }
get accountsMuteFocusedConversationsTrue() { return browser.element('label:nth-of-type(1) [name="Accounts_Default_User_Preferences_muteFocusedConversations"]'); }
get accountsMuteFocusedConversationsFalse() { return browser.element('label:nth-of-type(2) [name="Accounts_Default_User_Preferences_muteFocusedConversations"]'); }
get accountsMuteFocusedConversationsReset() { return browser.element('.reset-setting[data-setting="Accounts_Default_User_Preferences_muteFocusedConversations"]'); }
get accountsNotificationsSoundVolume() { return browser.element('[name="Accounts_Default_User_Preferences_notificationsSoundVolume"]'); }
get accountsNotificationsSoundVolumeReset() { return browser.element('.reset-setting[data-setting="Accounts_Default_User_Preferences_notificationsSoundVolume"]'); }

Loading…
Cancel
Save