really don't..
[quassel.git] / src / client / networkmodel.cpp
index 8b087d5..ae44091 100644 (file)
@@ -971,6 +971,7 @@ MsgId NetworkModel::lastSeenMsgId(const BufferId &bufferId) {
   BufferItem *bufferItem = findBufferItem(bufferId);
   if(!bufferItem) {
     qDebug() << "NetworkModel::lastSeenMsgId(): buffer is unknown:" << bufferId;
+    Client::purgeKnownBufferIds();
     return MsgId();
   }
   return bufferItem->lastSeenMsgId();
@@ -980,6 +981,7 @@ void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId
   BufferItem *bufferItem = findBufferItem(bufferId);
   if(!bufferItem) {
     qDebug() << "NetworkModel::setLastSeenMsgId(): buffer is unknown:" << bufferId;
+    Client::purgeKnownBufferIds();
     return;
   }
   bufferItem->setLastSeenMsgId(msgId);
@@ -1003,6 +1005,16 @@ void NetworkModel::updateBufferActivity(Message &msg) {
     msg.setFlags(msg.flags() | Message::Redirected);
     redirectionTarget = _errorMsgsTarget;
     break;
+  // Update IrcUser's last activity
+  case Message::Plain:
+  case Message::Action:
+    if(bufferType(msg.bufferId()) == BufferInfo::ChannelBuffer) {
+      const Network *net = Client::network(msg.bufferInfo().networkId());
+      IrcUser *user = net ? net->ircUser(nickFromMask(msg.sender())) : 0;
+      if(user)
+        user->setLastChannelActivity(msg.bufferId(), msg.timestamp());
+    }
+    break;
   default:
     break;
   }