Ticket #3171: t3171_clear_muc_messages_v4_16789.patch
File t3171_clear_muc_messages_v4_16789.patch, 3.9 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/lobby/lobby.js
12 12 var g_mapSizes = {}; 13 13 const g_mapTypesText = [translateWithContext("map", "Skirmish"), translateWithContext("map", "Random"), translate("Scenario")]; 14 14 const g_mapTypes = ["skirmish", "random", "scenario"]; 15 15 var g_userRating = ""; // Rating of user, defaults to Unrated 16 16 var g_modPrefix = "@"; 17 var g_joined = false;18 17 // Block spammers for 30 seconds. 19 18 var SPAM_BLOCK_LENGTH = 30; 20 19 21 20 //////////////////////////////////////////////////////////////////////////////////////////////// 22 21 … … 701 700 case "join": 702 701 if (nick == g_Name) 703 702 { 704 703 // We just joined, we need to get the full player list 705 704 [playerList, presenceList, nickList, ratingList] = updatePlayerList(); 706 // Don't display any joins until our join request bounces back707 // Our join message should be the last one as we just got added to the stack708 g_joined = true;709 break;710 705 } 711 else if (g_joined)706 else 712 707 { 713 708 var [name, status, rating] = formatPlayerListEntry(nick, presence, "-"); 714 709 playerList.push(name); 715 710 presenceList.push(status); 716 711 nickList.push(nick); -
source/lobby/IXmppClient.h
52 52 virtual void GUIGetGameList(ScriptInterface& scriptInterface, JS::MutableHandleValue ret) = 0; 53 53 virtual void GUIGetBoardList(ScriptInterface& scriptInterface, JS::MutableHandleValue ret) = 0; 54 54 virtual void GUIGetProfile(ScriptInterface& scriptInterface, JS::MutableHandleValue ret) = 0; 55 55 56 56 virtual void GuiPollMessage(ScriptInterface& scriptInterface, JS::MutableHandleValue ret) = 0; 57 virtual void ClearMucMessages() = 0; 57 58 virtual void SendMUCMessage(const std::string& message) = 0; 58 59 }; 59 60 60 61 extern IXmppClient *g_XmppClient; 61 62 extern bool g_rankedGame; -
source/lobby/XmppClient.cpp
492 492 * 493 493 * @return A JS array containing all known players and their presences 494 494 */ 495 495 void XmppClient::GUIGetPlayerList(ScriptInterface& scriptInterface, JS::MutableHandleValue ret) 496 496 { 497 // Clear outdated presence updates 498 this->ClearMucMessages(); 499 497 500 JSContext* cx = scriptInterface.GetContext(); 498 501 JSAutoRequest rq(cx); 499 502 500 503 scriptInterface.Eval("([])", ret); 501 504 … … 619 622 scriptInterface.SetProperty(ret, "datetime", message.datetime); 620 623 621 624 m_GuiMessageQueue.pop_front(); 622 625 } 623 626 627 bool isMucMessage(XmppClient::GUIMessage message) 628 { 629 return message.type == L"muc"; 630 } 631 632 /** 633 * Remove all muc updates from the message queue. 634 */ 635 void XmppClient::ClearMucMessages() 636 { 637 m_GuiMessageQueue.erase(std::remove_if(m_GuiMessageQueue.begin(), m_GuiMessageQueue.end(), isMucMessage), m_GuiMessageQueue.end()); 638 } 639 624 640 /** 625 641 * Send a standard MUC textual message. 626 642 */ 627 643 void XmppClient::SendMUCMessage(const std::string& message) 628 644 { -
source/lobby/XmppClient.h
132 132 std::wstring from; 133 133 std::wstring message; 134 134 std::string datetime; 135 135 }; 136 136 void GuiPollMessage(ScriptInterface& scriptInterface, JS::MutableHandleValue ret); 137 void ClearMucMessages(); 137 138 void SendMUCMessage(const std::string& message); 138 139 protected: 139 140 void PushGuiMessage(XmppClient::GUIMessage message); 140 141 void CreateSimpleMessage(const std::string& type, const std::string& text, const std::string& level = "standard", const std::string& data = ""); 141 142