Browse Source

Added client-side ignoring

Sorunome 11 years ago
parent
commit
b45ef63e05
2 changed files with 75 additions and 27 deletions
  1. 11 11
      app/OmnomIRC.js
  2. 64 16
      app/www/js/omnomirc.js

+ 11 - 11
app/OmnomIRC.js

@@ -203,6 +203,17 @@ if(cluster.isMaster){
 			'png': 'image/png',
 			'jpg': 'image/jpeg'
 		},
+		message = function(room,from,message,origin,socket){
+			if(typeof socket == 'undefined'){
+				socket = io.sockets.in(room);
+			}
+			socket.emit('message',{
+				message: message,
+				room: room,
+				from: from,
+				origin: origin
+			})
+		},
 		app = require('http').createServer(function(req,res){
 			if(toobusy()){
 				res.writeHead(503,{
@@ -422,17 +433,6 @@ if(cluster.isMaster){
 					});
 				}
 			},
-			message = function(room,from,message,origin,socket){
-				if(typeof socket == 'undefined'){
-					socket = io.sockets.in(room);
-				}
-				socket.emit('message',{
-					message: message,
-					room: room,
-					from: from,
-					origin: origin
-				})
-			},
 			fromServer = function(room,message,socket){
 				if(typeof socket == 'undefined'){
 					socket = io.sockets.in(room);

+ 64 - 16
app/www/js/omnomirc.js

@@ -57,6 +57,7 @@
 		settings = {},
 		settingsConf = {},
 		tabs = [],
+		ignores = ($.localStorage('ignores') || []),
 		properties = {
 			nick: 'User',
 			sig: '',
@@ -160,6 +161,51 @@
 						$o.msg('   ['+i+'] '+tabs[i].name);
 					}
 				}
+			},
+			{ // ignore
+				cmd: 'ignore',
+				fn: function(args){
+					args.shift();
+					var nick = args.join(' ').toLowerCase();
+					if($.inArray(nick,ignores)==-1){
+						ignores.push(nick);
+						$.localStorage('ignores',ignores);
+						$o.msg('Now ignoring '+nick);
+					}else{
+						$o.msg('You were already ignoring '+nick);
+					}
+				}
+			},
+			{ // unignore
+				cmd: 'unignore',
+				fn: function(args){
+					args.shift();
+					var nick = args.join(' ').toLowerCase(),
+						ignorePos;
+					if(ignores!=null && (ignorePos=$.inArray(nick,ignores))!=-1 || nick=='*'){
+						if(nick!='*'){
+							ignores.splice(ignorePos,1);
+							$.localStorage('ignores',ignores);
+							$o.msg('Not more ignoring '+nick);
+						}else{
+							ignores = [];
+							$.localStorage('ignores',[]);
+							$o.msg('Not more ignoring anybody');
+						}
+					}else{
+						$o.msg('You weren\'t ignoring '+nick);
+					}
+				}
+			},
+			{ // ignorelist
+				cmd: 'ignorelist',
+				fn: function(args){
+					var m = 'Ignored users: ';
+					for(var i=0;i<ignores.length;i++){
+						m += ignores[i]+', ';
+					}
+					$o.msg(m.substring(0,m.length-2));
+				}
 			}
 		],
 		handles = [
@@ -285,23 +331,25 @@
 							+'</span>');
 							$o.msg({html:child},data.room);
 						};
-					if(data.from != 0){
-						msg('	<'+data.from+'>	'+data.message);
-					}else{
-						msg('	* '+data.message);
-					}
-					abbrDate('abbr.date_'+time);
-					if(settings.timestamp == ''){
-						$('.date_cell').css('visibility','hidden');
-					}else{
-						$('.date_cell').css('visibility','visible');
+					if((data.from !== 0 && $.inArray(data.from.toLowerCase(),ignores)==-1) || data.from === 0){
+						if(data.from != 0){
+							msg('	<'+data.from+'>	'+data.message);
+						}else{
+							msg('	* '+data.message);
+						}
+						abbrDate('abbr.date_'+time);
+						if(settings.timestamp == ''){
+							$('.date_cell').css('visibility','hidden');
+						}else{
+							$('.date_cell').css('visibility','visible');
+						}
+						runHook('message',[
+							data.message,
+							data.from,
+							data.room,
+							data.origin
+						]);
 					}
-					runHook('message',[
-						data.message,
-						data.from,
-						data.room,
-						data.origin
-					]);
 				}
 			}
 		],