< Summary

Class:EventCardComponentView
Assembly:ExploreV2
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/ExploreV2/Scripts/Sections/PlacesAndEventsSection/SubSections/EventsSubSection/EventCard/EventCardComponentView.cs
Covered lines:155
Uncovered lines:20
Coverable lines:175
Total lines:477
Line coverage:88.5% (155 of 175)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Start()0%440100%
Configure(...)0%110100%
RefreshControl()0%5.515072.73%
OnFocus()0%220100%
OnLoseFocus()0%220100%
Show(...)0%110100%
Hide(...)0%110100%
Dispose()0%550100%
SetEventPicture(...)0%4.374071.43%
SetEventPicture(...)0%6.65060%
SetEventPicture(...)0%6.65060%
SetEventAsLive(...)0%15150100%
SetLiveTagText(...)0%2.032080%
SetEventDate(...)0%2.032080%
SetEventName(...)0%2.032080%
SetEventDescription(...)0%220100%
SetEventStartedIn(...)0%220100%
SetEventStartsInFromTo(...)0%220100%
SetEventOrganizer(...)0%220100%
SetEventPlace(...)0%220100%
SetSubscribersUsers(...)0%4.024088.89%
SetCoords(...)0%330100%
SetLoadingIndicatorVisible(...)0%110100%
RebuildCardLayouts()0%440100%
CloseModal()0%110100%
OnCloseActionTriggered(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/ExploreV2/Scripts/Sections/PlacesAndEventsSection/SubSections/EventsSubSection/EventCard/EventCardComponentView.cs

#LineLine coverage
 1using DCL;
 2using DCL.Helpers;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.UI;
 6
 7public interface IEventCardComponentView
 8{
 9    /// <summary>
 10    /// Event that will be triggered when the jumpIn button is clicked.
 11    /// </summary>
 12    Button.ButtonClickedEvent onJumpInClick { get; }
 13
 14    /// <summary>
 15    /// Event that will be triggered when the info button is clicked.
 16    /// </summary>
 17    Button.ButtonClickedEvent onInfoClick { get; }
 18
 19    /// <summary>
 20    /// Event that will be triggered when the subscribe event button is clicked.
 21    /// </summary>
 22    Button.ButtonClickedEvent onSubscribeClick { get; }
 23
 24    /// <summary>
 25    /// Event that will be triggered when the unsubscribe event button is clicked.
 26    /// </summary>
 27    Button.ButtonClickedEvent onUnsubscribeClick { get; }
 28
 29    /// <summary>
 30    /// Set the event picture directly from a sprite.
 31    /// </summary>
 32    /// <param name="sprite">Event picture (sprite).</param>
 33    void SetEventPicture(Sprite sprite);
 34
 35    /// <summary>
 36    /// Set the event picture from a 2D texture.
 37    /// </summary>
 38    /// <param name="texture">Event picture (url).</param>
 39    void SetEventPicture(Texture2D texture);
 40
 41    /// <summary>
 42    /// Set the event picture from an uri.
 43    /// </summary>
 44    /// <param name="uri"></param>
 45    void SetEventPicture(string uri);
 46
 47    /// <summary>
 48    /// Set the event card as live mode.
 49    /// </summary>
 50    /// <param name="isLive">True to set the event as live.</param>
 51    void SetEventAsLive(bool isLive);
 52
 53    /// <summary>
 54    /// Set the live tag text.
 55    /// </summary>
 56    /// <param name="newText">New text.</param>
 57    void SetLiveTagText(string newText);
 58
 59    /// <summary>
 60    /// Set the event date.
 61    /// </summary>
 62    /// <param name="newDate">The new date showed in the event card.</param>
 63    void SetEventDate(string newDate);
 64
 65    /// <summary>
 66    /// Set the event name in the card.
 67    /// </summary>
 68    /// <param name="newText">New event name.</param>
 69    void SetEventName(string newText);
 70
 71    /// <summary>
 72    /// Set the event description in the card.
 73    /// </summary>
 74    /// <param name="newText">New event description.</param>
 75    void SetEventDescription(string newText);
 76
 77    /// <summary>
 78    /// Set the event started time in the card.
 79    /// </summary>
 80    /// <param name="newText">New event started time.</param>
 81    void SetEventStartedIn(string newText);
 82
 83    /// <summary>
 84    /// Set the event dates range in the card.
 85    /// </summary>
 86    /// <param name="newText">New event date range.</param>
 87    void SetEventStartsInFromTo(string newText);
 88
 89    /// <summary>
 90    /// Set the event organizer in the card.
 91    /// </summary>
 92    /// <param name="newText">New event organizer.</param>
 93    void SetEventOrganizer(string newText);
 94
 95    /// <summary>
 96    /// Set the event place in the card.
 97    /// </summary>
 98    /// <param name="newText">New event place.</param>
 99    void SetEventPlace(string newText);
 100
 101    /// <summary>
 102    /// Set the the number of users subscribed to the event.
 103    /// </summary>
 104    /// <param name="newNumberOfUsers">Number of users subscribed.</param>
 105    void SetSubscribersUsers(int newNumberOfUsers);
 106
 107    /// <summary>
 108    /// Set the event coords.
 109    /// </summary>
 110    /// <param name="newCoords">Event coords.</param>
 111    void SetCoords(Vector2Int newCoords);
 112
 113    /// <summary>
 114    /// Active or deactive the loading indicator.
 115    /// </summary>
 116    /// <param name="isVisible">True for showing the loading indicator and hiding the card info.</param>
 117    void SetLoadingIndicatorVisible(bool isVisible);
 118}
 119
 120public class EventCardComponentView : BaseComponentView, IEventCardComponentView, IComponentModelConfig<EventCardCompone
 121{
 122    internal const string USERS_CONFIRMED_MESSAGE = "{0} confirmed";
 123    internal const string NOBODY_CONFIRMED_MESSAGE = "Nobody confirmed yet";
 124
 125    [Header("Prefab References")]
 126    [SerializeField] internal ImageComponentView eventImage;
 127    [SerializeField] internal TagComponentView liveTag;
 128    [SerializeField] internal TMP_Text eventDateText;
 129    [SerializeField] internal TMP_Text eventNameText;
 130    [SerializeField] internal TMP_Text eventDescText;
 131    [SerializeField] internal TMP_Text eventStartedInTitleForLive;
 132    [SerializeField] internal TMP_Text eventStartedInTitleForNotLive;
 133    [SerializeField] internal TMP_Text eventStartedInText;
 134    [SerializeField] internal TMP_Text eventStartsInFromToText;
 135    [SerializeField] internal TMP_Text eventOrganizerText;
 136    [SerializeField] internal TMP_Text eventPlaceText;
 137    [SerializeField] internal TMP_Text subscribedUsersTitleForLive;
 138    [SerializeField] internal TMP_Text subscribedUsersTitleForNotLive;
 139    [SerializeField] internal TMP_Text subscribedUsersText;
 140    [SerializeField] internal Button modalBackgroundButton;
 141    [SerializeField] internal ButtonComponentView closeCardButton;
 142    [SerializeField] internal InputAction_Trigger closeAction;
 143    [SerializeField] internal ButtonComponentView infoButton;
 144    [SerializeField] internal ButtonComponentView jumpinButton;
 145    [SerializeField] internal ButtonComponentView jumpinButtonForNotLive;
 146    [SerializeField] internal ButtonComponentView subscribeEventButton;
 147    [SerializeField] internal ButtonComponentView unsubscribeEventButton;
 148    [SerializeField] internal GameObject imageContainer;
 149    [SerializeField] internal GameObject eventInfoContainer;
 150    [SerializeField] internal GameObject loadingSpinner;
 151    [SerializeField] internal VerticalLayoutGroup contentVerticalLayout;
 152    [SerializeField] internal VerticalLayoutGroup infoVerticalLayout;
 153    [SerializeField] internal HorizontalLayoutGroup timeAndPlayersHorizontalLayout;
 154    [SerializeField] internal EventCardAnimator cardAnimator;
 155
 156    [Header("Configuration")]
 157    [SerializeField] internal Sprite defaultPicture;
 158    [SerializeField] internal bool isEventCardModal = false;
 159    [SerializeField] internal EventCardComponentModel model;
 160
 54161    public Button.ButtonClickedEvent onJumpInClick => jumpinButton?.onClick;
 54162    public Button.ButtonClickedEvent onJumpInForNotLiveClick => jumpinButtonForNotLive?.onClick;
 54163    public Button.ButtonClickedEvent onInfoClick => infoButton?.onClick;
 54164    public Button.ButtonClickedEvent onSubscribeClick => subscribeEventButton?.onClick;
 54165    public Button.ButtonClickedEvent onUnsubscribeClick => unsubscribeEventButton?.onClick;
 166
 167    public override void Start()
 168    {
 65169        if (closeCardButton != null)
 34170            closeCardButton.onClick.AddListener(CloseModal);
 171
 65172        if (closeAction != null)
 34173            closeAction.OnTriggered += OnCloseActionTriggered;
 174
 65175        if (modalBackgroundButton != null)
 34176            modalBackgroundButton.onClick.AddListener(CloseModal);
 65177    }
 178
 179    public void Configure(EventCardComponentModel newModel)
 180    {
 28181        model = newModel;
 28182        RefreshControl();
 28183    }
 184
 185    public override void RefreshControl()
 186    {
 28187        if (model == null)
 0188            return;
 189
 28190        if (model.eventPictureSprite != null)
 28191            SetEventPicture(model.eventPictureSprite);
 0192        else if (model.eventPictureTexture != null)
 0193            SetEventPicture(model.eventPictureTexture);
 0194        else if (!string.IsNullOrEmpty(model.eventPictureUri))
 0195            SetEventPicture(model.eventPictureUri);
 196        else
 0197            SetEventPicture(sprite: null);
 198
 28199        SetEventAsLive(model.isLive);
 28200        SetLiveTagText(model.liveTagText);
 28201        SetEventDate(model.eventDateText);
 28202        SetEventName(model.eventName);
 28203        SetEventDescription(model.eventDescription);
 28204        SetEventStartedIn(model.eventStartedIn);
 28205        SetEventStartsInFromTo(model.eventStartsInFromTo);
 28206        SetEventOrganizer(model.eventOrganizer);
 28207        SetEventPlace(model.eventPlace);
 28208        SetSubscribersUsers(model.subscribedUsers);
 28209        SetCoords(model.coords);
 210
 28211        RebuildCardLayouts();
 28212    }
 213
 214    public override void OnFocus()
 215    {
 29216        base.OnFocus();
 217
 29218        cardAnimator?.Focus();
 29219    }
 220
 221    public override void OnLoseFocus()
 222    {
 422223        base.OnLoseFocus();
 224
 422225        cardAnimator?.Idle();
 368226    }
 227
 228    public override void Show(bool instant = false)
 229    {
 4230        base.Show(instant);
 231
 4232        DataStore.i.exploreV2.isSomeModalOpen.Set(true);
 4233    }
 234
 235    public override void Hide(bool instant = false)
 236    {
 113237        base.Hide(instant);
 238
 113239        DataStore.i.exploreV2.isSomeModalOpen.Set(false);
 113240    }
 241
 242    public override void Dispose()
 243    {
 559244        base.Dispose();
 245
 559246        if (eventImage != null)
 559247            eventImage.Dispose();
 248
 559249        if (closeCardButton != null)
 243250            closeCardButton.onClick.RemoveAllListeners();
 251
 559252        if (closeAction != null)
 243253            closeAction.OnTriggered -= OnCloseActionTriggered;
 254
 559255        if (modalBackgroundButton != null)
 243256            modalBackgroundButton.onClick.RemoveAllListeners();
 559257    }
 258
 259    public void SetEventPicture(Sprite sprite)
 260    {
 29261        if (sprite == null && defaultPicture != null)
 0262            sprite = defaultPicture;
 263
 29264        model.eventPictureSprite = sprite;
 265
 29266        if (eventImage == null)
 0267            return;
 268
 29269        eventImage.SetImage(sprite);
 29270    }
 271
 272    public void SetEventPicture(Texture2D texture)
 273    {
 1274        if (texture == null && defaultPicture != null)
 275        {
 0276            SetEventPicture(defaultPicture);
 0277            return;
 278        }
 279
 1280        model.eventPictureTexture = texture;
 281
 1282        if (!Application.isPlaying)
 0283            return;
 284
 1285        if (eventImage == null)
 0286            return;
 287
 1288        eventImage.SetImage(texture);
 1289    }
 290
 291    public void SetEventPicture(string uri)
 292    {
 1293        if (string.IsNullOrEmpty(uri) && defaultPicture != null)
 294        {
 0295            SetEventPicture(defaultPicture);
 0296            return;
 297        }
 298
 1299        model.eventPictureUri = uri;
 300
 1301        if (!Application.isPlaying)
 0302            return;
 303
 1304        if (eventImage == null)
 0305            return;
 306
 1307        eventImage.SetImage(uri);
 1308    }
 309
 310    public void SetEventAsLive(bool isLive)
 311    {
 36312        model.isLive = isLive;
 313
 36314        if (liveTag != null)
 36315            liveTag.gameObject.SetActive(isLive);
 316
 36317        if (eventDateText != null)
 36318            eventDateText.gameObject.SetActive(!isLive);
 319
 36320        if (jumpinButton != null)
 36321            jumpinButton.gameObject.SetActive(isEventCardModal || isLive);
 322
 36323        if (jumpinButtonForNotLive)
 33324            jumpinButtonForNotLive.gameObject.SetActive(!isEventCardModal && !isLive);
 325
 36326        if (subscribeEventButton != null)
 36327            subscribeEventButton.gameObject.SetActive(!isLive && !model.isSubscribed);
 328
 36329        if (unsubscribeEventButton != null)
 36330            unsubscribeEventButton.gameObject.SetActive(!isLive && model.isSubscribed);
 331
 36332        if (eventStartedInTitleForLive)
 33333            eventStartedInTitleForLive.gameObject.SetActive(isLive);
 334
 36335        if (eventStartedInTitleForNotLive)
 33336            eventStartedInTitleForNotLive.gameObject.SetActive(!isLive);
 337
 36338        if (subscribedUsersTitleForLive != null)
 33339            subscribedUsersTitleForLive.gameObject.SetActive(isLive);
 340
 36341        if (subscribedUsersTitleForNotLive != null)
 33342            subscribedUsersTitleForNotLive.gameObject.SetActive(!isLive);
 36343    }
 344
 345    public void SetLiveTagText(string newText)
 346    {
 29347        model.liveTagText = newText;
 348
 29349        if (liveTag == null)
 0350            return;
 351
 29352        liveTag.SetText(newText);
 29353    }
 354
 355    public void SetEventDate(string newDate)
 356    {
 29357        model.eventDateText = newDate;
 358
 29359        if (eventDateText == null)
 0360            return;
 361
 29362        eventDateText.text = newDate;
 29363    }
 364
 365    public void SetEventName(string newText)
 366    {
 29367        model.eventName = newText;
 368
 29369        if (eventNameText == null)
 0370            return;
 371
 29372        eventNameText.text = newText;
 29373    }
 374
 375    public void SetEventDescription(string newText)
 376    {
 29377        model.eventDescription = newText;
 378
 29379        if (eventDescText == null)
 21380            return;
 381
 8382        eventDescText.text = newText;
 8383    }
 384
 385    public void SetEventStartedIn(string newText)
 386    {
 29387        model.eventStartedIn = newText;
 388
 29389        if (eventStartedInText == null)
 3390            return;
 391
 26392        eventStartedInText.text = newText;
 26393    }
 394
 395    public void SetEventStartsInFromTo(string newText)
 396    {
 29397        model.eventStartsInFromTo = newText;
 398
 29399        if (eventStartsInFromToText == null)
 25400            return;
 401
 4402        eventStartsInFromToText.text = newText;
 4403    }
 404
 405    public void SetEventOrganizer(string newText)
 406    {
 29407        model.eventOrganizer = newText;
 408
 29409        if (eventOrganizerText == null)
 25410            return;
 411
 4412        eventOrganizerText.text = newText;
 4413    }
 414
 415    public void SetEventPlace(string newText)
 416    {
 29417        model.eventPlace = newText;
 418
 29419        if (eventPlaceText == null)
 25420            return;
 421
 4422        eventPlaceText.text = newText;
 4423    }
 424
 425    public void SetSubscribersUsers(int newNumberOfUsers)
 426    {
 32427        model.subscribedUsers = newNumberOfUsers;
 428
 32429        if (subscribedUsersText == null)
 0430            return;
 431
 32432        if (!isEventCardModal)
 433        {
 27434            subscribedUsersText.text = newNumberOfUsers.ToString();
 435        }
 436        else
 437        {
 5438            if (newNumberOfUsers > 0)
 4439                subscribedUsersText.text = string.Format(USERS_CONFIRMED_MESSAGE, newNumberOfUsers);
 440            else
 1441                subscribedUsersText.text = NOBODY_CONFIRMED_MESSAGE;
 442        }
 1443    }
 444
 445    public void SetCoords(Vector2Int newCoords)
 446    {
 29447        model.coords = newCoords;
 448
 29449        if (jumpinButton == null || !isEventCardModal)
 25450            return;
 451
 4452        jumpinButton.SetText($"{newCoords.x},{newCoords.y}");
 4453    }
 454
 455    public void SetLoadingIndicatorVisible(bool isVisible)
 456    {
 2457        imageContainer.SetActive(!isVisible);
 2458        eventInfoContainer.SetActive(!isVisible);
 2459        loadingSpinner.SetActive(isVisible);
 2460    }
 461
 462    internal void RebuildCardLayouts()
 463    {
 28464        if (contentVerticalLayout != null)
 3465            Utils.ForceRebuildLayoutImmediate(contentVerticalLayout.transform as RectTransform);
 466
 28467        if (infoVerticalLayout != null)
 3468            Utils.ForceRebuildLayoutImmediate(infoVerticalLayout.transform as RectTransform);
 469
 28470        if (timeAndPlayersHorizontalLayout != null)
 25471            Utils.ForceRebuildLayoutImmediate(timeAndPlayersHorizontalLayout.transform as RectTransform);
 28472    }
 473
 4474    internal void CloseModal() { Hide(); }
 475
 2476    internal void OnCloseActionTriggered(DCLAction_Trigger action) { CloseModal(); }
 477}