Fix bug #11. WebSocket recommendation comments.

This commit is contained in:
Alexey Skobkin 2015-01-27 05:43:20 +03:00
parent 6a951ea8d3
commit d818c7dc66

View file

@ -348,17 +348,26 @@ function PointPlus(ppVersion) {
ws.onmessage = function(evt) { ws.onmessage = function(evt) {
try { try {
// ping :) // ping :)
if (evt.data == 'ping') { if (evt.data === 'ping') {
console.info('ws-ping'); console.info('ws-ping');
} else { } else {
var wsMessage = JSON.parse(evt.data); var wsMessage = JSON.parse(evt.data);
if (wsMessage.hasOwnProperty('a') && wsMessage.a != '') { if (wsMessage.hasOwnProperty('a') && wsMessage.a !== '') {
console.log(wsMessage);
switch (wsMessage.a) { switch (wsMessage.a) {
// Recommendation comment
case 'ok':
// Do not break here. Using next case for this message
// Comments // Comments
case 'comment': case 'comment':
console.groupCollapsed('ws-comment #%s/%s', wsMessage.post_id, wsMessage.comment_id); if (wsMessage.a === 'comment') {
console.debug(wsMessage); console.groupCollapsed('WS comment #%s/%s', wsMessage.post_id, wsMessage.comment_id);
} else if (wsMessage.a === 'ok') {
console.groupCollapsed('WS comment rec #%s/%s', wsMessage.post_id, wsMessage.comment_id);
}
// Check option // Check option
if ( ! options.is('option_ws_comments')) { if ( ! options.is('option_ws_comments')) {
@ -383,12 +392,13 @@ function PointPlus(ppVersion) {
// Generating comment from websocket message // Generating comment from websocket message
create_comment_elements({ create_comment_elements({
id: wsMessage.comment_id, id: (wsMessage.a === 'ok') ? wsMessage.rcid : wsMessage.comment_id,
toId: wsMessage.to_comment_id, toId: wsMessage.to_comment_id,
postId: wsMessage.post_id, postId: wsMessage.post_id,
author: wsMessage.author, author: wsMessage.author,
text: wsMessage.text, text: wsMessage.text,
fadeOut: options.is('option_ws_comments_color_fadeout') fadeOut: options.is('option_ws_comments_color_fadeout'),
isRec: (wsMessage.a === 'ok') ? true : false
}, function($comment) { }, function($comment) {
// It's time to DOM // It's time to DOM
console.info('Inserting comment'); console.info('Inserting comment');
@ -434,9 +444,8 @@ function PointPlus(ppVersion) {
// Posts // Posts
case 'post': case 'post':
console.groupCollapsed('ws-post #%s', wsMessage.post_id); console.groupCollapsed('WS post #%s', wsMessage.post_id);
console.debug(wsMessage);
if (options.is('option_ws_posts')) { if (options.is('option_ws_posts')) {
if (options.is('option_ws_posts_notifications')) { if (options.is('option_ws_posts_notifications')) {
console.log('Showing desktop notification'); console.log('Showing desktop notification');
@ -454,18 +463,14 @@ function PointPlus(ppVersion) {
break; break;
// Recommendation // Recommendation
case 'ok': case 'rec':
console.groupCollapsed('ws-recommendation #%s/%s', wsMessage.post_id, wsMessage.comment_id); console.groupCollapsed('WS recommendation');
console.debug(wsMessage);
console.groupEnd(); console.groupEnd();
break; break;
default: default:
console.groupCollapsed('ws-other'); console.groupCollapsed('WS other');
console.log(wsMessage);
console.groupEnd(); console.groupEnd();
break; break;
@ -636,6 +641,7 @@ var months = [
* @param {string} commentData.author Author of the comment * @param {string} commentData.author Author of the comment
* @param {string} commentData.text Text of the comment * @param {string} commentData.text Text of the comment
* @param {boolean} commentData.fadeOut Is fadeout enabled or not * @param {boolean} commentData.fadeOut Is fadeout enabled or not
* @param {boolean|null} commentData.isRec Is comment also a recommendation
* @param {function} onCommentCreated Callback which is called when comment is ready * @param {function} onCommentCreated Callback which is called when comment is ready
* *
*/ */
@ -650,6 +656,11 @@ function create_comment_elements(commentData, onCommentCreated) {
'data-to-comment-id': commentData.id || '' 'data-to-comment-id': commentData.id || ''
}); });
// If comment is also a recommendation
if (commentData.isRec || false) {
$commentTemplate.addClass('recommendation');
}
// Loading HTML template // Loading HTML template
$commentTemplate.load(chrome.extension.getURL('includes/comment.html'), function() { $commentTemplate.load(chrome.extension.getURL('includes/comment.html'), function() {
// Load complete // Load complete
@ -665,7 +676,7 @@ function create_comment_elements(commentData, onCommentCreated) {
// Filling template // Filling template
// Date and time // Date and time
$commentTemplate.find('.info .created') $commentTemplate.find('.info .created')
.append($('<span>').html(((date.getDate().toString.length < 2) ? ('0' + date.getDate().toString()) : (date.getDate().toString())) + '&nbsp;' + months[date.getMonth()])) .append($('<span>').html((date.getDate().toString()) + '&nbsp;' + months[date.getMonth()]))
// Crutchy fix // Crutchy fix
.append($('<br>')) .append($('<br>'))
///Crutchy fix ///Crutchy fix
@ -679,7 +690,8 @@ function create_comment_elements(commentData, onCommentCreated) {
// Post and comment ID's link // Post and comment ID's link
$commentTemplate.find('.clearfix .post-id a').attr('href', '//point.im/' + commentData.postId + '#' + commentData.id).text('#' + commentData.postId + '/' + commentData.id) $commentTemplate.find('.clearfix .post-id a').attr('href', '//point.im/' + commentData.postId + '#' + commentData.id).text('#' + commentData.postId + '/' + commentData.id)
// Adding answer label // Adding answer label
.after((commentData.toId !== null) ? (' в ответ на <a href="#' + commentData.toId + '">/' + commentData.toId + '</a>') : ('')); // @todo i18n
.after((commentData.toId != null) ? (' в ответ на <a href="#' + commentData.toId + '">/' + commentData.toId + '</a>') : '');
// Setting action labels and other attributes // Setting action labels and other attributes
$commentTemplate.find('.action-labels .reply-label').attr('for', 'reply-' + commentData.postId + '_' + commentData.id); $commentTemplate.find('.action-labels .reply-label').attr('for', 'reply-' + commentData.postId + '_' + commentData.id);
$commentTemplate.find('.action-labels .more-label').attr('for', 'action-' + commentData.postId + '_' + commentData.id); $commentTemplate.find('.action-labels .more-label').attr('for', 'action-' + commentData.postId + '_' + commentData.id);