< Summary

Class:DCL.Social.Passports.PassportPlayerPreviewComponentController
Assembly:PassportHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Passport/Passport/PlayerPreview/PassportPlayerPreviewComponentController.cs
Covered lines:0
Uncovered lines:27
Coverable lines:27
Total lines:72
Line coverage:0% (0 of 27)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PassportPlayerPreviewComponentController(...)0%2100%
SetPassportPanelVisibility(...)0%6200%
RotateCharacterPreview(...)0%2100%
SetRotationTutorialCompleted()0%6200%
UpdateWithUserProfile(...)0%2100%
Dispose()0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Passport/Passport/PlayerPreview/PassportPlayerPreviewComponentController.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL.Helpers;
 3using MainScripts.DCL.Controllers.HUD.CharacterPreview;
 4using System;
 5using System.Threading;
 6using UnityEngine;
 7
 8namespace DCL.Social.Passports
 9{
 10    public class PassportPlayerPreviewComponentController : IDisposable
 11    {
 12        private const string TUTORIAL_ENABLED_KEY = "PassportPreviewRotationHintEnabled";
 13
 14        private readonly Service<ICharacterPreviewFactory> characterPreviewFactory;
 15
 16        private readonly ICharacterPreviewController previewController;
 17        private CancellationTokenSource cancellationTokenSource;
 18        private readonly IPassportPlayerPreviewComponentView view;
 19
 020        public PassportPlayerPreviewComponentController(IPassportPlayerPreviewComponentView view)
 21        {
 022            this.view = view;
 023            view.PreviewCameraRotation.OnHorizontalRotation += RotateCharacterPreview;
 024            cancellationTokenSource = new CancellationTokenSource();
 25
 026            previewController = characterPreviewFactory.Ref.Create(CharacterPreviewMode.WithHologram,
 27                view.CharacterPreviewTexture, true, CharacterPreviewController.CameraFocus.Preview);
 28
 029            view.SetModel(new (TutorialEnabled));
 030        }
 31
 32        public void SetPassportPanelVisibility(bool visible)
 33        {
 034            previewController.SetEnabled(visible);
 035            if (visible)
 036                previewController.ResetRotation();
 037        }
 38
 039        private bool TutorialEnabled => PlayerPrefsUtils.GetBool(TUTORIAL_ENABLED_KEY, true);
 40
 41        private void RotateCharacterPreview(float angularVelocity)
 42        {
 043            previewController.Rotate(angularVelocity);
 044            SetRotationTutorialCompleted();
 045        }
 46
 47        private void SetRotationTutorialCompleted()
 48        {
 049            if (!TutorialEnabled)
 050                return;
 51
 052            PlayerPrefsUtils.SetBool(TUTORIAL_ENABLED_KEY, false);
 053            PlayerPrefsUtils.Save();
 54
 055            view.SetModel(new (false));
 056        }
 57
 58        public void UpdateWithUserProfile(UserProfile userProfile)
 59        {
 060            previewController.TryUpdateModelAsync(userProfile.avatar, cancellationTokenSource.Token)
 61                             .SuppressCancellationThrow()
 62                             .Forget();
 063        }
 64
 65        public void Dispose()
 66        {
 067            cancellationTokenSource?.Cancel();
 068            cancellationTokenSource?.Dispose();
 069            cancellationTokenSource = null;
 070        }
 71    }
 72}