< 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:44
Coverable lines:44
Total lines:102
Line coverage:0% (0 of 44)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:10
Method coverage:0% (0 of 10)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PassportPlayerPreviewComponentController(...)0%6200%
EndPreviewDrag(...)0%2100%
SetPassportPanelVisibility(...)0%6200%
SetAsLoading(...)0%2100%
RotateCharacterPreview(...)0%2100%
SetRotationTutorialCompleted()0%6200%
>c__DisplayClass14_0/<<UpdateWithUserProfile()0%20400%
UpdateWithUserProfile(...)0%12300%
Dispose()0%20400%

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 SocialFeaturesAnalytics;
 5using System;
 6using System.Threading;
 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 readonly ISocialAnalytics socialAnalytics;
 18        private CancellationTokenSource cancellationTokenSource;
 19        private readonly IPassportPlayerPreviewComponentView view;
 20
 021        public PassportPlayerPreviewComponentController(
 22            IPassportPlayerPreviewComponentView view,
 23            ISocialAnalytics socialAnalytics)
 24        {
 025            this.view = view;
 026            this.socialAnalytics = socialAnalytics;
 27
 028            if (view.PreviewCameraRotationController != null)
 029                view.PreviewCameraRotationController.OnHorizontalRotation += RotateCharacterPreview;
 030            cancellationTokenSource = new CancellationTokenSource();
 31
 032            previewController = characterPreviewFactory.Ref.Create(CharacterPreviewMode.WithoutHologram,
 33                view.CharacterPreviewTexture, true, PreviewCameraFocus.Preview);
 34
 035            view.SetModel(new (TutorialEnabled));
 036            view.OnEndDragEvent += EndPreviewDrag;
 037        }
 38
 39        private void EndPreviewDrag(double timeSpendDragging)
 40        {
 041            socialAnalytics.SendInspectAvatar(timeSpendDragging);
 042        }
 43
 44        public void SetPassportPanelVisibility(bool visible)
 45        {
 046            previewController.SetEnabled(visible);
 047            if (visible)
 048                previewController.ResetRotation();
 049        }
 50
 051        public void SetAsLoading(bool isLoading) => view.SetAsLoading(isLoading);
 52
 053        private bool TutorialEnabled => PlayerPrefsBridge.GetBool(TUTORIAL_ENABLED_KEY, true);
 54
 55        private void RotateCharacterPreview(float angularVelocity)
 56        {
 057            previewController.Rotate(angularVelocity);
 058            SetRotationTutorialCompleted();
 059        }
 60
 61        private void SetRotationTutorialCompleted()
 62        {
 063            if (!TutorialEnabled)
 064                return;
 65
 066            PlayerPrefsBridge.SetBool(TUTORIAL_ENABLED_KEY, false);
 067            PlayerPrefsBridge.Save();
 068            view.HideTutorial();
 69
 070            view.SetModel(new (false));
 071        }
 72
 73        public void UpdateWithUserProfile(UserProfile userProfile, bool activateLoading)
 74        {
 75            async UniTask UpdateWithUserProfileAsync()
 76            {
 077                if (activateLoading)
 078                    SetAsLoading(true);
 79
 080                await previewController.TryUpdateModelAsync(userProfile.avatar, cancellationTokenSource.Token)
 81                                       .SuppressCancellationThrow();
 82
 083                SetAsLoading(false);
 084            }
 85
 086            cancellationTokenSource?.Cancel();
 087            cancellationTokenSource?.Dispose();
 088            cancellationTokenSource = new CancellationTokenSource();
 089            UpdateWithUserProfileAsync().Forget();
 090        }
 91
 92        public void Dispose()
 93        {
 094            if (view.PreviewCameraRotationController != null)
 095                view.PreviewCameraRotationController.OnHorizontalRotation -= RotateCharacterPreview;
 96
 097            cancellationTokenSource?.Cancel();
 098            cancellationTokenSource?.Dispose();
 099            cancellationTokenSource = null;
 0100        }
 101    }
 102}