ACME-778: Adjusted the facebook code so that isConnected() does not depend on state changes. Instead it returns true if the user successfully connected and false if the user successfully disconnected.

meow-7.2.2
Gilbert Gonzales 2013-07-31 19:04:45 -07:00
parent d0764f57a5
commit a2b1e06c3d
4 changed files with 41 additions and 21 deletions

View File

@ -199,6 +199,7 @@ public:
}
else
{
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_DISCONNECT_FAILED);
log_facebook_connect_error("Disconnect", status, reason, content.get("error_code"), content.get("error_description"));
}
}
@ -313,6 +314,8 @@ public:
//
LLFacebookConnect::LLFacebookConnect()
: mConnectionState(FB_NOT_CONNECTED),
mConnected(false),
mInfo(),
mContent(),
mGeneration(0)
{
@ -334,8 +337,7 @@ void LLFacebookConnect::openFacebookWeb(std::string url)
std::string LLFacebookConnect::getFacebookConnectURL(const std::string& route)
{
//static std::string sFacebookConnectUrl = gAgent.getRegion()->getCapability("FacebookConnect");
//static std::string sFacebookConnectUrl = "http://int.fbc.aditi.lindenlab.com/agent/" + gAgentID.asString(); // TEMPORARY HACK FOR FB DEMO - Cho
static std::string sFacebookConnectUrl = "http://pdp15.lindenlab.com/fbc/agent/" + gAgentID.asString(); // ANOTHER HACK SO WE POINT TO PDP15
static std::string sFacebookConnectUrl = "http://int.fbc.aditi.lindenlab.com/fbc/agent/" + gAgentID.asString(); // TEMPORARY HACK FOR FB DEMO - Cho
std::string url = sFacebookConnectUrl + route;
llinfos << url << llendl;
@ -360,13 +362,10 @@ void LLFacebookConnect::disconnectFromFacebook()
void LLFacebookConnect::checkConnectionToFacebook(bool auto_connect)
{
if ((mConnectionState == FB_NOT_CONNECTED) || (mConnectionState == FB_CONNECTION_FAILED) || (mConnectionState == FB_POST_FAILED))
{
const bool follow_redirects = false;
const F32 timeout = HTTP_REQUEST_EXPIRY_SECS;
LLHTTPClient::get(getFacebookConnectURL("/connection"), new LLFacebookConnectedResponder(auto_connect),
LLSD(), timeout, follow_redirects);
}
}
void LLFacebookConnect::loadFacebookInfo()
@ -507,6 +506,15 @@ void LLFacebookConnect::clearContent()
void LLFacebookConnect::setConnectionState(LLFacebookConnect::EConnectionState connection_state)
{
if(connection_state == FB_CONNECTED)
{
setConnected(true);
}
else if(connection_state == FB_NOT_CONNECTED)
{
setConnected(false);
}
if (mConnectionState != connection_state)
{
LLSD state_info;
@ -516,3 +524,8 @@ void LLFacebookConnect::setConnectionState(LLFacebookConnect::EConnectionState c
mConnectionState = connection_state;
}
void LLFacebookConnect::setConnected(bool connected)
{
mConnected = connected;
}

View File

@ -52,7 +52,8 @@ public:
FB_POSTING = 4,
FB_POSTED = 5,
FB_POST_FAILED = 6,
FB_DISCONNECTING = 7
FB_DISCONNECTING = 7,
FB_DISCONNECT_FAILED = 8
};
void connectToFacebook(const std::string& auth_code = "", const std::string& auth_state = ""); // Initiate the complete FB connection. Please use checkConnectionToFacebook() in normal use.
@ -73,8 +74,9 @@ public:
const LLSD& getContent() const;
void setConnectionState(EConnectionState connection_state);
bool isConnected() { return ((mConnectionState == FB_CONNECTED) || (mConnectionState == FB_DISCONNECTING) || (mConnectionState == FB_POSTING) || (mConnectionState == FB_POSTED)); }
bool isTransactionOngoing() { return ((mConnectionState == FB_CONNECTION_IN_PROGRESS) || (mConnectionState == FB_POSTING)); }
void setConnected(bool connected);
bool isConnected() { return mConnected; }
bool isTransactionOngoing() { return ((mConnectionState == FB_CONNECTION_IN_PROGRESS) || (mConnectionState == FB_POSTING) || (mConnectionState == FB_DISCONNECTING)); }
EConnectionState getConnectionState() { return mConnectionState; }
S32 generation() { return mGeneration; }
@ -88,6 +90,7 @@ private:
std::string getFacebookConnectURL(const std::string& route = "");
EConnectionState mConnectionState;
BOOL mConnected;
LLSD mInfo;
LLSD mContent;
S32 mGeneration;

View File

@ -688,20 +688,17 @@ void LLSocialAccountPanel::onVisibilityChange(const LLSD& new_visibility)
bool LLSocialAccountPanel::onFacebookConnectStateChange(const LLSD& data)
{
switch (data.get("enum").asInteger())
if(LLFacebookConnect::instance().isConnected())
{
case LLFacebookConnect::FB_CONNECTED:
case LLFacebookConnect::FB_POSTING:
case LLFacebookConnect::FB_POSTED:
case LLFacebookConnect::FB_POST_FAILED:
//In process of disconnecting so leave the layout as is
if(data.get("enum").asInteger() != LLFacebookConnect::FB_DISCONNECTING)
{
showConnectedLayout();
break;
case LLFacebookConnect::FB_NOT_CONNECTED:
case LLFacebookConnect::FB_CONNECTION_IN_PROGRESS:
case LLFacebookConnect::FB_CONNECTION_FAILED:
showDisconnectedLayout();
break;
}
}
else
{
showDisconnectedLayout();
}
return false;
@ -882,6 +879,12 @@ void LLFloaterSocial::draw()
mStatusLoadingText->setValue(status_text);
mStatusLoadingIndicator->setVisible(true);
break;
case LLFacebookConnect::FB_DISCONNECT_FAILED:
// Error disconnecting from the service
mStatusErrorText->setVisible(true);
status_text = LLTrans::getString("SocialFacebookErrorDisconnecting");
mStatusErrorText->setValue(status_text);
break;
}
}
LLFloater::draw();

View File

@ -151,9 +151,10 @@ Please try logging in again in a minute.</string>
<!-- Facebook Connect and, eventually, other Social Network -->
<string name="SocialFacebookConnecting">Connecting to Facebook...</string>
<string name="SocialFacebookPosting">Posting...</string>
<string name="SocialFacebookDisconnecting">Disconnecting from Facebook...</string>
<string name="SocialFacebookErrorConnecting">Problem connecting to Facebook</string>
<string name="SocialFacebookErrorPosting">Problem posting to Facebook</string>
<string name="SocialFacebookDisconnecting">Disconnecting from Facebook...</string>
<string name="SocialFacebookErrorDisconnecting">Problem disconnecting from Facebook</string>
<!-- Tooltip -->
<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->