Your IP : 216.73.216.95


Current Path : /var/www/ljmtc/cbt/message/amd/build/
Upload File :
Current File : /var/www/ljmtc/cbt/message/amd/build/message_drawer_view_conversation_state_manager.min.js.map

{"version":3,"sources":["../src/message_drawer_view_conversation_state_manager.js"],"names":["define","$","cloneState","state","extend","formatMessages","messages","loggedInUserId","members","map","message","fromLoggedInUser","useridfrom","id","userFrom","text","timeCreated","timecreated","parseInt","formatMembers","member","fullname","profileurl","profileimageurl","profileimageurlsmall","isonline","showonlinestatus","isblocked","iscontact","isdeleted","canmessage","canmessageevenifblocked","requirescontact","contactrequests","buildInitialState","midnight","messagePollMin","messagePollMax","messagePollAfterMax","name","subname","type","totalMemberCount","imageUrl","isFavourite","isMuted","canDeleteMessagesForAllUsers","deleteMessagesForAllUsers","hasTriedToLoadMessages","loadingMessages","loadingMembers","loadingConfirmAction","pendingBlockUserIds","pendingUnblockUserIds","pendingRemoveContactIds","pendingAddContactIds","pendingDeleteMessageIds","pendingSendMessageIds","pendingDeleteConversation","selectedMessageIds","showEmojiAutoComplete","showEmojiPicker","addMessages","newState","formattedMessages","sendState","timeAdded","Date","now","errorMessage","allMessages","concat","sort","a","b","filter","index","sortedMessages","updateMessages","data","updatesById","reduce","carry","messageData","oldMessage","newMessage","formattedMessage","removeMessages","removeMessageIds","indexOf","removeMessagesById","messageIds","addMembers","formattedMembers","forEach","removeMembers","setLoadingMessages","value","setLoadingMembers","setId","setName","setSubname","setType","setIsFavourite","setIsMuted","setCanDeleteMessagesForAllUsers","setDeleteMessagesForAllUsers","setTotalMemberCount","count","setImageUrl","url","setLoadingConfirmAction","setPendingDeleteConversation","setMessagesSendPendingById","setMessagesSendSuccessById","setMessagesSendFailById","setShowEmojiAutoComplete","show","setShowEmojiPicker","addPendingBlockUsersById","userIds","push","addPendingRemoveContactsById","addPendingUnblockUsersById","addPendingAddContactsById","addPendingDeleteMessagesById","removePendingBlockUsersById","removePendingRemoveContactsById","removePendingUnblockUsersById","removePendingAddContactsById","removePendingDeleteMessagesById","addSelectedMessagesById","removeSelectedMessagesById","markMessagesAsRead","readMessages","readMessageIds","isRead","addContactRequests","requests","request","fromUserId","userid","toUserId","requesteduserid","removeContactRequests","existing"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * This module operates on the view states from the message_drawer_view_conversation module.\n * It exposes functions that can be used to generate new version of the state.\n *\n * Important notes for this module:\n * 1.) The existing state is always immutable. It should never be modified.\n * 2.) All functions that operate on the state should always clone the state and\n *     modify the cloned state before returning it.\n *\n * It's important that the states remain immutable because they are diff'd in\n * the message_drawer_view_conversation_patcher module in order to work out what\n * has changed.\n *\n * @module     core_message/message_drawer_view_conversation_state_manager\n * @copyright  2018 Ryan Wyllie <ryan@moodle.com>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery'], function($) {\n\n    /**\n     * Clone a state, a state is a collection of information about the variables required to build\n     * the conversation user interface.\n     *\n     * @param  {Object} state State to clone\n     * @return {Object} newstate A copy of the state to clone.\n     */\n    var cloneState = function(state) {\n        // Do a deep extend to make sure we recursively copy objects and\n        // arrays so that the new state doesn't contain any references to\n        // the old state, e.g. adding a value to an array in the new state\n        // shouldn't also add it to the old state.\n        return $.extend(true, {}, state);\n    };\n\n    /**\n     * Format messages to be used in a state.\n     *\n     * @param  {Array} messages The messages to format.\n     * @param  {Number} loggedInUserId The logged in user id.\n     * @param  {Array} members The converstation members.\n     * @return {Array} Formatted messages.\n     */\n    var formatMessages = function(messages, loggedInUserId, members) {\n        return messages.map(function(message) {\n            var fromLoggedInUser = message.useridfrom == loggedInUserId;\n            return {\n                // Stringify the id.\n                id: \"\" + message.id,\n                fromLoggedInUser: fromLoggedInUser,\n                userFrom: members[message.useridfrom],\n                text: message.text,\n                timeCreated: message.timecreated ? parseInt(message.timecreated, 10) : null\n            };\n        });\n    };\n\n    /**\n     * Format members to be used in a state.\n     *\n     * @param  {Array} members The messages to format.\n     * @return {Array} Formatted members.\n     */\n    var formatMembers = function(members) {\n        return members.map(function(member) {\n            return {\n                id: member.id,\n                fullname: member.fullname,\n                profileurl: member.profileurl,\n                profileimageurl: member.profileimageurl,\n                profileimageurlsmall: member.profileimageurlsmall,\n                isonline:  member.isonline,\n                showonlinestatus: member.showonlinestatus,\n                isblocked: member.isblocked,\n                iscontact: member.iscontact,\n                isdeleted: member.isdeleted,\n                canmessage: member.canmessage,\n                canmessageevenifblocked: member.canmessageevenifblocked,\n                requirescontact: member.requirescontact,\n                contactrequests: member.contactrequests || []\n            };\n        });\n    };\n\n    /**\n     * Create an initial (blank) state.\n     *\n     * @param  {Number} midnight Midnight time.\n     * @param  {Number} loggedInUserId The logged in user id.\n     * @param  {Number} id The conversation id.\n     * @param  {Number} messagePollMin The message poll start timeout in seconds.\n     * @param  {Number} messagePollMax The message poll max timeout limit in seconds.\n     * @param  {Number} messagePollAfterMax The message poll frequency in seconds to reset to after max limit is reached.\n     * @return {Object} Initial state.\n     */\n    var buildInitialState = function(\n        midnight,\n        loggedInUserId,\n        id,\n        messagePollMin,\n        messagePollMax,\n        messagePollAfterMax\n    ) {\n        return {\n            midnight: midnight,\n            loggedInUserId: loggedInUserId,\n            id: id,\n            messagePollMin: messagePollMin,\n            messagePollMax: messagePollMax,\n            messagePollAfterMax: messagePollAfterMax,\n            name: null,\n            subname: null,\n            type: null,\n            totalMemberCount: null,\n            imageUrl: null,\n            isFavourite: null,\n            isMuted: null,\n            canDeleteMessagesForAllUsers: false,\n            deleteMessagesForAllUsers: false,\n            members: {},\n            messages: [],\n            hasTriedToLoadMessages: false,\n            loadingMessages: true,\n            loadingMembers: true,\n            loadingConfirmAction: false,\n            pendingBlockUserIds: [],\n            pendingUnblockUserIds: [],\n            pendingRemoveContactIds: [],\n            pendingAddContactIds: [],\n            pendingDeleteMessageIds: [],\n            pendingSendMessageIds: [],\n            pendingDeleteConversation: false,\n            selectedMessageIds: [],\n            showEmojiAutoComplete: false,\n            showEmojiPicker: false\n        };\n    };\n\n    /**\n     * Add messages to a state and sort them by timecreated.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messages Messages to add to state.\n     * @return {Object} state New state with added messages.\n     */\n    var addMessages = function(state, messages) {\n        var newState = cloneState(state);\n        var formattedMessages = formatMessages(messages, state.loggedInUserId, state.members);\n        formattedMessages = formattedMessages.map(function(message) {\n            message.sendState = null;\n            message.timeAdded = Date.now();\n            message.errorMessage = null;\n            return message;\n        });\n        var allMessages = state.messages.concat(formattedMessages);\n        // Sort the messages. Oldest to newest.\n        allMessages.sort(function(a, b) {\n            if (a.timeCreated === null && b.timeCreated === null) {\n                if (a.timeAdded < b.timeAdded) {\n                    return -1;\n                } else if (a.timeAdded > b.timeAdded) {\n                    return 1;\n                }\n            }\n\n            if (a.timeCreated === null && b.timeCreated !== null) {\n                // A comes after b.\n                return 1;\n            } else if (a.timeCreated !== null && b.timeCreated === null) {\n                // A comes before b.\n                return -1;\n            } else if (a.timeCreated < b.timeCreated) {\n                // A comes before b.\n                return -1;\n            } else if (a.timeCreated > b.timeCreated) {\n                // A comes after b.\n                return 1;\n            } else if (a.id < b.id) {\n                return -1;\n            } else if (a.id > b.id) {\n                return 1;\n            } else {\n                return 0;\n            }\n        });\n\n        // Filter out any duplicate messages.\n        newState.messages = allMessages.filter(function(message, index, sortedMessages) {\n            return !index || message.id != sortedMessages[index - 1].id;\n        });\n\n        return newState;\n    };\n\n    /**\n     * Update existing messages.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} data 2D array of old and new messages\n     * @return {Object} state.\n     */\n    var updateMessages = function(state, data) {\n        var newState = cloneState(state);\n        var updatesById = data.reduce(function(carry, messageData) {\n            var oldMessage = messageData[0];\n            var newMessage = messageData[1];\n            var formattedMessages = formatMessages([newMessage], state.loggedInUserId, state.members);\n            var formattedMessage = formattedMessages[0];\n\n            carry[oldMessage.id] = formattedMessage;\n            return carry;\n        }, {});\n\n        newState.messages = newState.messages.map(function(message) {\n            if (message.id in updatesById) {\n                return $.extend(message, updatesById[message.id]);\n            } else {\n                return message;\n            }\n        });\n\n        return newState;\n    };\n\n    /**\n     * Remove messages from state.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messages Messages to remove from state.\n     * @return {Object} state New state with removed messages.\n     */\n    var removeMessages = function(state, messages) {\n        var newState = cloneState(state);\n        var removeMessageIds = messages.map(function(message) {\n            return \"\" + message.id;\n        });\n        newState.messages = newState.messages.filter(function(message) {\n            return removeMessageIds.indexOf(message.id) < 0;\n        });\n\n        return newState;\n    };\n\n    /**\n     * Remove messages from state by message id.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Message ids to remove from state.\n     * @return {Object} state New state with removed messages.\n     */\n    var removeMessagesById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.messages = newState.messages.filter(function(message) {\n            return messageIds.indexOf(message.id) < 0;\n        });\n\n        return newState;\n    };\n\n    /**\n     * Add conversation member to state.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} members Conversation members to be added to state.\n     * @return {Object} New state with added members.\n     */\n    var addMembers = function(state, members) {\n        var newState = cloneState(state);\n        var formattedMembers = formatMembers(members);\n        formattedMembers.forEach(function(member) {\n            newState.members[member.id] = member;\n        });\n        return newState;\n    };\n\n    /**\n     * Remove members from state.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} members Members to be removed from state.\n     * @return {Object} New state with removed members.\n     */\n    var removeMembers = function(state, members) {\n        var newState = cloneState(state);\n        members.forEach(function(member) {\n            delete newState.members[member.id];\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state loading messages attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value New loading messages value.\n     * @return {Object} New state with loading messages attribute.\n     */\n    var setLoadingMessages = function(state, value) {\n        var newState = cloneState(state);\n        newState.loadingMessages = value;\n        if (state.loadingMessages && !value) {\n            // If we're going from loading to not loading then\n            // it means we've tried to load.\n            newState.hasTriedToLoadMessages = true;\n        }\n        return newState;\n    };\n\n    /**\n     * Set the state loading members attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value New loading members value.\n     * @return {Object} New state with loading members attribute.\n     */\n    var setLoadingMembers = function(state, value) {\n        var newState = cloneState(state);\n        newState.loadingMembers = value;\n        return newState;\n    };\n\n    /**\n     * Set the conversation id.\n     *\n     * @param  {Object} state Current state.\n     * @param  {String} value The ID.\n     * @return {Object} New state.\n     */\n    var setId = function(state, value) {\n        var newState = cloneState(state);\n        newState.id = value;\n        return newState;\n    };\n\n    /**\n     * Set the state name attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {String} value New name value.\n     * @return {Object} New state with name attribute.\n     */\n    var setName = function(state, value) {\n        var newState = cloneState(state);\n        newState.name = value;\n        return newState;\n    };\n\n    /**\n     * Set the state subname attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {String} value New subname value.\n     * @return {Object} New state.\n     */\n    var setSubname = function(state, value) {\n        var newState = cloneState(state);\n        newState.subname = value;\n        return newState;\n    };\n\n    /**\n     * Set the conversation type.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Int} type Conversation type.\n     * @return {Object} New state.\n     */\n    var setType = function(state, type) {\n        var newState = cloneState(state);\n        newState.type = type;\n        return newState;\n    };\n\n    /**\n     * Set whether the conversation is a favourite conversation.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} isFavourite If it's a favourite.\n     * @return {Object} New state.\n     */\n    var setIsFavourite = function(state, isFavourite) {\n        var newState = cloneState(state);\n        newState.isFavourite = isFavourite;\n        return newState;\n    };\n\n    /**\n     * Set whether the conversation is a muted conversation.\n     *\n     * @param  {Object} state Current state.\n     * @param  {bool} isMuted If it's muted.\n     * @return {Object} New state.\n     */\n    var setIsMuted = function(state, isMuted) {\n        var newState = cloneState(state);\n        newState.isMuted = isMuted;\n        return newState;\n    };\n\n    /**\n     * Set the total member count.\n     *\n     * @param  {Object} state Current state.\n     * @param  {String} count The count.\n     * @return {Object} New state.\n     */\n    var setTotalMemberCount = function(state, count) {\n        var newState = cloneState(state);\n        newState.totalMemberCount = count;\n        return newState;\n    };\n\n    /**\n     * Set the conversation image url.\n     *\n     * @param  {Object} state Current state.\n     * @param  {String} url The url to the image.\n     * @return {Object} New state.\n     */\n    var setImageUrl = function(state, url) {\n        var newState = cloneState(state);\n        newState.imageUrl = url;\n        return newState;\n    };\n\n    /**\n     * Set the state loading confirm action attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value New loading confirm action value.\n     * @return {Object} New state with loading confirm action attribute.\n     */\n    var setLoadingConfirmAction = function(state, value) {\n        var newState = cloneState(state);\n        newState.loadingConfirmAction = value;\n        return newState;\n    };\n\n    /**\n     * Set the state pending delete conversation attribute.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value New pending delete conversation value.\n     * @return {Object} New state with pending delete conversation attribute.\n     */\n    var setPendingDeleteConversation = function(state, value) {\n        var newState = cloneState(state);\n        newState.pendingDeleteConversation = value;\n        return newState;\n    };\n\n    /**\n     * Set the state of message to pending.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages to delete.\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var setMessagesSendPendingById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.messages.forEach(function(message) {\n            if (messageIds.indexOf(message.id) >= 0) {\n                message.sendState = 'pending';\n                message.errorMessage = null;\n            }\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state of message to sent.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages to delete.\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var setMessagesSendSuccessById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.messages.forEach(function(message) {\n            if (messageIds.indexOf(message.id) >= 0) {\n                message.sendState = 'sent';\n                message.errorMessage = null;\n            }\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state of messages to error.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages to delete.\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var setMessagesSendFailById = function(state, messageIds, errorMessage) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.messages.forEach(function(message) {\n            if (messageIds.indexOf(message.id) >= 0) {\n                message.sendState = 'error';\n                message.errorMessage = errorMessage;\n            }\n        });\n        return newState;\n    };\n\n    /**\n     * Set the visibility of the emoji picker.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} show Should the emoji picker be shown.\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var setShowEmojiPicker = function(state, show) {\n        var newState = cloneState(state);\n        newState.showEmojiPicker = show;\n        return newState;\n    };\n\n    /**\n     * Set whether emojis auto complete suggestions should be shown.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} show Show the autocomplete\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var setShowEmojiAutoComplete = function(state, show) {\n        var newState = cloneState(state);\n        newState.showEmojiAutoComplete = show;\n        return newState;\n    };\n\n    /**\n     * Set the state pending block userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to block.\n     * @return {Object} New state with array of pending block userids.\n     */\n    var addPendingBlockUsersById = function(state, userIds) {\n        var newState = cloneState(state);\n        userIds.forEach(function(id) {\n            newState.pendingBlockUserIds.push(id);\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state pending remove userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to remove.\n     * @return {Object} New state with array of pending remove userids.\n     */\n    var addPendingRemoveContactsById = function(state, userIds) {\n        var newState = cloneState(state);\n        userIds.forEach(function(id) {\n            newState.pendingRemoveContactIds.push(id);\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state pending unblock userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to unblock.\n     * @return {Object} New state with array of pending unblock userids.\n     */\n    var addPendingUnblockUsersById = function(state, userIds) {\n        var newState = cloneState(state);\n        userIds.forEach(function(id) {\n            newState.pendingUnblockUserIds.push(id);\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state pending add users to contacts userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to add users to contacts.\n     * @return {Object} New state with array of pending add users to contacts userids.\n     */\n    var addPendingAddContactsById = function(state, userIds) {\n        var newState = cloneState(state);\n        userIds.forEach(function(id) {\n            newState.pendingAddContactIds.push(id);\n        });\n        return newState;\n    };\n\n    /**\n     * Set the state pending delete messages.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages to delete.\n     * @return {Object} New state with array of pending delete message ids.\n     */\n    var addPendingDeleteMessagesById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds.forEach(function(id) {\n            newState.pendingDeleteMessageIds.push(id);\n        });\n        return newState;\n    };\n\n    /**\n     * Update the state pending block userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to remove from the list of user ids to block.\n     * @return {Object} New state with array of pending block userids.\n     */\n    var removePendingBlockUsersById = function(state, userIds) {\n        var newState = cloneState(state);\n        newState.pendingBlockUserIds = newState.pendingBlockUserIds.filter(function(id) {\n            return userIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Update the state pending remove userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to remove from the list of user ids to remove.\n     * @return {Object} New state with array of pending remove userids.\n     */\n    var removePendingRemoveContactsById = function(state, userIds) {\n        var newState = cloneState(state);\n        newState.pendingRemoveContactIds = newState.pendingRemoveContactIds.filter(function(id) {\n            return userIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Update the state pending unblock userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to remove from the list of user ids to unblock.\n     * @return {Object} New state with array of pending unblock userids.\n     */\n    var removePendingUnblockUsersById = function(state, userIds) {\n        var newState = cloneState(state);\n        newState.pendingUnblockUserIds = newState.pendingUnblockUserIds.filter(function(id) {\n            return userIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Update the state pending add to contacts userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} userIds User ids to remove from the list of user ids to add to contacts.\n     * @return {Object} New state with array of pending add to contacts userids.\n     */\n    var removePendingAddContactsById = function(state, userIds) {\n        var newState = cloneState(state);\n        newState.pendingAddContactIds = newState.pendingAddContactIds.filter(function(id) {\n            return userIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Update the state pending delete messages userids.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Message ids to remove from the list of messages to delete.\n     * @return {Object} New state with array of messages to delete.\n     */\n    var removePendingDeleteMessagesById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.pendingDeleteMessageIds = newState.pendingDeleteMessageIds.filter(function(id) {\n            return messageIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Add messages to state selected messages.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages that are selected.\n     * @return {Object} New state with array of not blocked members.\n     */\n    var addSelectedMessagesById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.selectedMessageIds = newState.selectedMessageIds.concat(messageIds);\n        return newState;\n    };\n\n    /**\n     * Remove messages from the state selected messages.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} messageIds Messages to remove from selected messages.\n     * @return {Object} New state with array of selected messages.\n     */\n    var removeSelectedMessagesById = function(state, messageIds) {\n        var newState = cloneState(state);\n        messageIds = messageIds.map(function(id) {\n            return \"\" + id;\n        });\n        newState.selectedMessageIds = newState.selectedMessageIds.filter(function(id) {\n            return messageIds.indexOf(id) < 0;\n        });\n        return newState;\n    };\n\n    /**\n     * Mark messages as read.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} readMessages Messages that are read.\n     * @return {Object} New state with array of messages that have the isread attribute set.\n     */\n    var markMessagesAsRead = function(state, readMessages) {\n        var newState = cloneState(state);\n        var readMessageIds = readMessages.map(function(message) {\n            return message.id;\n        });\n        newState.messages = newState.messages.map(function(message) {\n            if (readMessageIds.indexOf(message.id) >= 0) {\n                message.isRead = true;\n            }\n\n            return message;\n        });\n        return newState;\n    };\n\n    /**\n     * Add a contact request to each of the members that the request is for.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} requests The contact requests\n     * @return {Object} New state\n     */\n    var addContactRequests = function(state, requests) {\n        var newState = cloneState(state);\n\n        requests.forEach(function(request) {\n            var fromUserId = request.userid;\n            var toUserId = request.requesteduserid;\n            newState.members[fromUserId].contactrequests.push(request);\n            newState.members[toUserId].contactrequests.push(request);\n        });\n\n        return newState;\n    };\n\n    /**\n     * Remove a contact request from the members of that request.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Array} requests The contact requests\n     * @return {Object} New state\n     */\n    var removeContactRequests = function(state, requests) {\n        var newState = cloneState(state);\n        requests.forEach(function(request) {\n            var fromUserId = request.userid;\n            var toUserId = request.requesteduserid;\n\n            newState.members[fromUserId].contactrequests = newState.members[fromUserId].contactrequests.filter(function(existing) {\n                return existing.userid != fromUserId;\n            });\n            newState.members[toUserId].contactrequests = newState.members[toUserId].contactrequests.filter(function(existing) {\n                return existing.requesteduserid != toUserId;\n            });\n        });\n\n        return newState;\n    };\n\n    /**\n     * Set wheter the message of the conversation can delete for all users.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value If it can delete for all users.\n     * @return {Object} New state.\n     */\n    var setCanDeleteMessagesForAllUsers = function(state, value) {\n        var newState = cloneState(state);\n        newState.canDeleteMessagesForAllUsers = value;\n        return newState;\n    };\n\n    /**\n     * Set wheter the messages of the conversation delete for all users.\n     *\n     * @param  {Object} state Current state.\n     * @param  {Bool} value Delete messages for all users.\n     * @return {Object} New state.\n     */\n    var setDeleteMessagesForAllUsers = function(state, value) {\n        var newState = cloneState(state);\n        newState.deleteMessagesForAllUsers = value;\n        return newState;\n    };\n\n    return {\n        buildInitialState: buildInitialState,\n        addMessages: addMessages,\n        updateMessages: updateMessages,\n        removeMessages: removeMessages,\n        removeMessagesById: removeMessagesById,\n        addMembers: addMembers,\n        removeMembers: removeMembers,\n        setLoadingMessages: setLoadingMessages,\n        setLoadingMembers: setLoadingMembers,\n        setId: setId,\n        setName: setName,\n        setSubname: setSubname,\n        setType: setType,\n        setIsFavourite: setIsFavourite,\n        setIsMuted: setIsMuted,\n        setCanDeleteMessagesForAllUsers: setCanDeleteMessagesForAllUsers,\n        setDeleteMessagesForAllUsers: setDeleteMessagesForAllUsers,\n        setTotalMemberCount: setTotalMemberCount,\n        setImageUrl: setImageUrl,\n        setLoadingConfirmAction: setLoadingConfirmAction,\n        setPendingDeleteConversation: setPendingDeleteConversation,\n        setMessagesSendPendingById: setMessagesSendPendingById,\n        setMessagesSendSuccessById: setMessagesSendSuccessById,\n        setMessagesSendFailById: setMessagesSendFailById,\n        setShowEmojiAutoComplete: setShowEmojiAutoComplete,\n        setShowEmojiPicker: setShowEmojiPicker,\n        addPendingBlockUsersById: addPendingBlockUsersById,\n        addPendingRemoveContactsById: addPendingRemoveContactsById,\n        addPendingUnblockUsersById: addPendingUnblockUsersById,\n        addPendingAddContactsById: addPendingAddContactsById,\n        addPendingDeleteMessagesById: addPendingDeleteMessagesById,\n        removePendingBlockUsersById: removePendingBlockUsersById,\n        removePendingRemoveContactsById: removePendingRemoveContactsById,\n        removePendingUnblockUsersById: removePendingUnblockUsersById,\n        removePendingAddContactsById: removePendingAddContactsById,\n        removePendingDeleteMessagesById: removePendingDeleteMessagesById,\n        addSelectedMessagesById: addSelectedMessagesById,\n        removeSelectedMessagesById: removeSelectedMessagesById,\n        markMessagesAsRead: markMessagesAsRead,\n        addContactRequests: addContactRequests,\n        removeContactRequests: removeContactRequests\n    };\n});\n"],"file":"message_drawer_view_conversation_state_manager.min.js"}