Skip to content

Commit 3145408

Browse files
committed
fix(messages): validation check
1 parent c2cb0df commit 3145408

File tree

3 files changed

+71
-68
lines changed

3 files changed

+71
-68
lines changed

src/client/containers/Tickets/TicketsContainer.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ class TicketsContainer extends React.Component {
104104
}
105105

106106
onTicketUpdated (data) {
107-
console.log(data)
108107
this.props.ticketUpdated(data)
109108
}
110109

src/controllers/api/v1/messages.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414

1515
var async = require('async')
1616
var _ = require('lodash')
17-
var winston = require('winston')
17+
var winston = require('../../../logger')
1818
var ConversationSchema = require('../../../models/chat/conversation')
1919
var MessageSchema = require('../../../models/chat/message')
20+
var UserSchema = require('../../../models/user')
2021

2122
var apiMessages = {}
2223

@@ -191,22 +192,32 @@ apiMessages.send = function (req, res) {
191192
async.waterfall(
192193
[
193194
function (done) {
195+
ConversationSchema.findOne({ _id: cId }, function (err, convo) {
196+
if (err || !convo) return done('Invalid Conversation')
197+
198+
return done(null, convo)
199+
})
200+
},
201+
function (convo, done) {
194202
// Updated conversation to save UpdatedAt field.
195-
ConversationSchema.findOneAndUpdate({ _id: cId }, { updatedAt: new Date() }, { new: false }, function (
196-
err,
197-
convo
198-
) {
203+
convo.updatedAt = new Date()
204+
convo.save(function (err, savedConvo) {
199205
if (err) return done(err)
200-
if (convo === null || convo === undefined) {
201-
return done('Invalid Conversation: ' + convo)
202-
}
203-
return done(null, convo)
206+
207+
return done(null, savedConvo)
204208
})
205209
},
206210
function (convo, done) {
207-
var Message = new MessageSchema({
211+
UserSchema.findOne({ _id: owner }, function (err, user) {
212+
if (err || !user) return done('Invalid Conversation')
213+
214+
return done(null, user, convo)
215+
})
216+
},
217+
function (user, convo, done) {
218+
const Message = new MessageSchema({
208219
conversation: convo._id,
209-
owner: owner,
220+
owner: user._id,
210221
body: message
211222
})
212223

src/public/js/pages/messages.js

Lines changed: 49 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -23,41 +23,34 @@ define('pages/messages', [
2323
'history',
2424
'isinview'
2525
], function ($, _, angular, UIKit, moment, helpers) {
26-
var messagesPage = {}
26+
const messagesPage = {}
2727

2828
messagesPage.init = function (callback) {
2929
$(document).ready(function () {
30-
var $messageScroller = $('#message-content.scrollable')
31-
32-
var $messagesWrapper = $('#messages')
33-
34-
var $scrollspy = $('#conversation-scrollspy')
35-
36-
var $spinner = $scrollspy.find('i')
37-
38-
var $searchBox = $('.search-box').find('input')
39-
40-
var $nextPage = 2
41-
42-
var $enabled = true
43-
44-
var $loading = false
45-
30+
const $messageScroller = $('#message-content.scrollable')
31+
const $messagesWrapper = $('#messages')
32+
const $scrollspy = $('#conversation-scrollspy')
33+
const $spinner = $scrollspy.find('i')
34+
const $searchBox = $('.search-box').find('input')
35+
let $nextPage = 2
36+
let $enabled = true
37+
let $loading = false
4638
// $inview = null,
39+
const $recentMessages = {}
40+
const $convoId = $('#message-content[data-conversation-id]').attr('data-conversation-id')
41+
const $loggedInAccountId = window.trudeskSessionService.getUser()._id
4742

48-
var $recentMessages = {}
49-
50-
var $convoId = $('#message-content[data-conversation-id]').attr('data-conversation-id')
51-
52-
var $loggedInAccountId = window.trudeskSessionService.getUser()._id
43+
setTimeout(function () {
44+
$('script#preloader').remove()
45+
}, 1000)
5346

5447
// Setup Context Menu
5548
helpers.setupContextMenu('#convo-list > ul > li', function (action, target) {
56-
var $li = $(target)
49+
let $li = $(target)
5750
if (!$li.is('li')) {
5851
$li = $(target).parents('li')
5952
}
60-
var convoId = $li.attr('data-conversation-id')
53+
const convoId = $li.attr('data-conversation-id')
6154
if (action.toLowerCase() === 'delete') {
6255
UIKit.modal.confirm(
6356
'Are you sure you want to delete this conversation?',
@@ -87,7 +80,7 @@ define('pages/messages', [
8780

8881
// set active
8982
if ($convoId !== undefined) {
90-
var item = $('ul > li[data-conversation-id="' + $convoId + '"]')
83+
const item = $('ul > li[data-conversation-id="' + $convoId + '"]')
9184
item.addClass('active')
9285
}
9386

@@ -98,7 +91,7 @@ define('pages/messages', [
9891
.toLowerCase() === 'messages'
9992
) {
10093
$('.chat-box-position').each(function () {
101-
var self = $(this)
94+
const self = $(this)
10295
self.remove()
10396
})
10497

@@ -108,7 +101,7 @@ define('pages/messages', [
108101

109102
$messageScroller.scroll(function () {
110103
if ($scrollspy.isInView($messageScroller)) {
111-
var run = _.throttle(loadMoreMessages, 100)
104+
const run = _.throttle(loadMoreMessages, 100)
112105
run()
113106
}
114107
})
@@ -122,11 +115,11 @@ define('pages/messages', [
122115
success: function (response) {
123116
if (response.success) {
124117
// Check if on conversation
125-
var $convo = $('#message-content[data-conversation-id="' + response.conversation._id + '"]')
118+
const $convo = $('#message-content[data-conversation-id="' + response.conversation._id + '"]')
126119
if ($convo.length > 0) {
127120
History.pushState(null, null, '/messages', false)
128121
} else {
129-
var $convoLI = $('#convo-list').find('li[data-conversation-id="' + response.conversation._id + '"]')
122+
const $convoLI = $('#convo-list').find('li[data-conversation-id="' + response.conversation._id + '"]')
130123
if ($convoLI.length > 0) {
131124
$convoLI.remove()
132125
}
@@ -146,7 +139,7 @@ define('pages/messages', [
146139
}
147140

148141
function onSearchKeyUp () {
149-
var searchTerm = $searchBox.val().toLowerCase()
142+
const searchTerm = $searchBox.val().toLowerCase()
150143
$('.all-user-list li').each(function () {
151144
if ($(this).filter('[data-search-term *= ' + searchTerm + ']').length > 0 || searchTerm.length < 1) {
152145
$(this).show()
@@ -168,21 +161,21 @@ define('pages/messages', [
168161
})
169162
.done(function (data) {
170163
$spinner.addClass('uk-hidden')
171-
var messages = data.messages
164+
const messages = data.messages
172165
if (_.size(messages) < 1) {
173166
$enabled = false
174167
$loading = false
175168
return false
176169
}
177170

178-
var html = ''
171+
let html = ''
179172

180173
_.each(messages, function (m) {
181-
var h = buildMessageHTML(m)
174+
const h = buildMessageHTML(m)
182175
if (h.length > 0) html += h
183176
})
184177

185-
var stage = $('<div></div>')
178+
const stage = $('<div></div>')
186179
.appendTo('body')
187180
.addClass('stage')
188181
.css({
@@ -193,7 +186,7 @@ define('pages/messages', [
193186
left: '-9999em'
194187
})
195188
.append(html)
196-
var height = $(stage).outerHeight()
189+
const height = $(stage).outerHeight()
197190
$(stage).remove()
198191

199192
$messagesWrapper.prepend(html)
@@ -210,15 +203,15 @@ define('pages/messages', [
210203
}
211204

212205
function buildMessageHTML (message) {
213-
var html = ''
214-
var loggedInAccountId = window.trudeskSessionService.getUser()._id
206+
let html = ''
207+
const loggedInAccountId = window.trudeskSessionService.getUser()._id
215208
if (loggedInAccountId === undefined) return false
216-
var left = true
209+
let left = true
217210
if (message.owner._id.toString() === loggedInAccountId.toString()) {
218211
left = false
219212
}
220213

221-
var image = message.owner.image === undefined ? 'defaultProfile.jpg' : message.owner.image
214+
const image = message.owner.image === undefined ? 'defaultProfile.jpg' : message.owner.image
222215

223216
if (left) {
224217
html += '<div class="message message-left">'
@@ -259,80 +252,80 @@ define('pages/messages', [
259252

260253
// On user Typing
261254
$(window).on('$trudesk:chat:typing.conversation', function (event, data) {
262-
var convoListItem = $('#convo-list').find('li[data-conversation-id="' + data.cid + '"]')
255+
const convoListItem = $('#convo-list').find('li[data-conversation-id="' + data.cid + '"]')
263256
if (convoListItem.length > 0) {
264257
$recentMessages[data.cid] = convoListItem.find('.message-subject').text()
265258
convoListItem.find('.message-subject').text(data.fromUser.fullname + ' is typing...')
266259
}
267260
})
268261

269262
$(window).on('$trudesk:chat:stoptyping.conversation', function (event, data) {
270-
var convoListItem = $('#convo-list').find('li[data-conversation-id="' + data.cid + '"]')
263+
const convoListItem = $('#convo-list').find('li[data-conversation-id="' + data.cid + '"]')
271264
if (convoListItem.length > 0) {
272265
convoListItem.find('.message-subject').text($recentMessages[data.cid])
273266
}
274267
})
275268

276269
// On Chat Message
277270
$(window).on('$trudesk:chat:message.conversation', function (event, data) {
278-
var message = {
271+
const message = {
279272
_id: data.messageId,
280273
conversation: data.conversation,
281274
body: data.message,
282275
owner: data.fromUser
283276
}
284277

285-
var html = buildMessageHTML(message)
286-
var messageWrapper = $('#message-content[data-conversation-id="' + message.conversation + '"]')
278+
const html = buildMessageHTML(message)
279+
const messageWrapper = $('#message-content[data-conversation-id="' + message.conversation + '"]')
287280
if (messageWrapper.length > 0) {
288281
messageWrapper.find('#messages').append(html)
289282
}
290283

291-
var convoListItem = $('li[data-conversation-id="' + data.conversation + '"]')
284+
const convoListItem = $('li[data-conversation-id="' + data.conversation + '"]')
292285
if (convoListItem.length > 0) {
293286
convoListItem.attr('data-updatedAt', new Date())
294-
var ul = convoListItem.parent('ul')
295-
var li = ul.children('li')
287+
const ul = convoListItem.parent('ul')
288+
const li = ul.children('li')
296289
li.detach().sort(function (a, b) {
297290
return new Date($(a).attr('data-updatedAt')) < new Date($(b).attr('data-updatedAt'))
298291
})
299292

300293
ul.append(li)
301294

302-
var fromName = message.owner.fullname
295+
let fromName = message.owner.fullname
303296
if (message.owner._id.toString() === $loggedInAccountId) {
304297
fromName = 'You'
305298
}
306299

307300
convoListItem.find('.message-subject').text(fromName + ': ' + message.body)
308301
$recentMessages[message.conversation] = fromName + ': ' + message.body
309-
var timezone = helpers.getTimezone()
302+
const timezone = helpers.getTimezone()
310303
convoListItem.find('.message-date').text(
311304
moment
312305
.utc()
313306
.tz(timezone)
314307
.calendar()
315308
)
316309
} else {
317-
var convoUL = $('#convo-list > ul.message-items')
310+
const convoUL = $('#convo-list > ul.message-items')
318311
if (convoUL.length > 0) {
319-
var partner = message.owner
312+
let partner = message.owner
320313
if (message.owner._id.toString() === $loggedInAccountId.toString()) {
321314
partner = data.toUser
322315
}
323-
var newLI = buildConversationListItem({
316+
const newLI = buildConversationListItem({
324317
_id: message.conversation,
325318
partner: partner,
326319
updatedAt: new Date(),
327320
recentMessage: message.owner.fullname + ': ' + message.body
328321
})
329322

330-
var $injector = angular.injector(['ng', 'trudesk'])
323+
const $injector = angular.injector(['ng', 'trudesk'])
331324
$injector.invoke([
332325
'$compile',
333326
'$rootScope',
334327
function ($compile, $rootScope) {
335-
var $scope = convoUL.prepend(newLI).scope()
328+
const $scope = convoUL.prepend(newLI).scope()
336329
$compile(convoUL)($scope || $rootScope)
337330
$rootScope.$digest()
338331
}
@@ -345,7 +338,7 @@ define('pages/messages', [
345338
})
346339

347340
function buildConversationListItem (data) {
348-
var html = ''
341+
let html = ''
349342

350343
html +=
351344
'<li ng-click="loadConversation(\'' +
@@ -356,7 +349,7 @@ define('pages/messages', [
356349
data.updatedAt +
357350
'">'
358351
html += '<div class="profile-pic">'
359-
var imageUrl = 'defaultProfile.jpg'
352+
let imageUrl = 'defaultProfile.jpg'
360353
if (data.partner.image) {
361354
imageUrl = data.partner.image
362355
}

0 commit comments

Comments
 (0)