summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2013-05-09 10:25:21 -0700
committerMerov Linden <merov@lindenlab.com>2013-05-09 10:25:21 -0700
commit62eda57ea1f4d3e39aa34010f7709908f24fb6e2 (patch)
tree54d398b5c66fd76df2bb8ff0a4595f2b6b63adf2
parent14be8efcc6a9797d2041e56addd0897f0b4234ea (diff)
ACME-348 : WIP : LLFacebookConnect refactorin completed. Not functional yet though.
-rw-r--r--indra/newview/llfacebookconnect.cpp92
-rw-r--r--indra/newview/llfacebookconnect.h8
-rw-r--r--indra/newview/llpanelpeople.cpp72
-rw-r--r--indra/newview/llpanelpeople.h9
4 files changed, 98 insertions, 83 deletions
diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp
index 1962f6fd97..ec2085c2ac 100644
--- a/indra/newview/llfacebookconnect.cpp
+++ b/indra/newview/llfacebookconnect.cpp
@@ -29,6 +29,38 @@
#include "llfacebookconnect.h"
+#include "llagent.h"
+#include "llcallingcard.h" // for LLAvatarTracker
+//#include "llcommandhandler.h"
+#include "llhttpclient.h"
+
+///////////////////////////////////////////////////////////////////////////////
+//
+/*
+class LLFacebookConnectHandler : public LLCommandHandler
+{
+public:
+ LLFacebookConnectHandler() : LLCommandHandler("fbc", UNTRUSTED_THROTTLE) { }
+
+ bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web)
+ {
+ if (tokens.size() > 0)
+ {
+ if (tokens[0].asString() == "connect")
+ {
+ if (query_map.has("code"))
+ {
+ LLFacebookConnect::instance().connectToFacebook(query_map["code"]);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+};
+LLFacebookConnectHandler gFacebookConnectHandler;
+*/
+
///////////////////////////////////////////////////////////////////////////////
//
class LLFacebookConnectResponder : public LLHTTPClient::Responder
@@ -81,7 +113,7 @@ public:
//
class LLFacebookConnectedResponder : public LLHTTPClient::Responder
{
- LOG_CLASS(LLFacebookDisconnectResponder);
+ LOG_CLASS(LLFacebookConnectedResponder);
public:
LLFacebookConnectedResponder(bool show_login_if_not_connected) : mShowLoginIfNotConnected(show_login_if_not_connected) {}
@@ -147,11 +179,20 @@ void LLFacebookConnect::init()
{
}
+std::string LLFacebookConnect::getFacebookConnectURL(const std::string& route)
+{
+ //static std::string sFacebookConnectUrl = gAgent.getRegion()->getCapability("FacebookConnect");
+ static std::string sFacebookConnectUrl = "https://pdp15.lindenlab.com/fbc/agent/" + gAgentID.asString(); // TEMPORARY HACK FOR FB DEMO - Cho
+ std::string url = sFacebookConnectUrl + route;
+ llinfos << url << llendl;
+ return url;
+}
+
void LLFacebookConnect::loadFacebookFriends()
{
const bool follow_redirects=false;
const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
- LLHTTPClient::get(getFacebookConnectURL("/friend"), new FacebookFriendsResponder(this),
+ LLHTTPClient::get(getFacebookConnectURL("/friend"), new LLFacebookFriendsResponder(),
LLSD(), timeout, follow_redirects);
}
@@ -167,15 +208,41 @@ void LLFacebookConnect::connectToFacebook(const std::string& auth_code)
if (!auth_code.empty())
body["code"] = auth_code;
- LLHTTPClient::put(getFacebookConnectURL("/connection"), body, new FacebookConnectResponder(this));
+ LLHTTPClient::put(getFacebookConnectURL("/connection"), body, new LLFacebookConnectResponder());
+}
+
+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),
+ 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),
+ LLSD(), timeout, follow_redirects);
}
void LLFacebookConnect::showFacebookFriends(const LLSD& friends)
{
- /* All that needs to be rewritten to
- mFacebookFriends->clear();
- LLPersonTabModel::tab_type tab_type;
+ /* All that needs to be rewritten a different way */
+ // FOR TESTING ONLY!! Print out the data in the log
+ //mFacebookFriends->clear();
+ //LLPersonTabModel::tab_type tab_type;
LLAvatarTracker& avatar_tracker = LLAvatarTracker::instance();
+ llinfos << "LLFacebookConnect::showFacebookFriends" << llendl;
for (LLSD::map_const_iterator i = friends.beginMap(); i != friends.endMap(); ++i)
{
@@ -183,27 +250,32 @@ void LLFacebookConnect::showFacebookFriends(const LLSD& friends)
LLUUID agent_id = i->second.has("agent_id") ? i->second["agent_id"].asUUID() : LLUUID(NULL);
//add to avatar list
- mFacebookFriends->addNewItem(agent_id, name, false);
+ //mFacebookFriends->addNewItem(agent_id, name, false);
//FB+SL but not SL friend
+ bool is_SL_friend = false;
if(agent_id.notNull() && !avatar_tracker.isBuddy(agent_id))
{
- tab_type = LLPersonTabModel::FB_SL_NON_SL_FRIEND;
+ //tab_type = LLPersonTabModel::FB_SL_NON_SL_FRIEND;
+ is_SL_friend = false;
}
//FB only friend
else
{
- tab_type = LLPersonTabModel::FB_ONLY_FRIEND;
+ //tab_type = LLPersonTabModel::FB_ONLY_FRIEND;
+ is_SL_friend = true;
}
+ llinfos << "LLFacebookConnect : agent_id = " << agent_id << ", name = " << name << ", SL friend = " << is_SL_friend << llendl;
//Add to person tab model
+ /*
LLPersonTabModel * person_tab_model = dynamic_cast<LLPersonTabModel *>(mPersonFolderView->getPersonTabModelByIndex(tab_type));
if(person_tab_model)
{
addParticipantToModel(person_tab_model, agent_id, name);
}
+ */
}
- */
}
diff --git a/indra/newview/llfacebookconnect.h b/indra/newview/llfacebookconnect.h
index d60fdacd90..c42d8c8edc 100644
--- a/indra/newview/llfacebookconnect.h
+++ b/indra/newview/llfacebookconnect.h
@@ -49,9 +49,14 @@ public:
void loadFacebookFriends();
void hideFacebookFriends();
void connectToFacebook(const std::string& auth_code = "");
+ void disconnectFromFacebook();
+ void tryToReconnectToFacebook();
+ void getConnectionToFacebook();
+
void showFacebookFriends(const LLSD& friends);
void setConnected(bool connected) { mConnectedToFbc = connected; }
+ bool getConnected() { return mConnectedToFbc; }
private:
@@ -59,7 +64,8 @@ private:
LLFacebookConnect();
~LLFacebookConnect() {};
-
+ std::string getFacebookConnectURL(const std::string& route = "");
+
bool mConnectedToFbc;
};
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index ce3ae48aca..02a254b76c 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -54,8 +54,8 @@
#include "llcallingcard.h" // for LLAvatarTracker
#include "llcallbacklist.h"
#include "llerror.h"
+#include "llfacebookconnect.h"
#include "llfloateravatarpicker.h"
-//#include "llfloaterminiinspector.h"
#include "llfriendcard.h"
#include "llgroupactions.h"
#include "llgrouplist.h"
@@ -76,7 +76,6 @@
#include "llspeakers.h"
#include "llfloaterwebcontent.h"
#include "llurlaction.h"
-#include "llcommandhandler.h"
#define FRIEND_LIST_UPDATE_TIMEOUT 0.5
#define NEARBY_LIST_UPDATE_INTERVAL 1
@@ -91,35 +90,6 @@ static const std::string FBCTEST_TAB_NAME = "fbctest_panel";
static const std::string FBCTESTTWO_TAB_NAME = "fbctesttwo_panel";
static const std::string COLLAPSED_BY_USER = "collapsed_by_user";
-class LLFacebookConnectHandler : public LLCommandHandler
-{
-public:
- LLFacebookConnectHandler() : LLCommandHandler("fbc", UNTRUSTED_THROTTLE), mPanelPeople(NULL) { }
-
- LLPanelPeople* mPanelPeople;
-
- bool handle(const LLSD& tokens, const LLSD& query_map,
- LLMediaCtrl* web)
- {
- if (tokens.size() > 0)
- {
- if (tokens[0].asString() == "connect")
- {
- if (query_map.has("code"))
- {
- if (mPanelPeople)
- {
- mPanelPeople->connectToFacebook(query_map["code"]);
- mPanelPeople = NULL;
- }
- }
- return true;
- }
- }
- return false;
- }
-};
-LLFacebookConnectHandler gFacebookConnectHandler;
/** Comparator for comparing avatar items by last interaction date */
class LLAvatarItemRecentComparator : public LLAvatarItemComparator
@@ -577,7 +547,6 @@ private:
LLPanelPeople::LLPanelPeople()
: LLPanel(),
- mConnectedToFbc(false),
mPersonFolderView(NULL),
mTryToConnectToFbc(true),
mTabContainer(NULL),
@@ -947,7 +916,7 @@ void LLPanelPeople::updateFbcTestList()
if (mTryToConnectToFbc)
{
// try to reconnect to facebook!
- tryToReconnectToFacebook();
+ LLFacebookConnect::instance().tryToReconnectToFacebook();
// don't try again
mTryToConnectToFbc = false;
@@ -1633,11 +1602,12 @@ bool LLPanelPeople::isAccordionCollapsedByUser(const std::string& name)
return isAccordionCollapsedByUser(getChild<LLUICtrl>(name));
}
+/*
void LLPanelPeople::openFacebookWeb(std::string url)
{
- gFacebookConnectHandler.mPanelPeople = this;
LLUrlAction::openURLExternal(url);
}
+*/
void LLPanelPeople::addTestParticipant()
{
@@ -1691,43 +1661,15 @@ void LLPanelPeople::addParticipantToModel(LLPersonTabModel * person_folder_model
person_folder_model->addParticipant(person_model);
}
-void LLPanelPeople::tryToReconnectToFacebook()
-{
- if (!mConnectedToFbc)
- {
- const bool follow_redirects=false;
- const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
- LLHTTPClient::get(getFacebookConnectURL("/connection"), new FacebookConnectedResponder(this, false),
- LLSD(), timeout, follow_redirects);
- }
-}
-
-void LLPanelPeople::disconnectFromFacebook()
-{
- LLHTTPClient::del(getFacebookConnectURL("/connection"), new FacebookDisconnectResponder(this));
-}
-
-std::string LLPanelPeople::getFacebookConnectURL(const std::string& route)
-{
- //static std::string sFacebookConnectUrl = gAgent.getRegion()->getCapability("FacebookConnect");
- static std::string sFacebookConnectUrl = "https://pdp15.lindenlab.com/fbc/agent/" + gAgentID.asString(); // TEMPORARY HACK FOR FB DEMO - Cho
- std::string url = sFacebookConnectUrl + route;
- llinfos << url << llendl;
- return url;
-}
-
void LLPanelPeople::onLoginFbcButtonClicked()
{
- if (mConnectedToFbc)
+ if (LLFacebookConnect::instance().getConnected())
{
- disconnectFromFacebook();
+ LLFacebookConnect::instance().disconnectFromFacebook();
}
else
{
- const bool follow_redirects=false;
- const F32 timeout=HTTP_REQUEST_EXPIRY_SECS;
- LLHTTPClient::get(getFacebookConnectURL("/connection"), new FacebookConnectedResponder(this, true),
- LLSD(), timeout, follow_redirects);
+ LLFacebookConnect::instance().getConnectionToFacebook();
}
}
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index fa354f7ecb..2f74064327 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -62,16 +62,11 @@ public:
static void idle(void * user_data);
- void openFacebookWeb(std::string url);
+// void openFacebookWeb(std::string url);
void addTestParticipant();
void addParticipantToModel(LLPersonTabModel * session_model, const LLUUID& agent_id, const std::string& name);
- void tryToReconnectToFacebook();
- void disconnectFromFacebook();
- std::string getFacebookConnectURL(const std::string& route = "");
-
- bool mConnectedToFbc;
- bool mTryToConnectToFbc;
+ bool mTryToConnectToFbc;
// internals
class Updater;