< Summary

Class:DCLFeatures.CameraReel.Gallery.ThumbnailContextMenuController
Assembly:CameraReel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLFeatures/CameraReel/Gallery/Scripts/ThumbnailContextMenuController.cs
Covered lines:0
Uncovered lines:40
Coverable lines:40
Total lines:97
Line coverage:0% (0 of 40)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:3
Method coverage:0% (0 of 3)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ThumbnailContextMenuController(...)0%2100%
>c__DisplayClass4_0/<<-ctor()0%12300%
Dispose()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLFeatures/CameraReel/Gallery/Scripts/ThumbnailContextMenuController.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL;
 3using DCL.Browser;
 4using DCL.Tasks;
 5using DCLFeatures.CameraReel.Section;
 6using DCLServices.CameraReelService;
 7using DCLServices.EnvironmentProvider;
 8using System;
 9using System.Threading;
 10using UnityEngine;
 11
 12namespace DCLFeatures.CameraReel.Gallery
 13{
 14    public class ThumbnailContextMenuController
 15    {
 16        private const string DELETE_ERROR_MESSAGE = "There was an unexpected error when deleting the picture. Try again 
 17
 18        private readonly IThumbnailContextMenuView view;
 19        private CameraReelResponse picture;
 20        private CancellationTokenSource deleteScreenshotCancellationToken;
 21
 022        public ThumbnailContextMenuController(IThumbnailContextMenuView view,
 23            IClipboard clipboard,
 24            CameraReelModel cameraReelModel,
 25            IBrowserBridge browser,
 26            ICameraReelStorageService storageService,
 27            DataStore dataStore,
 28            ICameraReelAnalyticsService analytics,
 29            IEnvironmentProviderService environmentProviderService)
 30        {
 031            this.view = view;
 32
 033            view.OnSetup += p => picture = p;
 34
 035            view.OnCopyPictureLinkRequested += () =>
 36            {
 037                var url = $"https://reels.decentraland.{(environmentProviderService.IsProd() ? "org" : "zone")}/{picture
 038                clipboard.WriteText(url);
 039                analytics.Share("Explorer", "Copy");
 040            };
 41
 042            view.OnDownloadRequested += () =>
 43            {
 044                browser.OpenUrl(picture.url);
 045                analytics.DownloadPhoto("Explorer");
 046            };
 47
 048            view.OnShareToTwitterRequested += () =>
 49            {
 050                var description = "Check out what I'm doing in Decentraland right now and join me!".Replace(" ", "%20");
 051                var url = $"https://reels.decentraland.{(environmentProviderService.IsProd() ? "org" : "zone")}/{picture
 052                var twitterUrl = $"https://twitter.com/intent/tweet?text={description}&hashtags=DCLCamera&url={url}";
 53
 054                clipboard.WriteText(twitterUrl);
 055                browser.OpenUrl(twitterUrl);
 056                analytics.Share("Explorer", "Twitter");
 057            };
 58
 059            view.OnDeletePictureRequested += () =>
 60            {
 61                async UniTaskVoid DeleteScreenshotAsync(CameraReelResponse screenshot, CancellationToken cancellationTok
 62                {
 63                    try
 64                    {
 065                        CameraReelStorageStatus storage = await storageService.DeleteScreenshot(screenshot.id, cancellat
 066                        cameraReelModel.RemoveScreenshot(screenshot);
 067                        cameraReelModel.SetStorageStatus(storage.CurrentScreenshots, storage.MaxScreenshots);
 068                        analytics.DeletePhoto();
 069                    }
 070                    catch (OperationCanceledException) { }
 71                    catch (Exception e)
 72                    {
 073                        dataStore.notifications.DefaultErrorNotification.Set(DELETE_ERROR_MESSAGE, true);
 074                        Debug.LogException(e);
 075                    }
 076                }
 77
 078                dataStore.notifications.GenericConfirmation.Set(new GenericConfirmationNotificationData(
 79                    "Are you sure you want to delete this photo?",
 80                    "This photo will be removed and you will no longer be able to access it.",
 81                    "NO",
 82                    "YES",
 083                    () => { },
 84                    () =>
 85                    {
 086                        deleteScreenshotCancellationToken = deleteScreenshotCancellationToken.SafeRestart();
 087                        DeleteScreenshotAsync(picture, deleteScreenshotCancellationToken.Token).Forget();
 088                    }), true);
 089            };
 090        }
 91
 92        public void Dispose()
 93        {
 094            view.Dispose();
 095        }
 96    }
 97}