summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilbert Gonzales <gilbert@lindenlab.com>2013-04-01 23:11:41 -0700
committerGilbert Gonzales <gilbert@lindenlab.com>2013-04-01 23:11:41 -0700
commitdff338462433467f29bf7ee78dbf9877759dedde (patch)
treeba4607c74530bdab73ca9f7f6dce054d9e30d4f9
parent0a4ab0c64790b82edba369891a1983cd4b7f84f2 (diff)
parent4fe3e00aad663d1afd35007b4e8093ae4e58e92e (diff)
merge
-rw-r--r--indra/newview/llpanelpeople.cpp92
-rw-r--r--indra/newview/llpanelpeople.h3
2 files changed, 86 insertions, 9 deletions
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 7a3e6abb7f..05dcdd97fa 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -885,10 +885,38 @@ void LLPanelPeople::updateRecentList()
void LLPanelPeople::updateFbcTestList()
{
- mFacebookFriends->addSocialItem(LLUUID(), "TEST", false);
-
- // stop updating
- mFbcTestListUpdater->setActive(false);
+ if (!mFbcTestText)
+ return;
+
+ if (mFbcTestBrowserHandle.get())
+ {
+ // get the browser data (from the title bar, of course!)
+ std::string title = mFbcTestBrowserHandle.get()->getTitle();
+
+ // if the data is ready (if it says the magic word)
+ if (title.length() >= 2 && title[0] == ':')
+ {
+ // success! :)
+ if (title[1] == ')')
+ {
+ mFbcTestText->setText(std::string("okay, now we can get the list of friends!"));
+
+ // get the friends
+ getFacebookFriends();
+ }
+ // failure :(
+ else if (title[1] == '(')
+ {
+ mFbcTestText->setText(std::string("hmm, the authentication failed somehow"));
+ }
+
+ // close the browser window
+ mFbcTestBrowserHandle.get()->die();
+
+ // stop updating
+ mFbcTestListUpdater->setActive(false);
+ }
+ }
}
void LLPanelPeople::buttonSetVisible(std::string btn_name, BOOL visible)
@@ -1642,13 +1670,28 @@ void LLPanelPeople::openFacebookWeb(LLFloaterWebContent::Params& p)
}
}
-class LLFacebookLogin : public LLHTTPClient::Responder
+void LLPanelPeople::showFacebookFriends(const LLSD& friends)
+{
+ std::string text = "Facebook Friends";
+ for (LLSD::array_const_iterator i = friends.beginArray(); i != friends.endArray(); ++i)
+ {
+ std::string name = (*i)["name"].asString();
+ std::string id = (*i)["id"].asString();
+
+ text += "\n" + name + " (" + id + ")";
+ }
+
+ // display the facebook friend data on the test text box
+ mFbcTestText->setText(text);
+}
+
+class FacebookLoginResponder : public LLHTTPClient::Responder
{
public:
LLPanelPeople * mPanelPeople;
- LLFacebookLogin(LLPanelPeople * panel_people) : mPanelPeople(panel_people) {}
+ FacebookLoginResponder(LLPanelPeople * panel_people) : mPanelPeople(panel_people) {}
/*virtual*/ void completed(U32 status, const std::string& reason, const LLSD& content)
{
@@ -1663,7 +1706,7 @@ public:
//use the token to pull down graph data
if(has_token)
{
-
+ mPanelPeople->getFacebookFriends();
}
//request user to login
else
@@ -1680,9 +1723,40 @@ public:
}
};
+class FacebookFriendsResponder : public LLHTTPClient::Responder
+{
+public:
+
+ LLPanelPeople * mPanelPeople;
+
+ FacebookFriendsResponder(LLPanelPeople * panel_people) : mPanelPeople(panel_people) {}
+
+ /*virtual*/ void completed(U32 status, const std::string& reason, const LLSD& content)
+ {
+ // in case of invalid characters, the avatar picker returns a 400
+ // just set it to process so it displays 'not found'
+ if (isGoodStatus(status) || status == 400)
+ {
+ llinfos << content << llendl;
+
+ // display the friend data
+ mPanelPeople->showFacebookFriends(content["friends"]);
+ }
+ else
+ {
+ llinfos << "failed to get response. reason: " << reason << " status: " << status << llendl;
+ }
+ }
+};
+
+void LLPanelPeople::getFacebookFriends()
+{
+ LLHTTPClient::get(FBC_SERVICES_URL + "/get-friends/" + gAgentID.asString(), new FacebookFriendsResponder(this));
+}
+
void LLPanelPeople::onLoginFbcButtonClicked()
{
- LLHTTPClient::get("https://pdp15.lindenlab.com/has-access-token/" + gAgentID.asString(), new LLFacebookLogin(this));
+ LLHTTPClient::get(FBC_SERVICES_URL + "/has-access-token/" + gAgentID.asString(), new FacebookLoginResponder(this));
}
void LLPanelPeople::onFacebookAppRequestClicked()
@@ -1695,7 +1769,7 @@ void LLPanelPeople::onFacebookAppRequestClicked()
void LLPanelPeople::onFacebookAppSendClicked()
{
LLFloaterWebContent::Params p;
- p.url("https://www.facebook.com/dialog/send?app_id=565771023434202&name=Test&link=http://www.cnet.com&redirect_uri=" + FBC_SERVICES_URL);
+ p.url("https://www.facebook.com/dialog/send?app_id=565771023434202&name=Join Second Life!&link=https://join.secondlife.com&redirect_uri=" + FBC_SERVICES_URL);
openFacebookWeb(p);
}
// EOF
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index a00b5be516..dab5d74f77 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -56,7 +56,10 @@ public:
// Implements LLVoiceClientStatusObserver::onChange() to enable call buttons
// when voice is available
/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
+
void openFacebookWeb(LLFloaterWebContent::Params& p);
+ void showFacebookFriends(const LLSD& friends);
+ void getFacebookFriends();
// internals
class Updater;