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); }); }
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); }
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); }); }
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); }); }
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; } }
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 = ""; }
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); } }); }
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; }
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 = ""; }
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; } }