public ChatMessageViewModel(ChatMessageContentsModel chatMessageContents, UserViewModel user = null)
        {
            this.User = user;

            this.Message = string.Empty;
            this.SetMessageContents(chatMessageContents);
        }
        private void SetMessageContents(ChatMessageContentsModel chatMessageContents)
        {
            foreach (ChatMessageDataModel message in chatMessageContents.message)
            {
                this.MessageComponents.Add(message);
                switch (message.type)
                {
                case "emoticon":
                    // Special code here to process emoticons
                    ChannelSession.EnsureEmoticonForMessage(message);
                    this.Message += message.text;
                    break;

                case "link":
                    this.ContainsLink = true;
                    this.Message     += message.text;
                    break;

                case "image":
                    this.Images[message.text] = message.url;
                    break;

                case "text":
                case "tag":
                default:
                    this.Message += message.text;
                    break;
                }
            }
            this.Message = this.Message.Trim().Replace(Environment.NewLine, string.Empty).Replace("\n", string.Empty);
        }