< Summary

Class:ChatHUDController
Assembly:ChatHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ChatWidgetHUD/ChatHUDController.cs
Covered lines:46
Uncovered lines:6
Coverable lines:52
Total lines:114
Line coverage:88.4% (46 of 52)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ChatHUDController()0%110100%
Initialize(...)0%330100%
View_OnPressPrivateMessage(...)0%6200%
ContextMenu_OnShowMenu()0%2100%
OnCloseButtonPressed(...)0%6200%
AddChatMessage(...)0%220100%
Dispose()0%220100%
ChatMessageToChatEntry(...)0%10100100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ChatWidgetHUD/ChatHUDController.cs

#LineLine coverage
 1using DCL.Interface;
 2using System;
 3using UnityEngine;
 4using UnityEngine.Events;
 5
 6public class ChatHUDController : IDisposable
 7{
 18    public static int MAX_CHAT_ENTRIES { internal set; get; } = 30;
 9
 10    public ChatHUDView view;
 11
 12    public event UnityAction<string> OnPressPrivateMessage;
 13
 14    private InputAction_Trigger closeWindowTrigger;
 15
 16    public void Initialize(ChatHUDView view = null, UnityAction<ChatMessage> onSendMessage = null)
 17    {
 2218        this.view = view ?? ChatHUDView.Create();
 19
 2220        this.view.Initialize(this, onSendMessage);
 21
 2222        this.view.OnPressPrivateMessage -= View_OnPressPrivateMessage;
 2223        this.view.OnPressPrivateMessage += View_OnPressPrivateMessage;
 24
 2225        if (this.view.contextMenu != null)
 26        {
 1427            this.view.contextMenu.OnShowMenu -= ContextMenu_OnShowMenu;
 1428            this.view.contextMenu.OnShowMenu += ContextMenu_OnShowMenu;
 29        }
 30
 2231        closeWindowTrigger = Resources.Load<InputAction_Trigger>("CloseWindow");
 2232        closeWindowTrigger.OnTriggered -= OnCloseButtonPressed;
 2233        closeWindowTrigger.OnTriggered += OnCloseButtonPressed;
 2234    }
 35
 036    void View_OnPressPrivateMessage(string friendUserId) { OnPressPrivateMessage?.Invoke(friendUserId); }
 37
 038    private void ContextMenu_OnShowMenu() { view.OnMessageCancelHover(); }
 39
 40    private void OnCloseButtonPressed(DCLAction_Trigger action)
 41    {
 042        if (view.contextMenu != null)
 43        {
 044            view.contextMenu.Hide();
 045            view.confirmationDialog.Hide();
 46        }
 047    }
 48
 49    public void AddChatMessage(ChatEntry.Model chatEntryModel, bool setScrollPositionToBottom = false)
 50    {
 2851        view.AddEntry(chatEntryModel, setScrollPositionToBottom);
 52
 2853        if (view.entries.Count > MAX_CHAT_ENTRIES)
 54        {
 555            UnityEngine.Object.Destroy(view.entries[0].gameObject);
 556            view.entries.Remove(view.entries[0]);
 57        }
 2858    }
 59
 60    public void Dispose()
 61    {
 462        view.OnPressPrivateMessage -= View_OnPressPrivateMessage;
 463        if (view.contextMenu != null)
 64        {
 465            view.contextMenu.OnShowMenu -= ContextMenu_OnShowMenu;
 66        }
 467        closeWindowTrigger.OnTriggered -= OnCloseButtonPressed;
 468        UnityEngine.Object.Destroy(view.gameObject);
 469    }
 70
 71    public static ChatEntry.Model ChatMessageToChatEntry(ChatMessage message)
 72    {
 1373        ChatEntry.Model model = new ChatEntry.Model();
 74
 1375        var ownProfile = UserProfile.GetOwnUserProfile();
 76
 1377        model.messageType = message.messageType;
 1378        model.bodyText = message.body;
 1379        model.timestamp = message.timestamp;
 80
 1381        if (message.recipient != null)
 82        {
 583            var recipientProfile = UserProfileController.userProfilesCatalog.Get(message.recipient);
 584            model.recipientName = recipientProfile != null ? recipientProfile.userName : message.recipient;
 85        }
 86
 1387        if (message.sender != null)
 88        {
 1389            var senderProfile = UserProfileController.userProfilesCatalog.Get(message.sender);
 1390            model.senderName = senderProfile != null ? senderProfile.userName : message.sender;
 1391            model.senderId = message.sender;
 92        }
 93
 1394        if (model.messageType == ChatMessage.Type.PRIVATE)
 95        {
 1196            if (message.recipient == ownProfile.userId)
 97            {
 498                model.subType = ChatEntry.Model.SubType.PRIVATE_FROM;
 499                model.otherUserId = message.sender;
 4100            }
 7101            else if (message.sender == ownProfile.userId)
 102            {
 1103                model.subType = ChatEntry.Model.SubType.PRIVATE_TO;
 1104                model.otherUserId = message.recipient;
 1105            }
 106            else
 107            {
 6108                model.subType = ChatEntry.Model.SubType.NONE;
 109            }
 110        }
 111
 13112        return model;
 113    }
 114}