all files / app/quick-panel/tabs/chat/ chat-tab.controller.js

20.69% Statements 6/29
0% Branches 0/6
14.29% Functions 1/7
20.69% Lines 6/29
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82                                                                                                                                                        
(function ()
{
    'use strict';
 
    angular
        .module('app.quick-panel')
        .controller('ChatTabController', ChatTabController);
 
    /** @ngInject */
    function ChatTabController(msApi, $timeout)
    {
        var vm = this;
 
        // Data
        vm.chat = {};
        vm.chatActive = false;
        vm.replyMessage = '';
 
        msApi.request('quickPanel.contacts@get', {},
            // Success
            function (response)
            {
                vm.contacts = response.data;
            }
        );
 
        // Methods
        vm.toggleChat = toggleChat;
        vm.reply = reply;
 
        //////////
 
        function toggleChat(contact)
        {
            vm.chatActive = !vm.chatActive;
 
            if ( vm.chatActive )
            {
                vm.replyMessage = '';
                vm.chat.contact = contact;
                scrollToBottomOfChat(0);
            }
        }
 
        function reply()
        {
            if ( vm.replyMessage === '' )
            {
                return;
            }
 
            if ( !vm.chat.contact.dialog )
            {
                vm.chat.contact.dialog = [];
            }
 
            vm.chat.contact.dialog.push({
                who    : 'user',
                message: vm.replyMessage,
                time   : 'Just now'
            });
 
            vm.replyMessage = '';
 
            scrollToBottomOfChat(400);
        }
 
        function scrollToBottomOfChat(speed)
        {
            var chatDialog = angular.element('#chat-dialog');
 
            $timeout(function ()
            {
                chatDialog.animate({
                    scrollTop: chatDialog[0].scrollHeight
                }, speed);
            }, 0);
 
        }
    }
 
})();