fixed EXT-4872 'Loading...' message remains in ad-hoc IM floated opened by 'Start IM' button
added timing out of session initialization (after 30 seconds) --HG-- branch : product-enginemaster
parent
1eff2a33b1
commit
9757cd64e1
|
|
@ -80,6 +80,9 @@ const static std::string ADHOC_NAME_SUFFIX(" Conference");
|
|||
const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other");
|
||||
const static std::string NEARBY_P2P_BY_AGENT("nearby_P2P_by_agent");
|
||||
|
||||
/** Timeout of outgoing session initialization (in seconds) */
|
||||
const static U32 SESSION_INITIALIZATION_TIMEOUT = 30;
|
||||
|
||||
std::string LLCallDialogManager::sPreviousSessionlName = "";
|
||||
LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION;
|
||||
std::string LLCallDialogManager::sCurrentSessionlName = "";
|
||||
|
|
@ -91,6 +94,19 @@ const LLUUID LLOutgoingCallDialog::OCD_KEY = LLUUID("7CF78E11-0CFE-498D-ADB9-141
|
|||
//
|
||||
LLIMMgr* gIMMgr = NULL;
|
||||
|
||||
|
||||
BOOL LLSessionTimeoutTimer::tick()
|
||||
{
|
||||
if (mSessionId.isNull()) return TRUE;
|
||||
|
||||
LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
|
||||
if (session && !session->mSessionInitialized)
|
||||
{
|
||||
gIMMgr->showSessionStartError("session_initialization_timed_out_error", mSessionId);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void toast_callback(const LLSD& msg){
|
||||
// do not show toast in busy mode or it goes from agent
|
||||
if (gAgent.getBusy() || gAgent.getID() == msg["from_id"])
|
||||
|
|
@ -214,6 +230,11 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
|
|||
//so we're already initialized
|
||||
mSessionInitialized = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//tick returns TRUE - timer will be deleted after the tick
|
||||
new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT);
|
||||
}
|
||||
|
||||
if (IM_NOTHING_SPECIAL == type)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#define LL_LLIMVIEW_H
|
||||
|
||||
#include "lldockablefloater.h"
|
||||
#include "lleventtimer.h"
|
||||
#include "llinstantmessage.h"
|
||||
|
||||
#include "lllogchat.h"
|
||||
|
|
@ -45,7 +46,24 @@ class LLFriendObserver;
|
|||
class LLCallDialogManager;
|
||||
class LLIMSpeakerMgr;
|
||||
|
||||
/**
|
||||
* Timeout Timer for outgoing Ad-Hoc/Group IM sessions which being initialized by the server
|
||||
*/
|
||||
class LLSessionTimeoutTimer : public LLEventTimer
|
||||
{
|
||||
public:
|
||||
LLSessionTimeoutTimer(const LLUUID& session_id, F32 period) : LLEventTimer(period), mSessionId(session_id) {}
|
||||
virtual ~LLSessionTimeoutTimer() {};
|
||||
/* virtual */ BOOL tick();
|
||||
|
||||
private:
|
||||
LLUUID mSessionId;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Model (MVC) for IM Sessions
|
||||
*/
|
||||
class LLIMModel : public LLSingleton<LLIMModel>
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -3009,4 +3009,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
|
|||
<string name="unread_chat_multiple">
|
||||
[SOURCES] have said something new
|
||||
</string>"
|
||||
<string name="session_initialization_timed_out_error">
|
||||
The session initialization is timed out
|
||||
</string>
|
||||
</strings>
|
||||
|
|
|
|||
Loading…
Reference in New Issue