< Summary

Class:LeftMenuSettingsViewHandler
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/Handlers/LeftMenuSettingsViewHandler.cs
Covered lines:30
Uncovered lines:20
Coverable lines:50
Total lines:123
Line coverage:60% (30 of 50)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
LeftMenuSettingsViewHandler(...)0%110100%
Dispose()0%3.143075%
SetProjectData(...)0%330100%
SetThumbnails(...)0%13.015031.58%
OnSelectScene(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/Handlers/LeftMenuSettingsViewHandler.cs

#LineLine coverage
 1using DCL;
 2using System;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7[Serializable]
 8internal class LeftMenuSettingsViewReferences
 9{
 10    public TextMeshProUGUI titleLabel;
 11    public RawImageFillParent thumbnail;
 12    public GameObject coordsContainer;
 13    public GameObject sizeContainer;
 14    public GameObject entitiesCountContainer;
 15    public TextMeshProUGUI coordsText;
 16    public TextMeshProUGUI sizeText;
 17    public TextMeshProUGUI entitiesCountText;
 18    public GameObject avatarThumbnailContainer;
 19    public RawImage avatarImage;
 20    public TextMeshProUGUI authorNameText;
 21    public LeftMenuButtonToggleView adminsMenuToggle;
 22}
 23
 24internal class LeftMenuSettingsViewHandler : IDisposable
 25{
 26    internal const string PROJECT_TITLE = "Project settings";
 27    internal const string SCENE_TITLE = "Scene settings";
 28
 29    private readonly LeftMenuSettingsViewReferences viewReferences;
 30    private readonly IScenesViewController scenesViewController;
 31    private readonly Texture defaultThumbnail;
 32
 33    private AssetPromise_Texture promiseAvatarThumbnail;
 34    private AssetPromise_Texture promiseSceneThumbnail;
 35
 1636    public LeftMenuSettingsViewHandler(LeftMenuSettingsViewReferences viewReferences, IScenesViewController scenesViewCo
 37    {
 1638        this.viewReferences = viewReferences;
 1639        this.scenesViewController = scenesViewController;
 40
 1641        defaultThumbnail = viewReferences.thumbnail.texture;
 42
 1643        scenesViewController.OnSceneSelected += OnSelectScene;
 1644    }
 45
 46    public void Dispose()
 47    {
 1648        scenesViewController.OnSceneSelected -= OnSelectScene;
 49
 1650        if (promiseAvatarThumbnail != null)
 51        {
 052            AssetPromiseKeeper_Texture.i.Forget(promiseAvatarThumbnail);
 53        }
 1654        if (promiseSceneThumbnail != null)
 55        {
 056            AssetPromiseKeeper_Texture.i.Forget(promiseSceneThumbnail);
 57        }
 58
 1659        promiseAvatarThumbnail = null;
 1660        promiseSceneThumbnail = null;
 1661    }
 62
 63    void SetProjectData(ISceneData sceneData)
 64    {
 265        viewReferences.titleLabel.text = sceneData.isDeployed ? SCENE_TITLE : PROJECT_TITLE;
 266        viewReferences.coordsContainer.SetActive(sceneData.isDeployed);
 267        viewReferences.sizeContainer.SetActive(!sceneData.isDeployed);
 268        viewReferences.entitiesCountContainer.SetActive(!sceneData.isDeployed);
 269        viewReferences.coordsText.text = $"{sceneData.coords.x},{sceneData.coords.y}";
 270        viewReferences.sizeText.text = $"{sceneData.size.x},{sceneData.size.y}m";
 271        viewReferences.entitiesCountText.text = sceneData.entitiesCount.ToString();
 272        viewReferences.authorNameText.text = sceneData.authorName;
 273        viewReferences.adminsMenuToggle.gameObject.SetActive(sceneData.isDeployed);
 74
 275        SetThumbnails(sceneData);
 276    }
 77
 78    void SetThumbnails(ISceneData sceneData)
 79    {
 280        if (string.IsNullOrEmpty(sceneData.authorThumbnail))
 81        {
 282            viewReferences.avatarThumbnailContainer.SetActive(false);
 283        }
 84        else
 85        {
 086            if (promiseAvatarThumbnail != null)
 87            {
 088                AssetPromiseKeeper_Texture.i.Forget(promiseAvatarThumbnail);
 89            }
 90
 091            promiseAvatarThumbnail = new AssetPromise_Texture(sceneData.authorThumbnail);
 092            promiseAvatarThumbnail.OnFailEvent += asset => viewReferences.avatarThumbnailContainer.SetActive(false);
 093            promiseAvatarThumbnail.OnSuccessEvent += asset =>
 94            {
 095                viewReferences.avatarThumbnailContainer.SetActive(true);
 096                viewReferences.avatarImage.texture = asset.texture;
 097            };
 098            AssetPromiseKeeper_Texture.i.Keep(promiseAvatarThumbnail);
 99        }
 100
 2101        if (string.IsNullOrEmpty(sceneData.thumbnailUrl))
 102        {
 2103            viewReferences.thumbnail.texture = defaultThumbnail;
 2104        }
 105        else
 106        {
 0107            if (promiseSceneThumbnail != null)
 108            {
 0109                AssetPromiseKeeper_Texture.i.Forget(promiseSceneThumbnail);
 110            }
 111
 0112            promiseSceneThumbnail = new AssetPromise_Texture(sceneData.thumbnailUrl);
 0113            promiseSceneThumbnail.OnFailEvent += asset => viewReferences.thumbnail.texture = defaultThumbnail;
 0114            promiseSceneThumbnail.OnSuccessEvent += asset =>
 115            {
 0116                viewReferences.thumbnail.texture = asset.texture;
 0117            };
 0118            AssetPromiseKeeper_Texture.i.Keep(promiseSceneThumbnail);
 119        }
 0120    }
 121
 4122    private void OnSelectScene(ISceneCardView sceneCardView) { SetProjectData(sceneCardView.sceneData); }
 123}