@ -161,13 +161,16 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
}
}
if ( ! manually && ( ! buffer . active || ! $rootScope . isWindowFocused ( ) ) ) {
if ( ! manually && ( ! buffer . active || ! $rootScope . isWindowFocused ( ) ) ) {
var server = models . getServerForBuffer ( buffer ) ;
if ( buffer . notify > 1 && _ . contains ( message . tags , 'notify_message' ) && ! _ . contains ( message . tags , 'notify_none' ) ) {
if ( buffer . notify > 1 && _ . contains ( message . tags , 'notify_message' ) && ! _ . contains ( message . tags , 'notify_none' ) ) {
buffer . unread ++ ;
buffer . unread ++ ;
server . unread ++ ;
$rootScope . $emit ( 'notificationChanged' ) ;
$rootScope . $emit ( 'notificationChanged' ) ;
}
}
if ( ( buffer . notify !== 0 && message . highlight ) || _ . contains ( message . tags , 'notify_private' ) ) {
if ( ( buffer . notify !== 0 && message . highlight ) || _ . contains ( message . tags , 'notify_private' ) ) {
buffer . notification ++ ;
buffer . notification ++ ;
server . unread ++ ;
notifications . createHighlight ( buffer , message ) ;
notifications . createHighlight ( buffer , message ) ;
$rootScope . $emit ( 'notificationChanged' ) ;
$rootScope . $emit ( 'notificationChanged' ) ;
}
}
@ -186,6 +189,12 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
handleBufferUpdate ( buffer , bufferInfos [ i ] ) ;
handleBufferUpdate ( buffer , bufferInfos [ i ] ) ;
} else {
} else {
buffer = new models . Buffer ( bufferInfos [ i ] ) ;
buffer = new models . Buffer ( bufferInfos [ i ] ) ;
if ( buffer . type === 'server' ) {
models . registerServer ( buffer ) ;
} else {
var server = models . getServerForBuffer ( buffer ) ;
server . unread += buffer . unread + buffer . notification ;
}
models . addBuffer ( buffer ) ;
models . addBuffer ( buffer ) ;
// Switch to first buffer on startup
// Switch to first buffer on startup
var shouldResume = bufferResume . shouldResume ( buffer ) ;
var shouldResume = bufferResume . shouldResume ( buffer ) ;
@ -214,7 +223,9 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
buffer . number = message . number ;
buffer . number = message . number ;
buffer . hidden = message . hidden ;
buffer . hidden = message . hidden ;
// reset these, hotlist info will arrive shortly
// reset unread counts, hotlist info will arrive shortly
var server = models . getServerForBuffer ( buffer ) ;
server . unread -= ( buffer . unread + buffer . notification ) ;
buffer . notification = 0 ;
buffer . notification = 0 ;
buffer . unread = 0 ;
buffer . unread = 0 ;
buffer . lastSeen = - 1 ;
buffer . lastSeen = - 1 ;
@ -238,6 +249,12 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
var handleBufferOpened = function ( message ) {
var handleBufferOpened = function ( message ) {
var bufferMessage = message . objects [ 0 ] . content [ 0 ] ;
var bufferMessage = message . objects [ 0 ] . content [ 0 ] ;
var buffer = new models . Buffer ( bufferMessage ) ;
var buffer = new models . Buffer ( bufferMessage ) ;
if ( buffer . type === 'server' ) {
models . registerServer ( buffer ) ;
} else {
var server = models . getServerForBuffer ( buffer ) ;
server . unread += buffer . unread + buffer . notification ;
}
models . addBuffer ( buffer ) ;
models . addBuffer ( buffer ) ;
} ;
} ;
@ -353,6 +370,9 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
buffer . unread = 0 ;
buffer . unread = 0 ;
buffer . notification = 0 ;
buffer . notification = 0 ;
} ) ;
} ) ;
_ . each ( models . getServers ( ) , function ( server ) {
server . unread = 0 ;
} ) ;
if ( message . objects . length > 0 ) {
if ( message . objects . length > 0 ) {
var hotlist = message . objects [ 0 ] . content ;
var hotlist = message . objects [ 0 ] . content ;
hotlist . forEach ( function ( l ) {
hotlist . forEach ( function ( l ) {
@ -376,6 +396,9 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
* /
* /
var unreadSum = _ . reduce ( l . count , function ( memo , num ) { return memo + num ; } , 0 ) ;
var unreadSum = _ . reduce ( l . count , function ( memo , num ) { return memo + num ; } , 0 ) ;
buffer . lastSeen = buffer . lines . length - 1 - unreadSum ;
buffer . lastSeen = buffer . lines . length - 1 - unreadSum ;
// update server buffer. Don't incude index 0 -> not unreadSum
models . getServerForBuffer ( buffer ) . unread += l . count [ 1 ] + l . count [ 2 ] + l . count [ 3 ] ;
} ) ;
} ) ;
}
}
// the unread badges in the bufferlist doesn't update if we don't do this
// the unread badges in the bufferlist doesn't update if we don't do this