]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Give tracker the ability to know who spoke last.
authorChris Porter <redacted>
Fri, 24 Oct 2008 20:01:38 +0000 (21:01 +0100)
committerChris Porter <redacted>
Fri, 24 Oct 2008 20:01:38 +0000 (21:01 +0100)
js/irc/ircclient.js
js/irc/irctracker.js

index 23dc104b8f674f2e4d34fbb04b38f6aacf95205e..b76933a6a6d6219bdad1b54d6bf54476e8a0fe80 100644 (file)
@@ -299,6 +299,7 @@ qwebirc.irc.IRCClient = new Class({
     this.newTargetOrActiveLine(nick, "CTCPREPLY", {"m": args, "x": type, "h": host, "n": nick, "-": this.nickname});
   },
   channelPrivmsg: function(user, channel, message) {
+    this.tracker.updateLastSpoke(user.hostToNick(), new Date().getTime()); 
     this.newChanLine(channel, "CHANMSG", user, {"m": message});
   },
   channelNotice: function(user, channel, message) {
index ea9dd845ec75f0e199adf07d8aefc9b897cf3456..091945ddb79a27d4dd25ed0f3953cfb3b1c67929 100644 (file)
@@ -1,5 +1,6 @@
 qwebirc.irc.NickChanEntry = function() {
   this.prefixes = "";
+  this.lastSpoke = 0;
 }
 
 qwebirc.irc.IRCTracker = new Class({
@@ -31,7 +32,7 @@ qwebirc.irc.IRCTracker = new Class({
     return c;
   },
   getOrCreateNickOnChannel: function(nick, channel) {
-    var n = this.getNick(nick);
+    var n = this.getOrCreateNick(nick);
     
     var nc = n[channel];
     if(!nc)
@@ -39,6 +40,13 @@ qwebirc.irc.IRCTracker = new Class({
       
     return nc;
   },
+  getNickOnChannel: function(nick, channel) {
+    var n = this.getNick(nick);
+    if(!n)
+      return;
+      
+    return n[channel];
+  }
   addNickToChannel: function(nick, channel) {
     var nc = new qwebirc.irc.NickChanEntry();
 
@@ -104,5 +112,28 @@ qwebirc.irc.IRCTracker = new Class({
     
     this.nicknames[newnick] = this.nicknames[oldnick];
     delete this.nicknames[oldnick];
+  },
+  updateLastSpoke: function(nick, channel, time) {
+    var nc = this.getNickOnChannel(nick, channel);
+    if(nc)
+      nc.lastSpoke = time;
+  },
+  getSortedByLastSpoke: function(channel) {
+    var sorter = function(a, b) {
+      return b.lastSpoke - a.lastSpoke;
+    };
+    
+    var c = getChannel(channel);
+    if(!c)
+      return;
+      
+    var n = [];
+    for(var i=0;i<c.length;i++)
+      n.push(c[k]);
+      
+    n.sort(sorter);
+    
+    return n;
   }
 });
\ No newline at end of file