diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-06-30 01:53:39 +0300 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-06-30 01:53:39 +0300 |
commit | 924869900ae2646987ce2a8f0b494345701c50a6 (patch) | |
tree | be72fd5a420ca5a52a765da6709390d63605ec58 | |
parent | ab18293d35c4ce391f65efaa65be53cdbe84f550 (diff) |
SL-19938 Make sure marketplace removes empty folder it automatically moved items from
when folder was recreated into stock fodler
-rw-r--r-- | indra/newview/llinventoryfunctions.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 3a53425e43..f813639073 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -1825,6 +1825,7 @@ void validate_marketplacelistings( { // Create a new folder const LLUUID parent_uuid = (depth > 2 ? viewer_cat->getParentUUID() : viewer_cat->getUUID()); + const LLUUID origin_uuid = viewer_cat->getUUID(); LLViewerInventoryItem* viewer_inv_item = gInventory.getItem(items_vector_it->second.back()); std::string folder_name = (depth >= 1 ? viewer_cat->getName() : viewer_inv_item->getName()); LLFolderType::EType new_folder_type = (items_vector_it->first == default_key ? LLFolderType::FT_NONE : LLFolderType::FT_MARKETPLACE_STOCK); @@ -1848,7 +1849,7 @@ void validate_marketplacelistings( parent_uuid, new_folder_type, folder_name, - [uuid_vector, cb_result, cb_msg, depth, parent_uuid, notify_observers](const LLUUID &new_category_id) + [uuid_vector, cb_result, cb_msg, depth, parent_uuid, origin_uuid, notify_observers](const LLUUID &new_category_id) { // Move each item to the new folder std::vector<LLUUID>::const_reverse_iterator iter = uuid_vector.rbegin(); @@ -1869,6 +1870,31 @@ void validate_marketplacelistings( iter++; } + if (origin_uuid != parent_uuid) + { + // We might have moved last item from a folder, check if it needs to be removed + LLViewerInventoryCategory* cat = gInventory.getCategory(origin_uuid); + if (cat->getDescendentCount() == 0) + { + // Remove previous folder if it ends up empty + if (cb_msg) + { + std::string indent; + for (int i = 1; i < depth; i++) + { + indent += " "; + } + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Warning Delete"); + cb_msg(message, depth, LLError::LEVEL_WARN); + } + gInventory.removeCategory(cat->getUUID()); + if (notify_observers) + { + gInventory.notifyObservers(); + } + } + } + // Next type update_marketplace_category(parent_uuid); update_marketplace_category(new_category_id); |