diff options
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.cpp | 52 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.h | 4 | 
2 files changed, 30 insertions, 26 deletions
| diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index d634a252d9..d10a1e8cd9 100755 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -1265,26 +1265,17 @@ void LLMarketplaceData::getSLMListing(S32 listing_id)  	LLHTTPClient::get(url, new LLSLMGetListingResponder(folder_id), headers);  } -void LLMarketplaceData::createSLMListing(const LLUUID& folder_id) +void LLMarketplaceData::createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count)  {  	LLSD headers = LLSD::emptyMap();  	headers["Accept"] = "application/json";  	headers["Content-Type"] = "application/json"; -    LLViewerInventoryCategory* category = gInventory.getCategory(folder_id); - -    // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately -    S32 count = -1; -    LLUUID version_id = getVersionFolderIfUnique(folder_id); -    if (version_id.notNull()) -    { -        count = compute_stock_count(version_id, true); -    } -      // Build the json message      Json::Value root;      Json::FastWriter writer; +    LLViewerInventoryCategory* category = gInventory.getCategory(folder_id);      root["listing"]["name"] = category->getName();      root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString();      root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); @@ -1341,20 +1332,12 @@ void LLMarketplaceData::updateSLMListing(const LLUUID& folder_id, S32 listing_id  	LLHTTPClient::putRaw(url, data, size, new LLSLMUpdateListingsResponder(folder_id, is_listed, version_id), headers);  } -void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& source_folder_id) +void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id)  {  	LLSD headers = LLSD::emptyMap();  	headers["Accept"] = "application/json";  	headers["Content-Type"] = "application/json"; -    // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately -    S32 count = -1; -    LLUUID version_id = getVersionFolderIfUnique(folder_id); -    if (version_id.notNull()) -    { -        count = compute_stock_count(version_id, true); -    } -      Json::Value root;      Json::FastWriter writer; @@ -1362,7 +1345,6 @@ void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing      root["listing"]["id"] = listing_id;      root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString();      root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); -    root["listing"]["inventory_info"]["count_on_hand"] = count;      std::string json_str = writer.write(root); @@ -1437,8 +1419,16 @@ bool LLMarketplaceData::createListing(const LLUUID& folder_id)          return false;      } +    // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately +    S32 count = -1; +    LLUUID version_id = getVersionFolderIfUnique(folder_id); +    if (version_id.notNull()) +    { +        count = compute_stock_count(version_id, true); +    } +      // Post the listing creation request to SLM -    createSLMListing(folder_id); +    createSLMListing(folder_id, version_id, count);      return true;  } @@ -1585,9 +1575,23 @@ bool LLMarketplaceData::associateListing(const LLUUID& folder_id, const LLUUID&          return false;      } -    // Post the listing update request to SLM -    associateSLMListing(folder_id, listing_id, source_folder_id); +    // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately +    LLUUID version_id = getVersionFolderIfUnique(folder_id); +     +    // Post the listing associate request to SLM +    associateSLMListing(folder_id, listing_id, version_id, source_folder_id); +    // Update the other values as required +    bool is_listed = false;     // a listed listing cannot be reassociated +    S32 count = -1;             // count on hand must be set according to the new active version folder if any +    if (version_id.notNull()) +    { +        count = compute_stock_count(version_id, true); +    } +     +    // Post the listing update request to SLM +    updateSLMListing(folder_id, listing_id, version_id, is_listed, count); +      return true;  } diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index 34b650b0ce..38ffdeb498 100755 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -253,10 +253,10 @@ private:      bool setCountOnHand(const LLUUID& folder_id, S32 count, bool update = true);      // Private SLM API : package data and get/post/put requests to the SLM Server through the SLM API -    void createSLMListing(const LLUUID& folder_id); +    void createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count);      void getSLMListing(S32 listing_id);      void updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, S32 count); -    void associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id); +    void associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id);      void deleteSLMListing(S32 listing_id);      std::string getSLMConnectURL(const std::string& route); | 
