public MessageListBean(string account, ChatManager chatManager)
        {
            AccountOther    = account;
            MessageBeanList = new List <MessageBean>();
            var messageList = chatManager.GetAllOfflineMessages(account);

            messageList.ForEach(m =>
            {
                var bean = new MessageBean(account, m, false);
                MessageBeanList.Add(bean);
            });
        }
Exemplo n.º 2
0
        private void JoinPeer()
        {
            var message = rtmClient.CreateMessage();

            message.Text = $"{_userId} joined";
            MessageBean messageBean = new MessageBean(_userId, message, true);

            _messageBeanList.Add(messageBean);
            _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
            _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);

            SendPeerMessage(message);
        }
Exemplo n.º 3
0
        private void OnMessageReceived(RtmMessage message, RtmChannelMember fromMember)
        {
            var         account     = fromMember.UserId;
            MessageBean messageBean = new MessageBean(account, message, false)
            {
                Background = GetMessageColor(account)
            };

            RunOnUiThread(() =>
            {
                _messageBeanList.Add(messageBean);
                _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);
            });
        }
Exemplo n.º 4
0
        private void PeerJoin()
        {
            var joinText = $"{_userId} join";

            var messageBean = new MessageBean(_userId, joinText, true)
            {
                Background = GetMessageColor(_userId)
            };

            RunOnUiThread(() =>
            {
                _messageBeanList.Add(messageBean);
                _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);
            });
        }
Exemplo n.º 5
0
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            switch (requestCode)
            {
            case 0:
                if (data != null)
                {
                    var resultUri = data.Data;
                    var path      = GetPath(resultUri);

                    var resultCallback = new ResultCallback();
                    resultCallback.OnSuccessAction += (message) =>
                    {
                        RunOnUiThread(() =>
                        {
                            var rtmImageMessage = message as RtmImageMessage;
                            var messageBean     = new MessageBean(_userId, rtmImageMessage, true)
                            {
                                CacheFile = path
                            };
                            _messageBeanList.Add(messageBean);
                            _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                            _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);

                            if (_isPeerToPeerMode)
                            {
                                SendPeerMessage(rtmImageMessage);
                            }
                            else
                            {
                                SendChannelMessage(rtmImageMessage);
                            }
                        });
                    };
                    resultCallback.OnFailureAction += (err) =>
                    {
                        RunOnUiThread(() => ShowToast($"Uploaded image with error {err.ErrorDescription}"));
                    };
                    ImageUtil.UploadImage(this, rtmClient, path, resultCallback);
                }
                break;
            }
        }
Exemplo n.º 6
0
        public void OnClickSend(object sender, EventArgs e)
        {
            string msg = _msgEditText.Text;

            if (!msg.Equals(""))
            {
                MessageBean messageBean = new MessageBean(_userId, msg, true);
                _messageBeanList.Add(messageBean);
                _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);
                if (_isPeerToPeerMode)
                {
                    SendPeerMessage(msg);
                }
                else
                {
                    SendChannelMessage(msg);
                }
            }
            _msgEditText.Text = "";
        }
Exemplo n.º 7
0
        private void OnRtmMessageReceived(RtmMessage message, string peerId)
        {
            RunOnUiThread(() =>
            {
                if (_peerId.Equals(peerId))
                {
                    MessageBean messageBean = new MessageBean(peerId, message, false)
                    {
                        Background = GetMessageColor(peerId)
                    };

                    _messageBeanList.Add(messageBean);
                    _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                    _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);
                }
                else
                {
                    MessageUtil.AddMessageBean(peerId, message);
                }
            });
        }
Exemplo n.º 8
0
        private void SetupView(MyViewHolder holder, int position)
        {
            MessageBean bean = _messageBeanList[position];

            if (bean.BeSelf)
            {
                holder.TextViewSelfName.Text = bean.Account;
                holder.TextViewSelfMsg.Text  = bean.Message;
            }
            else
            {
                holder.TextViewOtherName.Text = bean.Account;
                holder.TextViewOtherMsg.Text  = bean.Message;
                if (bean.Background != 0)
                {
                    holder.TextViewOtherName.SetBackgroundResource(bean.Background);
                }
            }

            holder.LayoutRight.Visibility = bean.BeSelf ? ViewStates.Visible : ViewStates.Gone;
            holder.LayoutLeft.Visibility  = bean.BeSelf ? ViewStates.Gone : ViewStates.Visible;
        }
Exemplo n.º 9
0
        public void OnClickTextSend(object sender, EventArgs e)
        {
            string messageText = _msgEditText.Text;

            if (!string.IsNullOrEmpty(messageText))
            {
                var message = rtmClient.CreateMessage();
                message.Text = messageText;
                MessageBean messageBean = new MessageBean(_userId, message, true);
                _messageBeanList.Add(messageBean);
                _messageAdapter.NotifyItemRangeChanged(_messageBeanList.Count, 1);
                _recyclerView.ScrollToPosition(_messageBeanList.Count - 1);
                if (_isPeerToPeerMode)
                {
                    SendPeerMessage(message);
                }
                else
                {
                    SendChannelMessage(message);
                }
            }
            _msgEditText.Text = "";
        }
Exemplo n.º 10
0
        public static void AddMessageBean(string account, RtmMessage msg)
        {
            MessageBean messageBean = new MessageBean(account, msg, false);
            int         ret         = ExistMessageListBean(account);

            if (ret == -1)
            {
                // account not exist new messagelistbean
                messageBean.Background = ColorList[RandomGenerator.NextInt(ColorList.Count)];

                List <MessageBean> messageBeanList = new List <MessageBean>
                {
                    messageBean
                };

                _messageListBeanList.Add(new MessageListBean(account, messageBeanList));
            }
            else
            {
                // account exist get messagelistbean
                MessageListBean bean = _messageListBeanList[ret];

                List <MessageBean> messageBeanList = bean.MessageBeanList;
                if (messageBeanList.Count > 0)
                {
                    messageBean.Background = messageBeanList[0].Background;
                }
                else
                {
                    messageBean.Background = ColorList[RandomGenerator.NextInt(ColorList.Count)];
                }

                messageBeanList.Add(messageBean);
                bean.MessageBeanList = messageBeanList;
            }
        }