diff options
author | Kevin Smith <git@kismith.co.uk> | 2010-11-09 21:06:28 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2010-11-09 21:23:39 (GMT) |
commit | b23637e59839f5f28258f518ac234b2ff62b6da2 (patch) | |
tree | 260bb79caa0858d271959159a5913de121687a99 /Swift/Controllers/Chat | |
parent | f4d1b6494d5c537ba4a086d61ea86b1dd6843e4b (diff) | |
download | swift-b23637e59839f5f28258f518ac234b2ff62b6da2.zip swift-b23637e59839f5f28258f518ac234b2ff62b6da2.tar.bz2 |
Only request new MUC context when rejoining.
Resolves: #542
Release-Notes: On reconnects, existing MUC history now won't be replayed.
Diffstat (limited to 'Swift/Controllers/Chat')
-rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 7 | ||||
-rw-r--r-- | Swift/Controllers/Chat/MUCController.h | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 259b715..6ac6a0c 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -96,10 +96,10 @@ void MUCController::rejoin() { joined_ = false; parting_ = false; //FIXME: check for received activity - if (/*lastActivityDate_ == none*/true) { + if (lastActivity_ == boost::posix_time::not_a_date_time) { muc_->joinAs(nick_); } else { - muc_->joinWithContextSince(nick_); + muc_->joinWithContextSince(nick_, lastActivity_); } } } @@ -230,6 +230,9 @@ bool MUCController::messageTargetsMe(boost::shared_ptr<Message> message) { } void MUCController::preHandleIncomingMessage(boost::shared_ptr<MessageEvent> messageEvent) { + if (messageEvent->getStanza()->getType() == Message::Groupchat) { + lastActivity_ = boost::posix_time::microsec_clock::universal_time(); + } clearPresenceQueue(); boost::shared_ptr<Message> message = messageEvent->getStanza(); if (joined_ && messageEvent->getStanza()->getFrom().getResource() != nick_ && messageTargetsMe(message) && !message->getPayload<Delay>()) { diff --git a/Swift/Controllers/Chat/MUCController.h b/Swift/Controllers/Chat/MUCController.h index 1af9c58..20bf403 100644 --- a/Swift/Controllers/Chat/MUCController.h +++ b/Swift/Controllers/Chat/MUCController.h @@ -93,6 +93,7 @@ namespace Swift { boost::shared_ptr<Timer> loginCheckTimer_; std::set<String> currentOccupants_; std::vector<NickJoinPart> joinParts_; + boost::posix_time::ptime lastActivity_; }; } |