summaryrefslogtreecommitdiff
path: root/indra/newview/llfacebookconnect.cpp
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2013-07-23 17:18:14 -0700
committerMerov Linden <merov@lindenlab.com>2013-07-23 17:18:14 -0700
commit4035f23681ae1834804196ec7b17010263e29b3b (patch)
tree8eff172ec53eb82ae1916c0ebcb0dffb4adcdfb3 /indra/newview/llfacebookconnect.cpp
parent05c2e087153a9816de2c6218c2509cbdb935ccf0 (diff)
parent66d41f02ba0e55a2cb34752c8f77b71b9a0c0503 (diff)
Pull merge from lindenlab/viewer-fbc
Diffstat (limited to 'indra/newview/llfacebookconnect.cpp')
-rw-r--r--indra/newview/llfacebookconnect.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp
index 7c1e7b3b16..cccfb6f2b8 100644
--- a/indra/newview/llfacebookconnect.cpp
+++ b/indra/newview/llfacebookconnect.cpp
@@ -181,7 +181,12 @@ class LLFacebookDisconnectResponder : public LLHTTPClient::Responder
{
LOG_CLASS(LLFacebookDisconnectResponder);
public:
-
+
+ LLFacebookDisconnectResponder()
+ {
+ LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_DISCONNECTING);
+ }
+
virtual void completed(U32 status, const std::string& reason, const LLSD& content)
{
if (isGoodStatus(status))
@@ -247,6 +252,40 @@ private:
///////////////////////////////////////////////////////////////////////////////
//
+class LLFacebookDisconnectThenConnectResponder : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLFacebookDisconnectThenConnectResponder);
+public:
+
+ LLFacebookDisconnectThenConnectResponder()
+ {
+ LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_DISCONNECTING);
+ }
+
+ virtual void completed(U32 status, const std::string& reason, const LLSD& content)
+ {
+ if (isGoodStatus(status))
+ {
+ LL_DEBUGS("FacebookConnect") << "Disconnect successful. content: " << content << LL_ENDL;
+
+ // Clear all facebook stuff
+ LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_NOT_CONNECTED);
+ LLFacebookConnect::instance().clearContent();
+
+ LLViewerMedia::clearAllCookies();
+
+ //Now attempt to reconnect
+ LLFacebookConnect::instance().checkConnectionToFacebook(true);
+ }
+ else
+ {
+ log_facebook_connect_error("Disconnect", status, reason, content.get("error_code"), content.get("error_description"));
+ }
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+//
class LLFacebookInfoResponder : public LLHTTPClient::Responder
{
LOG_CLASS(LLFacebookInfoResponder);
@@ -363,6 +402,11 @@ void LLFacebookConnect::checkConnectionToFacebook(bool auto_connect)
}
}
+void LLFacebookConnect::disconnectThenConnectToFacebook()
+{
+ LLHTTPClient::del(getFacebookConnectURL("/connection"), new LLFacebookDisconnectThenConnectResponder());
+}
+
void LLFacebookConnect::loadFacebookInfo()
{
const bool follow_redirects = false;