SL-19938 Make sure marketplace removes empty folder it automatically moved items from

when folder was recreated into stock fodler
meow-7.2.2
Andrey Kleshchev 2023-06-30 01:53:39 +03:00
parent ab18293d35
commit 924869900a
1 changed files with 27 additions and 1 deletions

View File

@ -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);