Skip to content
Snippets Groups Projects
Commit 3999438f authored by Diego Sampaio's avatar Diego Sampaio
Browse files

Show previous livechats

parent e7628719
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,6 @@ RocketChat.roomTypes.add('l', 5, {
},
roomName(roomData) {
console.log('roomName.roomData ->', roomData);
if (!roomData.name) {
const sub = ChatSubscription.findOne({ rid: roomData._id }, { fields: { name: 1 } });
if (sub) {
......@@ -57,14 +56,14 @@ RocketChat.TabBar.addButton({
order: 0
});
RocketChat.TabBar.addButton({
groups: ['livechat'],
id: 'visitor-navigation',
i18nTitle: 'Visitor_Navigation',
icon: 'icon-history',
template: 'visitorNavigation',
order: 10
});
// RocketChat.TabBar.addButton({
// groups: ['livechat'],
// id: 'visitor-navigation',
// i18nTitle: 'Visitor_Navigation',
// icon: 'icon-history',
// template: 'visitorNavigation',
// order: 10
// });
RocketChat.TabBar.addButton({
groups: ['livechat'],
......@@ -83,7 +82,7 @@ RocketChat.TabBar.addGroup('push-notifications', ['livechat']);
RocketChat.TabBar.addButton({
groups: ['livechat'],
id: 'external-search',
i18nTitle: 'External_Search',
i18nTitle: 'Knowledge_Base',
icon: 'icon-lightbulb',
template: 'externalSearch',
order: 10
......
......@@ -7,11 +7,9 @@
<div class="visitor-navigation">
<div class="visitor-scroll">
<ul>
<li><a href="#past" target="_blank">2016-04-01 - Chat Title</a></li>
<li><a href="#past" target="_blank">2016-04-01 - Chat Title</a></li>
<li><a href="#past" target="_blank">2016-04-01 - Chat Title</a></li>
<li><a href="#past" target="_blank">2016-04-01 - Chat Title</a></li>
<li><a href="#past" target="_blank">2016-04-01 - Chat Title</a></li>
{{#each previousChats}}
<li><a href="{{pathFor "live" code=code}}">{{date}}</a></li>
{{/each}}
</ul>
</div>
</div>
......
Template.visitorHistory.helpers({
historyLoaded() {
return !Template.instance().loadHistory.ready();
},
previousChats() {
return ChatRoom.find({
_id: { $ne: this.rid },
'v.token': Template.instance().visitorToken.get()
}, {
sort: {
ts: -1
}
});
},
date() {
return moment(this.ts).format('L LTS');
}
});
Template.visitorHistory.onCreated(function() {
var currentData = Template.currentData();
this.visitorToken = new ReactiveVar();
this.autorun(() => {
const room = ChatRoom.findOne({ _id: Template.currentData().rid });
this.visitorToken.set(room.v.token);
});
if (currentData && currentData.rid) {
this.loadHistory = this.subscribe('livechat:visitorHistory', currentData.rid);
}
});
......@@ -61,6 +61,8 @@
</div>
</div>
{{/if}}
{{> visitorNavigation .}}
{{/if}}
</div>
</div>
......
......@@ -77,6 +77,7 @@ Package.onUse(function(api) {
api.addFiles('client/views/app/tabbar/externalSearch.html', 'client');
api.addFiles('client/views/app/tabbar/externalSearch.js', 'client');
api.addFiles('client/views/app/tabbar/visitorHistory.html', 'client');
api.addFiles('client/views/app/tabbar/visitorHistory.js', 'client');
api.addFiles('client/views/app/tabbar/visitorNavigation.html', 'client');
api.addFiles('client/views/app/tabbar/visitorNavigation.js', 'client');
api.addFiles('client/views/app/tabbar/visitorEdit.html', 'client');
......@@ -141,6 +142,7 @@ Package.onUse(function(api) {
api.addFiles('server/publications/livechatDepartments.js', 'server');
api.addFiles('server/publications/livechatManagers.js', 'server');
api.addFiles('server/publications/livechatRooms.js', 'server');
api.addFiles('server/publications/visitorHistory.js', 'server');
api.addFiles('server/publications/visitorInfo.js', 'server');
api.addFiles('server/publications/visitorPageVisited.js', 'server');
......
Meteor.methods({
'livechat:closeRoom'(roomId, comment) {
if (!Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'view-l-room')) {
throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'livechat:closeRoom' });
}
const room = RocketChat.models.Rooms.findOneById(roomId);
// @TODO add validations
const user = Meteor.user();
if (room.usernames.indexOf(user.username) === -1) {
throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'livechat:closeRoom' });
}
return RocketChat.Livechat.closeRoom({
user: Meteor.user(),
user: user,
room: room,
comment: comment
});
......
......@@ -85,6 +85,14 @@ RocketChat.models.Rooms.findOpenByVisitorToken = function(visitorToken, options)
return this.find(query, options);
};
RocketChat.models.Rooms.findByVisitorToken = function(visitorToken) {
const query = {
'v.token': visitorToken
};
return this.find(query);
};
RocketChat.models.Rooms.closeByRoomId = function(roomId) {
return this.update({ _id: roomId }, { $unset: { open: 1 } });
};
Meteor.publish('livechat:visitorHistory', function(roomId) {
if (!this.userId) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
if (!RocketChat.authz.hasPermission(this.userId, 'view-livechat-rooms')) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
var room = RocketChat.models.Rooms.findOneById(roomId);
const user = RocketChat.models.Users.findOneById(this.userId);
if (room.usernames.indexOf(user.username) === -1) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
if (room && room.v && room.v.token) {
return RocketChat.models.Rooms.findByVisitorToken(room.v.token);
} else {
return this.ready();
}
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment