< Summary

Class:DCL.Builder.LeftMenuSettingsViewHandler
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Handlers/LeftMenuSettingsViewHandler.cs
Covered lines:0
Uncovered lines:50
Coverable lines:50
Total lines:126
Line coverage:0% (0 of 50)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
LeftMenuSettingsViewHandler(...)0%2100%
Dispose()0%12300%
SetProjectData(...)0%12300%
SetThumbnails(...)0%30500%
SelectProject(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Handlers/LeftMenuSettingsViewHandler.cs

#LineLine coverage
 1using DCL;
 2using System;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7namespace DCL.Builder
 8{
 9    [Serializable]
 10    internal class LeftMenuSettingsViewReferences
 11    {
 12        public TextMeshProUGUI titleLabel;
 13        public RawImageFillParent thumbnail;
 14        public GameObject coordsContainer;
 15        public GameObject sizeContainer;
 16        public GameObject entitiesCountContainer;
 17        public TextMeshProUGUI coordsText;
 18        public TextMeshProUGUI sizeText;
 19        public TextMeshProUGUI entitiesCountText;
 20        public GameObject avatarThumbnailContainer;
 21        public RawImage avatarImage;
 22        public TextMeshProUGUI authorNameText;
 23        public LeftMenuButtonToggleView adminsMenuToggle;
 24    }
 25
 26    internal class LeftMenuSettingsViewHandler : IDisposable
 27    {
 28        internal const string PROJECT_TITLE = "Project settings";
 29        internal const string SCENE_TITLE = "Scene settings";
 30
 31        private readonly LeftMenuSettingsViewReferences viewReferences;
 32        private readonly IScenesViewController scenesViewController;
 33        private readonly Texture defaultThumbnail;
 34
 35        private AssetPromise_Texture promiseAvatarThumbnail;
 36        private AssetPromise_Texture promiseSceneThumbnail;
 37
 038        public LeftMenuSettingsViewHandler(LeftMenuSettingsViewReferences viewReferences, IScenesViewController scenesVi
 39        {
 040            this.viewReferences = viewReferences;
 041            this.scenesViewController = scenesViewController;
 42
 043            defaultThumbnail = viewReferences.thumbnail.texture;
 44
 045            scenesViewController.OnProjectSelected += SelectProject;
 046        }
 47
 48        public void Dispose()
 49        {
 050            scenesViewController.OnProjectSelected -= SelectProject;
 51
 052            if (promiseAvatarThumbnail != null)
 53            {
 054                AssetPromiseKeeper_Texture.i.Forget(promiseAvatarThumbnail);
 55            }
 056            if (promiseSceneThumbnail != null)
 57            {
 058                AssetPromiseKeeper_Texture.i.Forget(promiseSceneThumbnail);
 59            }
 60
 061            promiseAvatarThumbnail = null;
 062            promiseSceneThumbnail = null;
 063        }
 64
 65        void SetProjectData(ISceneData sceneData)
 66        {
 067            viewReferences.titleLabel.text = sceneData.isDeployed ? SCENE_TITLE : PROJECT_TITLE;
 068            viewReferences.coordsContainer.SetActive(sceneData.isDeployed);
 069            viewReferences.sizeContainer.SetActive(!sceneData.isDeployed);
 070            viewReferences.entitiesCountContainer.SetActive(!sceneData.isDeployed);
 071            viewReferences.coordsText.text = $"{sceneData.coords.x},{sceneData.coords.y}";
 072            viewReferences.sizeText.text = $"{sceneData.size.x},{sceneData.size.y}m";
 073            viewReferences.entitiesCountText.text = sceneData.entitiesCount.ToString();
 074            viewReferences.authorNameText.text = sceneData.authorName;
 075            viewReferences.adminsMenuToggle.gameObject.SetActive(sceneData.isDeployed);
 76
 077            SetThumbnails(sceneData);
 078        }
 79
 80        void SetThumbnails(ISceneData sceneData)
 81        {
 082            if (string.IsNullOrEmpty(sceneData.authorThumbnail))
 83            {
 084                viewReferences.avatarThumbnailContainer.SetActive(false);
 085            }
 86            else
 87            {
 088                if (promiseAvatarThumbnail != null)
 89                {
 090                    AssetPromiseKeeper_Texture.i.Forget(promiseAvatarThumbnail);
 91                }
 92
 093                promiseAvatarThumbnail = new AssetPromise_Texture(sceneData.authorThumbnail);
 094                promiseAvatarThumbnail.OnFailEvent += (asset, error) => viewReferences.avatarThumbnailContainer.SetActiv
 095                promiseAvatarThumbnail.OnSuccessEvent += asset =>
 96                {
 097                    viewReferences.avatarThumbnailContainer.SetActive(true);
 098                    viewReferences.avatarImage.texture = asset.texture;
 099                };
 0100                AssetPromiseKeeper_Texture.i.Keep(promiseAvatarThumbnail);
 101            }
 102
 0103            if (string.IsNullOrEmpty(sceneData.thumbnailUrl))
 104            {
 0105                viewReferences.thumbnail.texture = defaultThumbnail;
 0106            }
 107            else
 108            {
 0109                if (promiseSceneThumbnail != null)
 110                {
 0111                    AssetPromiseKeeper_Texture.i.Forget(promiseSceneThumbnail);
 112                }
 113
 0114                promiseSceneThumbnail = new AssetPromise_Texture(sceneData.thumbnailUrl);
 0115                promiseSceneThumbnail.OnFailEvent += (asset, error) => viewReferences.thumbnail.texture = defaultThumbna
 0116                promiseSceneThumbnail.OnSuccessEvent += asset =>
 117                {
 0118                    viewReferences.thumbnail.texture = asset.texture;
 0119                };
 0120                AssetPromiseKeeper_Texture.i.Keep(promiseSceneThumbnail);
 121            }
 0122        }
 123
 0124        private void SelectProject(ISceneCardView sceneCardView) { SetProjectData(sceneCardView.SceneData); }
 125    }
 126}