merge
commit
041de2ee85
|
|
@ -57,7 +57,6 @@ void prompt_user_for_error(U32 status, const std::string& reason, const std::str
|
|||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
class LLFacebookConnectHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
|
|
@ -87,6 +86,10 @@ class LLFacebookConnectResponder : public LLHTTPClient::Responder
|
|||
{
|
||||
LOG_CLASS(LLFacebookConnectResponder);
|
||||
public:
|
||||
LLFacebookConnectResponder()
|
||||
{
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTION_IN_PROGRESS);
|
||||
}
|
||||
|
||||
virtual void completed(U32 status, const std::string& reason, const LLSD& content)
|
||||
{
|
||||
|
|
@ -95,11 +98,12 @@ public:
|
|||
LL_DEBUGS("FacebookConnect") << "Connect successful. content: " << content << LL_ENDL;
|
||||
|
||||
// Grab some graph data now that we are connected
|
||||
LLFacebookConnect::instance().setConnected(true);
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTED);
|
||||
LLFacebookConnect::instance().loadFacebookFriends();
|
||||
}
|
||||
else
|
||||
{
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTION_FAILED);
|
||||
prompt_user_for_error(status, reason, content.get("error_code"), content.get("error_description"));
|
||||
LL_WARNS("FacebookConnect") << "Failed to get a response. reason: " << reason << " status: " << status << LL_ENDL;
|
||||
}
|
||||
|
|
@ -169,7 +173,7 @@ public:
|
|||
LL_DEBUGS("FacebookConnect") << "Disconnect successful. content: " << content << LL_ENDL;
|
||||
|
||||
// Clear all facebook stuff
|
||||
LLFacebookConnect::instance().setConnected(false);
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_NOT_CONNECTED);
|
||||
LLFacebookConnect::instance().clearContent();
|
||||
}
|
||||
else
|
||||
|
|
@ -187,10 +191,10 @@ class LLFacebookConnectedResponder : public LLHTTPClient::Responder
|
|||
LOG_CLASS(LLFacebookConnectedResponder);
|
||||
public:
|
||||
|
||||
LLFacebookConnectedResponder(bool show_login_if_not_connected, bool show_error_if_not_connected)
|
||||
: mShowLoginIfNotConnected(show_login_if_not_connected),
|
||||
mShowErrorIfNotConnected(show_error_if_not_connected)
|
||||
{}
|
||||
LLFacebookConnectedResponder()
|
||||
{
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTION_IN_PROGRESS);
|
||||
}
|
||||
|
||||
virtual void completed(U32 status, const std::string& reason, const LLSD& content)
|
||||
{
|
||||
|
|
@ -199,7 +203,7 @@ public:
|
|||
LL_DEBUGS("FacebookConnect") << "Connect successful. content: " << content << LL_ENDL;
|
||||
|
||||
// Grab some graph data if already connected
|
||||
LLFacebookConnect::instance().setConnected(true);
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTED);
|
||||
LLFacebookConnect::instance().loadFacebookFriends();
|
||||
}
|
||||
else
|
||||
|
|
@ -207,20 +211,19 @@ public:
|
|||
LL_WARNS("FacebookConnect") << "Failed to get a response. reason: " << reason << " status: " << status << LL_ENDL;
|
||||
|
||||
// show the facebook login page if not connected yet
|
||||
if ((status == 404) && mShowLoginIfNotConnected)
|
||||
if (status == 404)
|
||||
{
|
||||
LLFacebookConnect::instance().connectToFacebook();
|
||||
}
|
||||
else if(mShowErrorIfNotConnected)
|
||||
else
|
||||
{
|
||||
LLFacebookConnect::instance().setConnectionState(LLFacebookConnect::FB_CONNECTION_FAILED);
|
||||
prompt_user_for_error(status, reason, content.get("error_code"), content.get("error_description"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
bool mShowLoginIfNotConnected;
|
||||
bool mShowErrorIfNotConnected;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -257,7 +260,7 @@ public:
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
LLFacebookConnect::LLFacebookConnect()
|
||||
: mConnectedToFbc(false),
|
||||
: mConnectionState(FB_NOT_CONNECTED),
|
||||
mContent(),
|
||||
mGeneration(0)
|
||||
{
|
||||
|
|
@ -291,23 +294,15 @@ void LLFacebookConnect::disconnectFromFacebook()
|
|||
LLHTTPClient::del(getFacebookConnectURL("/connection"), new LLFacebookDisconnectResponder());
|
||||
}
|
||||
|
||||
void LLFacebookConnect::tryToReconnectToFacebook()
|
||||
{
|
||||
if (!mConnectedToFbc)
|
||||
{
|
||||
const bool follow_redirects=false;
|
||||
const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
|
||||
LLHTTPClient::get(getFacebookConnectURL("/connection"), new LLFacebookConnectedResponder(false, false),
|
||||
LLSD(), timeout, follow_redirects);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFacebookConnect::getConnectionToFacebook()
|
||||
{
|
||||
const bool follow_redirects=false;
|
||||
const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
|
||||
LLHTTPClient::get(getFacebookConnectURL("/connection"), new LLFacebookConnectedResponder(true, true),
|
||||
LLSD(), timeout, follow_redirects);
|
||||
if ((mConnectionState == FB_NOT_CONNECTED) || (mConnectionState == FB_CONNECTION_FAILED))
|
||||
{
|
||||
const bool follow_redirects=false;
|
||||
const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
|
||||
LLHTTPClient::get(getFacebookConnectURL("/connection"), new LLFacebookConnectedResponder(),
|
||||
LLSD(), timeout, follow_redirects);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFacebookConnect::loadFacebookFriends()
|
||||
|
|
|
|||
|
|
@ -41,13 +41,20 @@ class LLFacebookConnect : public LLSingleton<LLFacebookConnect>
|
|||
{
|
||||
LOG_CLASS(LLFacebookConnect);
|
||||
public:
|
||||
enum EConnectionState
|
||||
{
|
||||
FB_NOT_CONNECTED = 0,
|
||||
FB_CONNECTION_IN_PROGRESS = 1,
|
||||
FB_CONNECTED = 2,
|
||||
FB_CONNECTION_FAILED = 3
|
||||
};
|
||||
|
||||
typedef boost::function<void(bool ok)> share_callback_t;
|
||||
typedef boost::function<void()> content_updated_callback_t;
|
||||
|
||||
void connectToFacebook(const std::string& auth_code = "");
|
||||
void disconnectFromFacebook();
|
||||
void tryToReconnectToFacebook();
|
||||
void getConnectionToFacebook();
|
||||
void connectToFacebook(const std::string& auth_code = ""); // Initiate the complete FB connection. Please use getConnectionToFacebook() in normal use.
|
||||
void disconnectFromFacebook(); // Disconnect from the FBC service.
|
||||
void getConnectionToFacebook(); // Check if an access token is available on the FBC service. If not, call connectToFacebook().
|
||||
|
||||
void loadFacebookFriends();
|
||||
void postCheckin(const std::string& location, const std::string& name, const std::string& description, const std::string& picture, const std::string& message);
|
||||
|
|
@ -64,21 +71,20 @@ public:
|
|||
void storeContent(const LLSD& content);
|
||||
const LLSD& getContent() const;
|
||||
|
||||
void setConnected(bool connected) { mConnectedToFbc = connected; }
|
||||
bool getConnected() { return mConnectedToFbc; }
|
||||
void setConnectionState(EConnectionState connection_state) { mConnectionState = connection_state; }
|
||||
bool isConnected() { return (mConnectionState == FB_CONNECTED); }
|
||||
S32 generation() { return mGeneration; }
|
||||
|
||||
void openFacebookWeb(std::string url);
|
||||
|
||||
private:
|
||||
|
||||
friend class LLSingleton<LLFacebookConnect>;
|
||||
|
||||
LLFacebookConnect();
|
||||
~LLFacebookConnect() {};
|
||||
std::string getFacebookConnectURL(const std::string& route = "");
|
||||
|
||||
bool mConnectedToFbc;
|
||||
EConnectionState mConnectionState;
|
||||
LLSD mContent;
|
||||
S32 mGeneration;
|
||||
|
||||
|
|
|
|||
|
|
@ -2250,9 +2250,9 @@ void LLFloaterSnapshot::update()
|
|||
|
||||
// We need to pool on facebook connection as it might change any time
|
||||
static bool s_facebook_connected = false;
|
||||
if (LLFacebookConnect::instance().getConnected() != s_facebook_connected)
|
||||
if (LLFacebookConnect::instance().isConnected() != s_facebook_connected)
|
||||
{
|
||||
s_facebook_connected = LLFacebookConnect::instance().getConnected();
|
||||
s_facebook_connected = LLFacebookConnect::instance().isConnected();
|
||||
changed = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -966,7 +966,7 @@ void LLPanelPeople::updateFacebookList(bool visible)
|
|||
if (mTryToConnectToFbc)
|
||||
{
|
||||
// try to reconnect to facebook!
|
||||
LLFacebookConnect::instance().tryToReconnectToFacebook();
|
||||
LLFacebookConnect::instance().getConnectionToFacebook();
|
||||
|
||||
// don't try again
|
||||
mTryToConnectToFbc = false;
|
||||
|
|
@ -1717,7 +1717,7 @@ void LLPanelPeople::addParticipantToModel(LLPersonTabModel * person_folder_model
|
|||
|
||||
void LLPanelPeople::onLoginFbcButtonClicked()
|
||||
{
|
||||
if (LLFacebookConnect::instance().getConnected())
|
||||
if (LLFacebookConnect::instance().isConnected())
|
||||
{
|
||||
LLFacebookConnect::instance().disconnectFromFacebook();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ BOOL LLPanelSnapshotFacebook::postBuild()
|
|||
// virtual
|
||||
void LLPanelSnapshotFacebook::onOpen(const LLSD& key)
|
||||
{
|
||||
if (!LLFacebookConnect::instance().getConnected())
|
||||
if (!LLFacebookConnect::instance().isConnected())
|
||||
{
|
||||
LLFacebookConnect::instance().getConnectionToFacebook();
|
||||
}
|
||||
|
|
@ -99,7 +99,7 @@ void LLPanelSnapshotFacebook::onOpen(const LLSD& key)
|
|||
void LLPanelSnapshotFacebook::updateControls(const LLSD& info)
|
||||
{
|
||||
const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
|
||||
const bool is_connected = LLFacebookConnect::instance().getConnected();
|
||||
const bool is_connected = LLFacebookConnect::instance().isConnected();
|
||||
getChild<LLUICtrl>("post_btn")->setEnabled(have_snapshot && is_connected);
|
||||
}
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ void LLPanelSnapshotFacebook::updateControls(const LLSD& info)
|
|||
void LLPanelSnapshotFacebook::updateCustomResControls()
|
||||
{
|
||||
LLPanelSnapshot::updateCustomResControls();
|
||||
const bool is_connected = LLFacebookConnect::instance().getConnected();
|
||||
const bool is_connected = LLFacebookConnect::instance().isConnected();
|
||||
getChild<LLUICtrl>("post_btn")->setEnabled(is_connected);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5974,7 +5974,7 @@ void handle_report_abuse()
|
|||
|
||||
void handle_facebook_connect()
|
||||
{
|
||||
if (!LLFacebookConnect::instance().getConnected())
|
||||
if (!LLFacebookConnect::instance().isConnected())
|
||||
{
|
||||
LLFacebookConnect::instance().getConnectionToFacebook();
|
||||
}
|
||||
|
|
@ -5983,7 +5983,7 @@ void handle_facebook_connect()
|
|||
bool enable_facebook_connect()
|
||||
{
|
||||
// The menu item will be disabled if we are already connected
|
||||
return !LLFacebookConnect::instance().getConnected();
|
||||
return !LLFacebookConnect::instance().isConnected();
|
||||
}
|
||||
|
||||
void handle_facebook_checkin()
|
||||
|
|
|
|||
Loading…
Reference in New Issue