diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfloatermarketplacelistings.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llmarketplacefunctions.cpp | 43 | ||||
| -rw-r--r-- | indra/newview/llmarketplacefunctions.h | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 8 | 
4 files changed, 60 insertions, 14 deletions
| diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp index 524162ba51..e755e9924c 100644 --- a/indra/newview/llfloatermarketplacelistings.cpp +++ b/indra/newview/llfloatermarketplacelistings.cpp @@ -579,7 +579,25 @@ void LLFloaterMarketplaceListings::updateView()          // Update the top message or flip to the tabs and folders view          // *TODO : check those messages and create better appropriate ones in strings.xml -        if (mRootFolderId.notNull()) +        if (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE) +        { +            std::string reason = LLMarketplaceData::instance().getSLMConnectionfailureReason(); +            if (reason.empty()) +            { +                text = LLTrans::getString("InventoryMarketplaceConnectionError"); +            } +            else +            { +                LLSD args; +                args["[REASON]"] = reason; +                text = LLTrans::getString("InventoryMarketplaceConnectionErrorReason", args); +            } + +            title = LLTrans::getString("InventoryOutboxErrorTitle"); +            tooltip = LLTrans::getString("InventoryOutboxErrorTooltip"); +            LL_WARNS() << "Marketplace status code: " << mkt_status << LL_ENDL; +        } +        else if (mRootFolderId.notNull())          {              // "Marketplace listings is empty!" message strings              text = LLTrans::getString("InventoryMarketplaceListingsNoItems", subs); diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index 044c76ce2c..dd4ae4d201 100644 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -758,7 +758,14 @@ void LLMarketplaceData::initializeSLM(const status_updated_signal_t::slot_type&      if (mMarketPlaceStatus != MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED)      {          // If already initialized, just confirm the status so the callback gets called -        setSLMStatus(mMarketPlaceStatus); +        if (mMarketPlaceFailureReason.empty()) +        { +            setSLMStatus(mMarketPlaceStatus); +        } +        else +        { +            setSLMConnectionFailure(mMarketPlaceFailureReason); +        }      }      else      { @@ -799,28 +806,27 @@ void LLMarketplaceData::getMerchantStatusCoro()          if (httpCode == HTTP_NOT_FOUND)          {              log_SLM_infos("Get /merchant", httpCode, std::string("User is not a merchant")); -            setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT); +            LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT);          }          else if (httpCode == HTTP_SERVICE_UNAVAILABLE)          {              log_SLM_infos("Get /merchant", httpCode, std::string("Merchant is not migrated")); -            setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT); +            LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT);          } -        else if (httpCode == HTTP_INTERNAL_ERROR) +        else          { -            // 499 includes timeout and ssl error - marketplace is down or having issues, we do not show it in this request according to MAINT-5938              LL_WARNS("SLM") << "SLM Merchant Request failed with status: " << httpCode                                      << ", reason : " << status.toString()                                      << ", code : " << result["error_code"].asString()                                      << ", description : " << result["error_description"].asString() << LL_ENDL; -            LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE); -        } -        else -        { -            std::string err_code = result["error_code"].asString(); -            //std::string err_description = result["error_description"].asString(); -            log_SLM_warning("Get /merchant", httpCode, status.toString(), err_code, result["error_description"]); -            setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE); +            std::string reason = status.toString(); +            if (reason.empty()) +            { +                reason = result["error_code"].asString(); +            } +            // Since user might not even have a marketplace, there is no reason to report the error +            // to the user, instead write it down into listings' floater +            LLMarketplaceData::instance().setSLMConnectionFailure(reason);          }          return;      } @@ -1298,6 +1304,17 @@ std::string LLMarketplaceData::getSLMConnectURL(const std::string& route)  void LLMarketplaceData::setSLMStatus(U32 status)  {      mMarketPlaceStatus = status; +    mMarketPlaceFailureReason.clear(); +    if (mStatusUpdatedSignal) +    { +        (*mStatusUpdatedSignal)(); +    } +} + +void LLMarketplaceData::setSLMConnectionFailure(const std::string& reason) +{ +    mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE; +    mMarketPlaceFailureReason = reason;      if (mStatusUpdatedSignal)      {          (*mStatusUpdatedSignal)(); diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index fee9225f77..088507d850 100644 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -198,7 +198,9 @@ public:  	typedef boost::signals2::signal<void ()> status_updated_signal_t;      void initializeSLM(const status_updated_signal_t::slot_type& cb);  	U32  getSLMStatus() const { return mMarketPlaceStatus; } +    std::string getSLMConnectionfailureReason() { return mMarketPlaceFailureReason; }  	void setSLMStatus(U32 status); +    void setSLMConnectionFailure(const std::string& reason);      void getSLMListings();      bool isEmpty() { return (mMarketplaceItems.size() == 0); }      void setDataFetchedSignal(const status_updated_signal_t::slot_type& cb); @@ -272,6 +274,7 @@ private:      // Handling Marketplace connection and inventory connection  	U32  mMarketPlaceStatus; +    std::string mMarketPlaceFailureReason;  	status_updated_signal_t* mStatusUpdatedSignal;  	LLInventoryObserver* mInventoryObserver;      bool mDirtyCount;   // If true, stock count value need to be updated at the next check diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b589d8972b..a024f23885 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2332,6 +2332,14 @@ The [[MARKETPLACE_CREATE_STORE_URL] Marketplace store] is returning errors.  An error occurred while opening Marketplace Listings.  If you continue to receive this message, please contact Second Life support for assistance at http://support.secondlife.com  	</string> +	<string name="InventoryMarketplaceConnectionError"> +Marketplace Listings failed to connect. +If you continue to receive this message, please contact Second Life support for assistance at http://support.secondlife.com +	</string> +	<string name="InventoryMarketplaceConnectionErrorReason"> +Marketplace Listings failed to connect. Reason: [REASON] +If you continue to receive this message, please contact Second Life support for assistance at http://support.secondlife.com +	</string>  	<string name="InventoryMarketplaceListingsNoItemsTitle">Your Marketplace Listings folder is empty.</string>  	<string name="InventoryMarketplaceListingsNoItemsTooltip"></string>  	<string name="InventoryMarketplaceListingsNoItems"> | 
