Skip to content
Snippets Groups Projects
Commit eeccd4c3 authored by Merov Linden's avatar Merov Linden
Browse files

DD-22 : WIP : Cleaned up error handling in GET merchant

parent f15442a8
No related branches found
No related tags found
No related merge requests found
...@@ -234,7 +234,7 @@ void LLFloaterMarketplaceListings::onOpen(const LLSD& key) ...@@ -234,7 +234,7 @@ void LLFloaterMarketplaceListings::onOpen(const LLSD& key)
// //
// Initialize the Market Place or go update the marketplace listings // Initialize the Market Place or go update the marketplace listings
// //
if (LLMarketplaceData::instance().getSLMStatus() == MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED) if (LLMarketplaceData::instance().getSLMStatus() <= MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE)
{ {
initializeMarketPlace(); initializeMarketPlace();
} }
...@@ -350,7 +350,28 @@ void LLFloaterMarketplaceListings::setStatusString(const std::string& statusStri ...@@ -350,7 +350,28 @@ void LLFloaterMarketplaceListings::setStatusString(const std::string& statusStri
} }
void LLFloaterMarketplaceListings::updateView() void LLFloaterMarketplaceListings::updateView()
{ {
U32 mkt_status = LLMarketplaceData::instance().getSLMStatus();
// Get or create the root folder if we are a merchant and it hasn't been done already
if (mRootFolderId.isNull() && (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MERCHANT))
{
setup();
}
// Update the bottom initializing status and progress dial
if (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING)
{
setStatusString(getString("MarketplaceListingsInitializing"));
mInventoryInitializationInProgress->setVisible(true);
}
else
{
setStatusString("");
mInventoryInitializationInProgress->setVisible(false);
}
// Update the middle portion : tabs or messages
if (getFolderCount() > 0) if (getFolderCount() > 0)
{ {
mPanelListings->setVisible(TRUE); mPanelListings->setVisible(TRUE);
...@@ -366,26 +387,7 @@ void LLFloaterMarketplaceListings::updateView() ...@@ -366,26 +387,7 @@ void LLFloaterMarketplaceListings::updateView()
std::string tooltip; std::string tooltip;
const LLSD& subs = getMarketplaceStringSubstitutions(); const LLSD& subs = getMarketplaceStringSubstitutions();
U32 mkt_status = LLMarketplaceData::instance().getSLMStatus();
// Get or create the root folder if we are a merchant and it hasn't been done already
if (mRootFolderId.isNull() && (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MERCHANT))
{
setup();
}
// Update the bottom initializing status and progress dial
if (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING)
{
setStatusString(getString("MarketplaceListingsInitializing"));
mInventoryInitializationInProgress->setVisible(true);
}
else
{
setStatusString("");
mInventoryInitializationInProgress->setVisible(false);
}
// Update the top message or flip to the tabs and folders view // Update the top message or flip to the tabs and folders view
// *TODO : check those messages and create better appropriate ones in strings.xml // *TODO : check those messages and create better appropriate ones in strings.xml
if (mRootFolderId.notNull()) if (mRootFolderId.notNull())
......
...@@ -97,6 +97,15 @@ LLSD getMarketplaceStringSubstitutions() ...@@ -97,6 +97,15 @@ LLSD getMarketplaceStringSubstitutions()
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// SLM Responders // SLM Responders
void log_SLM_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description)
{
LL_WARNS("SLM") << request << " request failed with a " << status << " " << reason << ". Reason: " << code << " (" << description << ")" << LL_ENDL;
}
// Merov: This is a temporary hack used by dev while secondlife-staging is down...
// *TODO : Suppress that before shipping!
static bool sBypassMerchant = false;
class LLSLMMerchantResponder : public LLHTTPClient::Responder class LLSLMMerchantResponder : public LLHTTPClient::Responder
{ {
LOG_CLASS(LLSLMMerchantResponder); LOG_CLASS(LLSLMMerchantResponder);
...@@ -104,32 +113,23 @@ public: ...@@ -104,32 +113,23 @@ public:
LLSLMMerchantResponder() {} LLSLMMerchantResponder() {}
virtual void completed(U32 status, const std::string& reason, const LLSD& content) virtual void completed(U32 status, const std::string& reason, const LLSD& content) { }
{
if (isGoodStatus(status))
{
llinfos << "Merov : completed successful, status = " << status << ", reason = " << reason << ", content = " << content << llendl;
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT);
}
else
{
llinfos << "Merov : completed with error, status = " << status << ", reason = " << reason << ", content = " << content << llendl;
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT);
}
}
void completedHeader(U32 status, const std::string& reason, const LLSD& content) void completedHeader(U32 status, const std::string& reason, const LLSD& content)
{ {
if (isGoodStatus(status)) if (isGoodStatus(status) || sBypassMerchant)
{ {
llinfos << "Merov : completed header successful, status = " << status << ", reason = " << reason << ", content = " << content << llendl;
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT); LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT);
} }
else else if (status == SLMErrorCodes::SLM_NOT_FOUND)
{ {
llinfos << "Merov : completed header with error, status = " << status << ", reason = " << reason << ", content = " << content << llendl;
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT); LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT);
} }
else
{
log_SLM_error("Get merchant", status, reason, content.get("error_code"), content.get("error_description"));
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE);
}
} }
}; };
......
...@@ -115,6 +115,15 @@ private: ...@@ -115,6 +115,15 @@ private:
// * provide methods to get Marketplace data on any inventory item // * provide methods to get Marketplace data on any inventory item
// * set Marketplace data // * set Marketplace data
// * signal Marketplace updates to inventory // * signal Marketplace updates to inventory
namespace SLMErrorCodes
{
enum eCode
{
SLM_DONE = 200,
SLM_NOT_FOUND = 404,
};
}
class LLMarketplaceData; class LLMarketplaceData;
// A Marketplace item is known by its tuple // A Marketplace item is known by its tuple
...@@ -145,7 +154,7 @@ class LLMarketplaceData ...@@ -145,7 +154,7 @@ class LLMarketplaceData
public: public:
LLMarketplaceData(); LLMarketplaceData();
// SLM // SLM Public
typedef boost::signals2::signal<void ()> status_updated_signal_t; typedef boost::signals2::signal<void ()> status_updated_signal_t;
U32 getSLMStatus() const { return mMarketPlaceStatus; } U32 getSLMStatus() const { return mMarketPlaceStatus; }
void setSLMStatus(U32 status); void setSLMStatus(U32 status);
...@@ -155,7 +164,6 @@ public: ...@@ -155,7 +164,6 @@ public:
//void postSLMListing(); //void postSLMListing();
//void modifySLMListing(); //void modifySLMListing();
//void associateSLMListing(); //void associateSLMListing();
std::string getSLMConnectURL(const std::string& route);
bool isEmpty() { return (mMarketplaceItems.size() == 0); } bool isEmpty() { return (mMarketplaceItems.size() == 0); }
...@@ -184,9 +192,14 @@ public: ...@@ -184,9 +192,14 @@ public:
S32 getTestMarketplaceID(); S32 getTestMarketplaceID();
private: private:
// SLM Private
std::string getSLMConnectURL(const std::string& route);
marketplace_items_list_t mMarketplaceItems; marketplace_items_list_t mMarketplaceItems;
U32 mMarketPlaceStatus; U32 mMarketPlaceStatus;
status_updated_signal_t * mStatusUpdatedSignal; status_updated_signal_t * mStatusUpdatedSignal;
// Merov : This is for test only, waiting for SLM API // Merov : This is for test only, waiting for SLM API
S32 mTestCurrentMarketplaceID; S32 mTestCurrentMarketplaceID;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment