< Summary

Class:BIWCatalogManager
Assembly:BuilderInWorldCatalog
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Catalog/BIWCatalogManager.cs
Covered lines:63
Uncovered lines:63
Coverable lines:126
Total lines:256
Line coverage:50% (63 of 126)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Init()0%220100%
Dispose()0%110100%
ClearCatalog()0%110100%
GetCatalogItemPackList()0%440100%
GetCatalogItemPacksFilteredByCategories()0%90900%
AddSceneObject(...)0%110100%
AddSceneObject(...)0%2.032080%
AddSceneCatalog(...)0%2100%
AddSceneAssetPack(...)0%3.043083.33%
GetAssetPackNameById(...)0%3.043083.33%
ConvertCollectiblesPack(...)0%56700%
CreateNewCollectiblePack()0%6200%
CreateCatalogItemPack(...)0%330100%
CreateCatalogItem(...)0%55094.74%
CreateCatalogItem(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Catalog/BIWCatalogManager.cs

#LineLine coverage
 1using DCL;
 2using DCL.Configuration;
 3using DCL.Helpers.NFT;
 4using System.Collections.Generic;
 5using System.Linq;
 6using UnityEngine;
 7
 8public static class BIWCatalogManager
 9{
 10    public static bool VERBOSE = false;
 11    private static bool IS_INIT = false;
 12
 13    public static void Init()
 14    {
 2315        if (!IS_INIT)
 16        {
 1017            BIWNFTController.i.OnNftsFetched += ConvertCollectiblesPack;
 1018            AssetCatalogBridge.OnItemAdded += AddSceneObject;
 1019            AssetCatalogBridge.OnSceneCatalogItemAdded += AddSceneCatalog;
 1020            AssetCatalogBridge.OnSceneAssetPackAdded += AddSceneAssetPack;
 1021            IS_INIT = true;
 22        }
 2323    }
 24
 25    public static void Dispose()
 26    {
 927        BIWNFTController.i.OnNftsFetched -= ConvertCollectiblesPack;
 928        AssetCatalogBridge.OnItemAdded -= AddSceneObject;
 929        AssetCatalogBridge.OnSceneCatalogItemAdded -= AddSceneCatalog;
 930        AssetCatalogBridge.OnSceneAssetPackAdded -= AddSceneAssetPack;
 931        IS_INIT = false;
 932    }
 33
 34    public static void ClearCatalog()
 35    {
 1436        DataStore.i.builderInWorld.catalogItemDict.Clear();
 1437        DataStore.i.builderInWorld.catalogItemPackDict.Clear();
 1438    }
 39
 40    public static List<CatalogItemPack> GetCatalogItemPackList()
 41    {
 142        var assetPacks = DataStore.i.builderInWorld.catalogItemPackDict.GetValues();
 43
 444        foreach (CatalogItemPack catalogAssetPack in assetPacks)
 45        {
 646            foreach (CatalogItem catalogItem in catalogAssetPack.assets)
 47            {
 248                catalogItem.categoryName = catalogItem.category;
 49            }
 50        }
 51
 252        return assetPacks.OrderBy(x => x.title).ToList();
 53    }
 54
 55    public static List<CatalogItemPack> GetCatalogItemPacksFilteredByCategories()
 56    {
 057        var assetPacks = DataStore.i.builderInWorld.catalogItemPackDict.GetValues();
 58
 059        Dictionary<string, CatalogItemPack> assetPackDic = new Dictionary<string, CatalogItemPack>();
 60
 061        if (DataStore.i.builderInWorld.catalogItemPackDict.ContainsKey(BIWSettings.ASSETS_COLLECTIBLES))
 062            assetPackDic.Add(BIWSettings.ASSETS_COLLECTIBLES, DataStore.i.builderInWorld.catalogItemPackDict[BIWSettings
 63        else
 064            CreateNewCollectiblePack();
 65
 066        foreach (CatalogItemPack catalogAssetPack in assetPacks)
 67        {
 068            foreach (CatalogItem catalogItem in catalogAssetPack.assets)
 69            {
 070                if (catalogItem.IsNFT())
 71                    continue;
 072                if (!assetPackDic.ContainsKey(catalogItem.category))
 73                {
 074                    CatalogItemPack categoryAssetPack = new CatalogItemPack();
 075                    categoryAssetPack.SetThumbnailULR(catalogItem.thumbnailURL);
 076                    categoryAssetPack.title = catalogItem.category;
 077                    categoryAssetPack.assets = new List<CatalogItem>();
 078                    catalogItem.categoryName = catalogAssetPack.title;
 079                    categoryAssetPack.assets.Add(catalogItem);
 80
 081                    if (!string.IsNullOrEmpty(categoryAssetPack.title))
 82                    {
 083                        if (categoryAssetPack.title.Length == 1)
 084                            categoryAssetPack.title = categoryAssetPack.title.ToUpper();
 85                        else
 086                            categoryAssetPack.title = char.ToUpper(categoryAssetPack.title[0]) + categoryAssetPack.title
 87                    }
 88
 089                    assetPackDic.Add(catalogItem.category, categoryAssetPack);
 090                    continue;
 91                }
 92                else
 93                {
 094                    catalogItem.categoryName = catalogAssetPack.title;
 095                    assetPackDic[catalogItem.category].assets.Add(catalogItem);
 96                }
 97            }
 98        }
 99
 0100        return assetPackDic.Values.OrderBy(x => x.title).ToList();
 101    }
 102
 32103    public static void AddSceneObject(SceneObject sceneObject) { AddSceneObject(sceneObject, DataStore.i.builderInWorld.
 104
 105    public static void AddSceneObject(SceneObject sceneObject , BaseDictionary<string, CatalogItem> catalogToAdd )
 106    {
 16107        if (catalogToAdd.ContainsKey(sceneObject.id))
 0108            return;
 109
 16110        CatalogItem catalogItem = CreateCatalogItem(sceneObject);
 16111        catalogToAdd.Add(catalogItem.id, catalogItem);
 16112    }
 113
 0114    public static void AddSceneCatalog(SceneObject sceneObject) { AddSceneObject(sceneObject, DataStore.i.builderInWorld
 115
 116    public static void AddSceneAssetPack(SceneAssetPack sceneAssetPack)
 117    {
 15118        if (DataStore.i.builderInWorld.catalogItemPackDict.ContainsKey(sceneAssetPack.id))
 0119            return;
 120
 15121        CatalogItemPack catalogItemPack = CreateCatalogItemPack(sceneAssetPack);
 122
 15123        if (catalogItemPack.assets.Count != 0)
 14124            DataStore.i.builderInWorld.catalogItemPackDict.Add(catalogItemPack.id, catalogItemPack);
 15125    }
 126
 127    public static string GetAssetPackNameById(string assetPackId)
 128    {
 17129        if (string.IsNullOrEmpty(assetPackId))
 2130            return "";
 131
 15132        DataStore.i.builderInWorld.catalogItemPackDict.TryGetValue(assetPackId, out CatalogItemPack catalogItemPack);
 15133        if (catalogItemPack != null)
 0134            return catalogItemPack.title;
 135
 15136        return "";
 137    }
 138
 139    public static void ConvertCollectiblesPack(List<NFTInfo> nftList)
 140    {
 0141        if (nftList == null)
 0142            return;
 143
 144        CatalogItemPack collectiblesItemPack;
 145
 0146        if (!DataStore.i.builderInWorld.catalogItemPackDict.ContainsKey(BIWSettings.ASSETS_COLLECTIBLES))
 147        {
 0148            collectiblesItemPack = CreateNewCollectiblePack();
 149        }
 150        else
 151        {
 0152            collectiblesItemPack = DataStore.i.builderInWorld.catalogItemPackDict[BIWSettings.ASSETS_COLLECTIBLES];
 0153            foreach (CatalogItem catalogItem in collectiblesItemPack.assets)
 154            {
 0155                if (DataStore.i.builderInWorld.catalogItemDict.ContainsKey(catalogItem.id))
 0156                    DataStore.i.builderInWorld.catalogItemDict.Remove(catalogItem.id);
 157            }
 158
 0159            collectiblesItemPack.assets.Clear();
 160        }
 161
 0162        foreach (NFTInfo info in nftList)
 163        {
 0164            CatalogItem catalogItem = CreateCatalogItem(info);
 0165            if (!DataStore.i.builderInWorld.catalogItemDict.ContainsKey(catalogItem.id))
 0166                DataStore.i.builderInWorld.catalogItemDict.Add(catalogItem.id, catalogItem);
 167
 0168            collectiblesItemPack.assets.Add(catalogItem);
 169        }
 0170    }
 171
 172    private static CatalogItemPack CreateNewCollectiblePack()
 173    {
 0174        CatalogItemPack collectiblesItemPack = new CatalogItemPack();
 0175        collectiblesItemPack.id = BIWSettings.ASSETS_COLLECTIBLES;
 0176        collectiblesItemPack.title = BIWSettings.ASSETS_COLLECTIBLES;
 0177        collectiblesItemPack.assets = new List<CatalogItem>();
 0178        if (!DataStore.i.builderInWorld.catalogItemPackDict.ContainsKey(collectiblesItemPack.id))
 0179            DataStore.i.builderInWorld.catalogItemPackDict.Add(collectiblesItemPack.id, collectiblesItemPack);
 0180        return collectiblesItemPack;
 181    }
 182
 183    public static CatalogItemPack CreateCatalogItemPack(SceneAssetPack sceneAssetPack)
 184    {
 15185        CatalogItemPack catalogItemPack = new CatalogItemPack();
 186
 15187        catalogItemPack.id = sceneAssetPack.id;
 15188        catalogItemPack.title = sceneAssetPack.title;
 189
 15190        catalogItemPack.assets = new List<CatalogItem>();
 191
 15192        catalogItemPack.SetThumbnailULR(sceneAssetPack.ComposeThumbnailUrl());
 193
 62194        foreach (SceneObject sceneObject in sceneAssetPack.assets)
 195        {
 196            //TODO: SmartItems disabled until kernel has them implemented
 16197            if (sceneObject.IsSmartItem())
 198                continue;
 199
 15200            catalogItemPack.assets.Add(CreateCatalogItem(sceneObject, sceneAssetPack.title));
 201        }
 202
 15203        return catalogItemPack;
 204    }
 205
 206    public static CatalogItem CreateCatalogItem(SceneObject sceneObject, string assetPackName = null)
 207    {
 31208        CatalogItem catalogItem = new CatalogItem();
 31209        catalogItem.id = sceneObject.id;
 31210        if (sceneObject.asset_pack_id == BIWSettings.VOXEL_ASSETS_PACK_ID)
 0211            catalogItem.isVoxel = true;
 31212        catalogItem.name = sceneObject.name;
 31213        catalogItem.model = sceneObject.model;
 31214        catalogItem.assetPackName = assetPackName == null ? GetAssetPackNameById(sceneObject.asset_pack_id) : assetPackN
 31215        catalogItem.thumbnailURL = sceneObject.GetComposedThumbnailUrl();
 31216        catalogItem.tags = sceneObject.tags;
 217
 31218        catalogItem.category = sceneObject.category;
 31219        catalogItem.categoryName = catalogItem.category;
 220
 31221        catalogItem.contents = sceneObject.contents;
 222
 31223        catalogItem.metrics = sceneObject.metrics;
 224
 31225        if (!string.IsNullOrEmpty(sceneObject.script))
 226        {
 1227            catalogItem.itemType = CatalogItem.ItemType.SMART_ITEM;
 1228            catalogItem.parameters = sceneObject.parameters;
 1229            catalogItem.actions = sceneObject.actions;
 230        }
 231        else
 232        {
 30233            catalogItem.itemType = CatalogItem.ItemType.SCENE_OBJECT;
 234        }
 235
 31236        return catalogItem;
 237    }
 238
 239    public static CatalogItem CreateCatalogItem(NFTInfo nFTInfo)
 240    {
 0241        CatalogItem catalogItem = new CatalogItem();
 0242        catalogItem.itemType = CatalogItem.ItemType.NFT;
 243
 0244        catalogItem.id = nFTInfo.assetContract.address;
 0245        catalogItem.thumbnailURL = nFTInfo.thumbnailUrl;
 0246        catalogItem.name = nFTInfo.name;
 0247        catalogItem.assetPackName = BIWSettings.ASSETS_COLLECTIBLES;
 0248        catalogItem.category = nFTInfo.assetContract.name;
 0249        catalogItem.model = $"{BIWSettings.COLLECTIBLE_MODEL_PROTOCOL}{nFTInfo.assetContract.address}/{nFTInfo.tokenId}"
 0250        catalogItem.tags = new List<string>();
 0251        catalogItem.contents = new Dictionary<string, string>();
 0252        catalogItem.metrics = new SceneObject.ObjectMetrics();
 253
 0254        return catalogItem;
 255    }
 256}